1

我的EAX寄存器包含该xxxxxx9D值,并且我有以下汇编代码:

C0C8 14 --> ROR AL,14

对我来说,这意味着EAX32 位值的最后 8 位按位旋转 14 mod 8 = 6 个位置

0x9D = b1001 1101

将转化为

b0111 0110 = 0x76

但是,OllyDbg 告诉我EAX = xxxxxxD9,这意味着 EAX 已按位旋转了 4 位!

我哪里错了?

4

2 回答 2

5

您正在尝试将 8 位寄存器旋转 20 个位置。这有点多,旋转 8 会产生相同的值。旋转 9 与旋转 1 相同。等等。因此,处理器将旋转 20 mod 8 = 4 个位置。

于 2012-04-06T19:31:42.267 回答
1

发布您的完整代码,其中:

mov     al,$9d
ror     al,14

正如预期的那样,我得到了 76。

编辑如果您轮换 14 美元的位置,您将获得 d9。

于 2012-04-06T19:31:32.780 回答