我的EAX
寄存器包含xxxxxx9D
值,我有以下汇编代码:
C0C8 14 --> ROR AL,14
对我而言,这意味着EAX
的32位值的最后8位按位旋转14 mod 8 = 6位
0x9D = b1001 1101
将转变为
b0111 0110 = 0x76
然而,OllyDbg告诉我EAX = xxxxxxD9
,这意味着EAX按位旋转了4位!
我哪里错了?
答案 0 :(得分:4)
您正在尝试将8位寄存器旋转20个位置。这有点多,旋转8会产生相同的值。旋转9与旋转1相同.Etcetera。因此处理器将旋转20 mod 8 = 4个位置。
答案 1 :(得分:1)
发布您的完整代码:
mov al,$9d
ror al,14
我按预期得到76分。
编辑如果您旋转$ 14个位置,您将获得d9。