MOV [1234H], AX
表示将AX的值复制到内存中的1234十六进制地址。
所以,请纠正我,如果我说的是错误的,[]运算符作为指针,对吧?
这就是说,我无法理解以下说明:MOV [EBX], AX
为什么使用[]? EBX是处理器内部的通用寄存器,而不是存储器单元,因此没有指向它的指针,对吗?
P.S。我在masm32下编程。
由于
答案 0 :(得分:5)
寄存器EBX此处包含一个值,即一个地址。 MOV [EBX], AX
表示:取存储在寄存器AX中的值;将其写入存储在EBX中的地址。
答案 1 :(得分:4)
我相信你的问题案例EBX
拥有一个地址,而机器会存储。
答案 2 :(得分:4)
[]
的含义更多是“查看地址......”,因此[1234H]
表示查看地址0x1234,[EBX]
查看存储在{{1}中的地址}}。就像C / C ++中的EBX
运算符一样,如果您熟悉它。
答案 3 :(得分:2)
小心使用
等说明MOV [EBX], AX
由于AX是一个16位寄存器,除非EBX保存的地址未对齐,否则可能会导致严重的性能损失。
答案 4 :(得分:0)
括号表示间接水平 mov bx,ax表示将ax放入bx或直接寄存器,直接使用寄存器存储该值 mov [bx],ax表示寄存器间接,取值寄存器中的值并将其用作存储值的地址。 mov ax,1234h表示立即,将1234h放入AX mov [1234h],ax具有与上面[bx]相同的间接级别,括号中的东西包含存储结果的地址。
我的x86语法生锈了但是如果x86有这个并且你会看到类似的东西 mov [bx + cx],ax意味着添加bx和cx并将其用作将值存储在ax中的地址。