了解这些操作的最佳方法是逐步了解它们。我会尽力解释这个过程。在每一步中,我都将包含两个寄存器的状态,以便您继续跟进。为了保持 EAX 的较高值,我们必须先将其内容移动到另一个寄存器中进行操作。
开始:
EAX: 0011 1100 1001 1111 1011 1100 1001 1111
mov ebx, eax ;将 eax 的内容复制到 ebx 中
EAX: 0011 1100 1001 1111 1011 1100 1001 1111
EBX:0011 1100 1001 1111 1011 1100 1001 1111
shl ebx, 24 ;这清除了我们不关心的 ebx 位
shr ebx, 24 ;回到初始位置
EAX: 0011 1100 1001 1111 1011 1100 1001 1111
EBX:0000 0000 0000 0000 0000 0000 1100 1001
shl ebx, 4 ;左移 4 位。 bx 是我们下一步想要的地方。
EAX: 0011 1100 1001 1111 1011 1100 1001 1111
EBX:0000 0000 0000 0000 0000 1100 1001 0000
添加 bl, 0Fh ;将 0xF 添加到 bl。或者,在二进制中,1111. 最低有效半字节集。
EAX: 0011 1100 1001 1111 1011 1100 1001 1111
EBX:0000 0000 0000 0000 0000 1100 1001 1111
异或斧头,斧头;清除 ax 的内容,为 bx 中的内容腾出空间
EAX: 0011 1100 1001 1111 0000 0000 0000 0000
EBX:0000 0000 0000 0000 0000 1100 1001 1111
添加 ax, bx ;将 bx 的结果合并回 eax 中得到最终结果
EAX : 0011 1100 1001 1111 0000 1100 1001 1111
你有它!现在您已经熟悉了班次操作,我将把最后一部分留给您。
干杯!