mov 指令的一个小问题
发布网友
发布时间:2022-05-26 10:46
我来回答
共1个回答
热心网友
时间:2023-10-13 14:35
mov [1234],1234 这么写当然有问题,mov操作不支持这种寻址格式1234当然可以作为立即数使用,没问题,但是寻址方式不对。 mov寻址,必须借助寄存器。寻址方式如下:由逻辑地址得到其物理地址(PA—Physical Address)的计算方法如下:
物理地址PA=段地址×16 + 偏移量
1.立即寻址方式 MOV AH, 80H
操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。
2.寄存器寻址方式
指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。
A.源操作数是寄存器寻址方式 MOV VARB, BH
B.目的操作数是寄存器寻址方式 MOV EBX, 12345678H
C.源和目的操作数都是寄存器寻址方式 MOV EAX, EBX
3.直接寻址方式 MOV AX, [1234H]
指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。
4.寄存器间接寻址方式
操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。
MOV BX,[DI]
5.寄存器相对寻址方式
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令中的8位/16位偏移量之和。
MOV BX, [SI+100H]
6.基址加变址寻址方式
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。
MOV BX, [BX+SI]
7.相对基址加变址寻址方式
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。
MOV AX, [BX+SI+200H]