这是汇编作业的一道题,询问了new bing,整理记录一下我的疑问和它的回答,方便以后查阅,也希望能帮到其他人。
MOV AX,WORD_OP1[DX] 这个指令合法吗?
不,这个指令不合法。在8086/8088微处理器中,只有BX、BP、SI和DI寄存器可以用于间接寻址。DX寄存器不能用于间接寻址。
为什么只有BX、BP、SI和DI寄存器可以用于间接寻址?
在8086/8088微处理器中,只有BX、BP、SI和DI寄存器可以用于间接寻址,这是由于这些寄存器的设计目的和硬件实现决定的。这些寄存器被称为地址寄存器,它们被设计用来存储地址信息,以便在间接寻址时使用。其他寄存器,如AX、CX、DX等,被设计用来存储数据,而不是地址信息。
什么是间接寻址?
间接寻址是一种寻址方式,它不是直接给出内存单元的地址,而是通过某个特定的内存单元得出。第一次是得到某个特定内存单元里的地址数据,第二次再将得出的地址进行运算直接寻址
你能给我一些间接寻址的指令样例吗?
当然可以。下面是一些间接寻址的指令样例:
MOV AX, [BX]
:将BX寄存器中的值作为地址,将该地址处的数据移动到AX寄存器中。MOV AL, [BP+SI]
:将BP和SI寄存器中的值相加,将结果作为地址,将该地址处的数据移动到AL寄存器中。MOV AX, [DI+8]
:将DI寄存器中的值加上8,将结果作为地址,将该地址处的数据移动到AX寄存器中。这些指令都使用了间接寻址,它们通过计算来确定操作数的地址。