1

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

话虽如此,我无法理解以下说明:MOV [EBX], AX为什么使用 [ ]?EBX 是处理器内部的通用寄存器,不是内存单元,所以没有指向它的指针,对吧?

PS我在masm32下编程。

谢谢

4

5 回答 5

5

此处的寄存器 EBX 保存一个值,即地址。MOV [EBX], AX表示:取寄存器 AX 中存储的值;将其写入存储在 EBX 中的地址。

于 2009-11-15T18:09:24.697 回答
4

我相信您的问题案例中EBX有一个地址,并且机器进行了存储。

于 2009-11-15T18:03:43.727 回答
4

的意思[]更多的是“看地址...”,所以[1234H]意思是看地址0x1234,[EBX]看存储的地址EBX。就像*C/C++ 中的运算符一样,如果你熟悉的话。

于 2009-11-15T18:07:02.243 回答
2

小心指令,如

MOV [EBX], AX

由于 AX 是一个 16 位寄存器,除非 EBX 持有的地址未对齐,否则它可能会导致显着的性能损失。

于 2009-11-15T18:19:16.060 回答
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 中的地址。

于 2009-11-16T02:47:27.653 回答