管饭 发表于 2014-9-12 17:35:05

汇编语言 CS与IP

在讲CS与IP寄存器的时候,动画显示mov AX,0123H占用三字节 而 mov AX,BX占用两字节是怎么回事?
(找了一下没找到,或是看不懂,谁可以帮我一下!感激不尽)

漩涡鸣人 发表于 2014-9-12 17:35:06

本帖最后由 漩涡鸣人 于 2014-9-12 18:20 编辑

从8086指令编码而言,
intel编码中mov AX,0123H的二进制码:
B8 2301
操作数有一个2字节立即数,B8长度一个字节指明操作模式是(mov ax, 立即数)
所以就三字节了
mov ax,bx这种除了指明操作模式的1字节外,直接用另一个字节表明是这两个寄存器,
所以是二字节

说实话立即数比较占地方,指明一个通用寄存器只需要3个二进制位,而立即数最短也要8位
初学汇编不用看得太细,机器码的长度影响不到一般的汇编编程

管饭 发表于 2014-9-12 21:50:58

漩涡鸣人 发表于 2014-9-12 18:12
从8086指令编码而言,
intel编码中mov AX,0123H的二进制码:
B8 2301


谢谢你的回答,基本明白了。

jqryc 发表于 2014-9-16 20:06:37

我也开始学了2014-9-16日开始 学
页: [1]
查看完整版本: 汇编语言 CS与IP