【发布时间】:2015-10-21 20:45:18
【问题描述】:
汇编指令MOVSX 在以下示例中如何工作:
MOVSX ECX,BYTE PTR DS:[EDX]
在这种情况下,这里是寄存器的状态:
ECX = 0000000F
EDX = 0012FD9F
根据我的想法,它需要 [EDX] = 9F 的最后一个字节,将其移动到 ECX,然后对其进行符号扩展以匹配 16 位 = 0000009F。但是,实际结果是 00000016。有人可以帮忙解释我哪里错了吗?
【问题讨论】:
-
旧问题和答案在下面有所帮助,但对于现在阅读本文的人来说,您的符号扩展名在这里并不完全正确(如果这是要使用的正确字节)。
0x9F = 1001 1111因此,您的符号扩展位应该是位“1”而不是位“0”。