我目前正在学习装配8086.有些命令适用于ax,有些则不适用.例如:mov [ax],5不起作用.为什么这个以及bx寄存器优于ax寄存器的优点是什么?提前致谢.
bx超过的主要优点ax是它可以被称为指向数据段中地址的指针.
您无法使用ax有效地址:
MOV cx, [ax] ;doesn't work
MOV cx, [bx] ;works fine and loads cx with the value which is pointed by bx
Run Code Online (Sandbox Code Playgroud)
你可以称之为指针寄存器是:
bx,si,di,bp
而这些都是不能作为指针被称为的那些:
ax,cx,dx,sp
ax在数学运算中有一个优点,就像某些函数一样,例如mul隐式使用它.
mul cx将ax乘以cx并将结果存储在中dx:ax.在一个386或更高版本,可以使用例如imul bx, cx做bx *= cx.它是一个更长的OpCode,只产生乘法结果的低半部分(无论有符号还是无符号,这都是相同的,这就是为什么没有两个或三个操作数形式mul).
div并且idiv只有单操作数形式除以dx:ax源操作数,将结果存储在dx和ax中.
8086还需ax要比后来的CPU更多的东西,因为它没有movsx,所以你需要输入字节al来运行cbw.