【发布时间】:2015-11-17 19:12:53
【问题描述】:
Movsx 用1 对寄存器进行符号扩展,对吗?
那么为什么在 Ollydbg 我得到了这个:
- 之前:
- 之后:
我应该在ECX 中使用FFFFFF65 而不是00000065 不?
谢谢!
【问题讨论】:
-
它扩展了符号位,这是最重要的位。负数只有 1。
-
src 内存操作数
byte ptr ds:[429d5d]告诉汇编器您打算从ds:[429d5d]加载一个字节。由于MOVSX符号扩展了 src 操作数,它将查看字节的那个高位并通过高位复制它(符号扩展它)。 0x65 MSB(最高有效位)为 0,因此它是符号扩展 0。值 0x80 到 0xFF 将被符号扩展为 1 到高位,因为该范围内的 MSB 为 1。如果你一直在处理 WORD PTR 那么符号扩展将基于 16 位字的 MSB
标签: assembly x86 ollydbg sign-extension