汇编内存操作数说明

2024-04-02

我理解,例如 [BX] 位于括号之间时,它指的是其内存内容。但同时我也不明白这一点。

CMP [BX], 12ADH

在那个例子中我不明白真正比较的是什么。

MOV EBX, [BX]

对于此移动也是如此,我不知道正在移动的内容及其内存地址或其中的值。


CMP [BX], 12ADH

这实际上是一条无效指令,因为您没有指定第一个操作数的大小。假设您打算进行 WORD(16 位)比较,例如:

CMP WORD [BX], 12ADH

这将首先从内存中 BX 寄存器指定的地址处获取 16 位 WORD。然后,它将将该值与立即值进行比较12ADh.

注意CMP做同样的事情SUB,但没有实际修改任何值。它只是“假装”进行减法,并设置FLAGS因此。


MOV EBX, [BX]

这将从内存中 BX 寄存器指定的地址处获取 32 位 DWORD。然后,它将将该值存储在 EBX 寄存器中。


在这样的表达中WORD [BX],我们可以说 BX“指向”内存中的一个 16 位 WORD:

         Memory             Register File
           ...
        _________             ________
 100h  |  1234h  |     /---- |  102h  | BX
       |_________|     |     |________|
 102h  |  5678h  | <---/        ...
       |_________|
 104h  |  9ABCh  |
       |_________|
 106h  |  DEF0h  |
       |_________|
           ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

汇编内存操作数说明 的相关文章

随机推荐