此问题在此处已有答案:
How do AX, AH, AL map onto EAX?(7个答案)
6天前关闭
我有以下代码片段:
mov $0, %eax
mov $0x2023, %ax
mov $1, %ah
字符串
执行mov $0x2023, %ax
时会发生什么?
我期望%eax=0x20231,但它是0x123。我使用了调试器,看到%ax是0x2023,但%ah变成了20,%al变成了23。为什么会发生这种情况?下面是我认为代码将如何运行。
mov $0, %eax # eax = (AX)0000000000000000 (AH)00000000 (AL)00000000
mov $0x2023, %ax # eax = (AX)0010 0000 0010 0011 (AH)00000000 (AL)00000000
mov $1, %ah # eax = (AX)0010 0000 0010 0011 (AH)00000001 (AL)00000000
型
1条答案
按热度按时间apeeds0o1#
EAX不是由AX、AH和AL组成的!
参见How do AX, AH, AL map onto EAX?
字符串
没有给从位16到位31的部分命名。
我通常称之为斧头。