8个通用寄存器,4个段寄存器,1个指令寄存器,1个标志寄存器
8个通用寄存器
8个通用寄存器都可以用来暂存参加运算的数据或中间结果,但又有各自的专门用途。
例如:
AX:用于做累加器,存放操作数和运算结果。
BX:基址寄存器
CX:计数寄存器
DX:数据寄存器
BP:常用于指向当前栈的最底部
SP:用于指向当前栈的最顶部
SI:源变址寄存器,常用于存放源操作数的偏移地址
DI:目的变址寄存器,常用于存放目的操作数的偏移地址
SI和DI寄存器常用来做间接寻址。
指令寄存器
IP:存放程序当前指令在代码段的偏移位置
4个段寄存器
代码段寄存器CS :存放程序代码段起始地址的高16位
CS为代码段寄存器,IP为指令指针寄存器。绑定CS:IP使用
CPU将CS:IP指向的地址为下次将要执行的指令执行。
使用jmp 段地址:偏移地址 可以修改CS:IP的内容。
数据段寄存器DS:存放数据段起始地址的高16位
堆栈段寄存器SS:存放堆栈段起始地址的高16位
扩展段寄存器ES:存放扩展数据段起始地址的高16位
标志寄存器
- CF进位标志
CF=1,指令执行结果在最高位上产生一个进位或借位;CF=0,则无进位或借位产生
- PF奇偶标志
PF=1,结果低8位含偶数个1;PF=0,表示结果低8位含奇数个1
- AF辅助进位标志
AF=1,运算结果的低4位产生了一个进位或借位;AF=0,则无此进位或借位
- ZF零标志
标志寄存器的第六位是ZF,零标志位。
它记录相关指令执行后,其结果是否为0,如果结果为0,那么ZF=1;如果不为0,那么ZF=0;
- SF符号标志
SF=1,运算结果为负数;SF=0,则结果为正数
- OF溢出标志
OF=1,带符号数在进行运算时产生了溢出;OF=0,则无溢出
- TF陷阱标志
TF=1,8086CPU处于单步工作方式;TF=0,8086CPU正常执行程序
- IF中断允许标志
IF=1,允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求信号;IF=0,则禁止接受可屏蔽中断请求
- DF方向标志
DF=1,字符串操作指令按递减的顺序对字符串进行处理;DF=0,字符串操作指令按递增的顺序进行处理