关于MOV AX,BX机器码的疑问:教材解释是否存在问题?
8086 MOV AX,BX指令机器码的争议与正确解释
问题背景
我在学习计算机架构课程时使用James W. Coffron所著的《Programming the 8086/8088 First Edition》,该教材被亚马逊评论指出存在大量语法与技术错误。在学习MOV指令的机器码编码时,发现教材内容存在矛盾:
- 教材定义指令编码中的D位:
D=1表示数据存入REG字段指定的寄存器,D=0表示存入MOD和R/M字段指定的操作数 - 教材在MOV AX,BX的示例中称,由于要将数据存入AX寄存器,故D位应为0,得出机器码为
89D8 - 但通过emu8086验证,MOV AX,BX的实际机器码是
8BC3,其D位为1
最终结论
结合分析与讨论,我和教材的结论均正确,但教材的示例解释存在不足。正确的表述应为:
将数据存入AX寄存器有两种合法方式:
- 设置
D=0,直接在REG字段指定AX - 设置
D=1且MOD=11,在R/M字段指定AX对应的编码
内容的提问来源于stack exchange,提问作者retpoline
相关产品推荐
相关产品推荐

