x86 asm将16bit值转换为8bit?

时间:2012-06-29 21:10:17

标签: assembly x86

一些背景信息: 我正在学习intel x86程序集的同时在保护模式下编写一个bootloader。最终结果将是“BootLoader ASCII蛇”游戏。

我想要做的是将堆栈中的值弹出到AL寄存器中。这给了我一个错误,因此我假设我必须将值弹出到16位寄存器中。这让我需要将16位寄存器中的前8位复制到8位寄存器?

这是我正在使用的指令参考: http://www.mathemainzel.info/files/x86asmref.html

从参考链接我看到例如将字节转换为字的指令。所有转换指令似乎都从较低的寄存器变为较大的寄存器。

1 个答案:

答案 0 :(得分:6)

实际上AX寄存器代表AHAL寄存器,因此AL代表0-7位和AH位8-15。如果你把ie。 0xef80到AX然后AH将是0xef而AL将是0x80。