一、8086寄存器
8086寄存器有14个寄存器分为以下几类:通用寄存器、段寄存器、指令寄存器、标志寄存器等。
(一)通用寄存器
ax:累加寄存器
bx:基地址寄存器
cx:计数器
dx:数据存储的寄存器
sp:堆栈指针,可以指向堆栈位置和ss配合使用
bp:基址指针寄存器
si:源变址寄存器可用来存放相对于DS段之源变址指针;
di:目的变址寄存器,可用来存放相对于 ES 段之目的变址指针
(二)段寄存器
cs:段寄存器
ds:数据段寄存器
es:附加段寄存器
ss:堆栈段寄存器
(三)指令寄存器
ip:指令寄存器
(四)标志寄存器
8086有一个18位的标志寄存器FR,在FR中有意义的有9位,其中6位是状态位,3位是控制位。
OF: 溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。
如果结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,
否则,OF的值被清为0。
DF:方向标志DF位用来决定在串操作指令执行时有关指针寄存器发生调整的方向。
IF:中断允许标志IF位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:
(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;
(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。
TF:跟踪标志TF。该标志可用于程序调试。TF标志没有专门的指令来设置或清楚。
(1)如果TF=1,则CPU处于单步执行指令的工作方式,此时每执行完一条指令,就显示CPU内各个寄存器的当前值及CPU将要执行的下一条指令。
(2)如果TF=0,则处于连续工作模式。
SF:符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法。
所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,
否则其值为1。
ZF: 零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,
否则其值为0
在判断运算结果是否为0时,可使用此标志位。
AF:下列情况下,辅助进位标志AF的值被置为1,否则其值为0:
(1)、在字操作时,发生低字节向高字节进位或借位时;
(2)、在字节操作时,发生低4位向高4位进位或借位时。
PF:奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。
如果“1”的个数为偶数,则PF的值为1,
否则其值为0。
CF:进位标志CF主要用来反映运算是否产生进位或借位。
如果运算结果的最高位产生了一个进位或借位,那么,其值为1,
否则其值为0
二、数据访问的时候常用的组合
ip默认的段地址是cs
sp, bp默认的段地址是ss
bx,si,di默认的段地址是ds
只有 4 个寄存器可以以 […] 的方式使用,这四个寄存器分别是 BX,SI,DI,BP。
这4个寄存器可以单个出现,或只能以4种组合出现:bx和si,bx和di,bp和si,bp和di
另一方面可以指定段写的例如DS:[bp];