Регистр косвенной адресации

#assembly #masm #x86-16

#сборка #masm #x86-16

Вопрос:

Я хотел бы знать, есть ли разница между:

 MOV [BX]   20, AX
  

и

 MOV [BX   20], AX
  

Я рассуждаю так, что для 1-го случая мы перемещаем значение AX 20 в адрес BX

И для 2-го случая мы перемещаем значение AX в адрес BX 20

Спасибо.

Ответ №1:

Некоторые компиляторы на ассемблере допускают обе комбинации. Однако отладчик должен дать вам правильный ответ!

 Test.asm.5: MOV [BX]   20, AX
004552B4 894314           mov [bx $14],ax
Test.asm.6: MOV [BX   20], AX
004552B7 894314           mov [bx $14],ax
  

Ответ №2:

Ваши рассуждения в первом случае неверны. Это недопустимая конструкция (если только у вас не определен макрос для преобразования его в 2 инструкции). Вы не можете вставить добавленное значение в середине перемещения. Вы можете использовать только непосредственное смещение к адресу (второй случай).