MOV [EBX],AX - 指向寄存器的指针?

时间:2009-11-15 18:02:00

标签: assembly masm masm32

MOV [1234H], AX表示将AX的值复制到内存中的1234十六进制地址。 所以,请纠正我,如果我说的是错误的,[]运算符作为指针,对吧?

这就是说,我无法理解以下说明:MOV [EBX], AX为什么使用[]? EBX是处理器内部的通用寄存器,而不是存储器单元,因此没有指向它的指针,对吗?

P.S。我在masm32下编程。

由于

5 个答案:

答案 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中的地址。