помогите разобраться с фрагментом кода на ASSEMBLER
1. почему, допустим, нельзя вместо *mov bx, offset a * записать *mov bx, a* ?
2. для чего используется offset вот тут: *mov bx, offset a * ?
3. почему тут *mov ah, ds:[bx] * используется *ds:[bx]*, ведь это вроде неявно выполняется?
4. изначально, у меня операнды 'a' и 'b' были размером в 1 байт (т. е. DB), а тут они записываются в bx, который имеет емкость 2 байта (фрагмент *mov bx, offset a
5. после этого фрагмента (*mov bx, offset i*), значение 'a' - затирается?
6. в этом фрагменте, по моему мнению, вообще чепуха: *mov al, ds:[bx] ;иначе a <= b, вычисляем i1 al=i*, ведь bx, у нас уже было затерто (* mov bx, dx*) не так ли?