我理解,例如 [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(使用前将#替换为@)