由于学习使用的是王爽的《汇编语言(第3版)》,所以也只能提到8086CPO的寄存器。对于其余而言,原理都是相通的。学习
对于8086寄存器,有14个寄存器,主要是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。spa
1、通用寄存器code
8086的通用寄存器有AX、BX、CX、DX4个,16位,可存放两个字节,可分为高8位和低8位,这里主要是考虑兼容性问题,8086一次能够处理1字节或是1字的数据。例如:blog
这里须要注意的是,对于AH和BH是两个彻底不相干的东西,例如:class
mov al,93H add al,C5H
经过计算的到的结果应该是158H,可是这已经超过了AL所能存储的最大值了,但1并无进入到AH中去,而是“丢失了”。至于缘由本身尚未找到,还在学习中,等找到答案我会回来进行修改。但这足以说明AL和AH是两个不一样的东西。兼容性
2、几条汇编指令原理
(1)数据传送指令mov程序
格式:mov oprd1,oprd2im
功能:本指令将一个源操做数送到目的寄存器中,即oprd1<—oprd2。d3
说明:
<1>oprd1 为目的操做数,能够是寄存器、存储器、累加器。 oprd2为源操做数,能够是寄存器、存储器、累加器和当即数。
<2>mov 指令有四种可能的操做:
<2>opr1和opr2均为寄存器是容许的,一个为寄存器而另外一个为存储器也是容许的,但不容许两个都是存储器操做数。理由是指令代码的寻址方式中规定了两个操做数(除当即 数)至少有一个是寄存器操做数。
<3>加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响。以上标志也称为结果标志。加法指令适用于无符号数或有符号数的加法运算。操做数能够是8位,也能够是16位。