My EAX register contains the xxxxxx9D value and I have the following assembly code:
C0C8 14 --> ROR AL,14
To me, it means that the last 8 bits of the EAX‘s 32 bits value are rotated bitwise by 14 mod 8 = 6 positions
0x9D = b1001 1101
will be transformed into
b0111 0110 = 0x76
However, OllyDbg tells me that EAX = xxxxxxD9, which means EAX has been rotated bitwise by 4 bits!
Where am I wrong?
You are trying to rotate an 8-bit register by 20 positions. That’s a bit much, rotating by 8 produces the same value. Rotating by 9 is the same as rotating by 1. Etcetera. The processor will thus rotate by 20 mod 8 = 4 positions.