【发布时间】:2017-08-11 17:02:37
【问题描述】:
假设我们将数字 1 保存在 EAX-Register 中,并将最高有效字节与最低有效字节交换。新交换的号码是 256 还是 16777216?
我在汇编程序中尝试了将 AL- 的值与 AH-Register 的值交换。我的结果是 256。我认为这是不正确的,我也不理解 256 的结果。我认为 EAX-Register 是 32 位的,而不是 16 位的。
问题与交换的正确结果有关。
【问题讨论】:
-
EAX 是 32 位,AX 是 EAX 的低 16 位,AL 和 AH 是 AX 的低字节和高字节。无法直接访问 EAX 的前 16 位。见,相关:Get the upper half of the EAX register
-
如果我可以通过 AX 寄存器获得低 16 位,我如何获得 EAX 寄存器的高位?
-
见上......
-
交换最低和最高有效字节时
0x00000001的值自然是0x01000000。如果您在将其解释为整数时询问该值的十进制表示形式,那么,是的,该值为 16777216。
标签: assembly x86 byte cpu-registers