8086 8088 寄存器、标志位
内部寄存器的类型
含14个16位寄存器,按功能可分为三类:
- 8个通用寄存器
- 4个段寄存器
- 2个控制寄存器
不管是哪一个,8位寄存器中存放的均为运算的数据。
通用寄存器
- 数据寄存器(AX BX CX DX)
- 地址指针寄存器(SP BP)
- 变址寄存器(SI DI)
8088/8086含有4个16位数据寄存器,4个数据寄存器分别可分为2个独立的8位寄存器 ,一共可分为8个8位寄存器,即:
AX —— AH, AL
BX —— BH, BL
CX —— CH, CL
DX —— DH, DL
全部通用寄存器中,只有AX和CX中的内容一定为参加运算的数据,,其余通用寄春器中的内容可能是数据,也可能是存放数据的地址。
数据寄存器特有的习惯用法:
- AX:累加器 所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中
- BX:基址寄存器 在间接寻址中用于存放基址
- CX:计数寄存器 用于在循环或串操作指令中存放计数值
- DX:数据寄存器 在间接寻址的I/O指令中存放I/O端口地址,在32位乘法运算时,存放高16位数
地址指针寄存器
SP:堆栈指针寄存器,其内容为栈顶的偏移地址。
BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。
在有堆栈操作的时候,SP肯定被专用,但BP不一定。在没有堆栈的指令程序操作中,SP也可以被用作通用寄存器。
BX与BP在应用上的区别:
共同点都是可以用来存放某个单元的地址
作为基址寄存器,用BX表示所寻找的数据在数据段,用BP则表示在堆栈段
变址寄存器
SI:源变址寄存器
DI:目标变址寄存器
变址寄存器在指令中常用于存放数据在内存中的地址
控制寄存器
IP:指令指针寄存器,其内容为下一条要取的指令的偏移地址。
FLAGS:标志寄存器,存放运算结果的特征
整体来讲是一个16位寄存器,但只有9位是有意义的,其他7位都是空闲位;这9位又分为两种类型
- 6个状态标志位(CF SF AF PF OF ZF)表示运算结果的特征
- 3个控制标志位(IF TF DF)表示处理器当前的工作状态
状态标志位
CF:进位标志位 加(减)法运算时,若最高位有进(借)位,则CF=1
OF:溢出标志位 当算术运算的结果超出了有符号数的可表达范围时,OF=1
ZF:零标志位 当运算结果为零时ZF=1
SF:符号标志位 当运算结果的最高位为1时,SF=1 (对于16位数,它的第15位是1,SF=1,对于8位数,第7位是1,SF=1)
*下面两个状态标志位只针对8位有效
PF:奇偶标志位 运算结果的低8位中”1”的个数为偶数时PF=1
AF:辅助进位标志位 加(减)操作中,若Bit3(第三位)向Bit4(第四位)有进位(借位),AF=1
控制标志位
TF:陷阱标志位,也叫跟踪标志位 TF=1时,使CPU处于单步执行指令的工作方式
IF:中断允许标志位 IF=1使CPU可以响应可屏蔽中断请求
DF:方向标志位 在数据串操作时确定操作的方向
段寄存器
段寄存器中的内容为相应逻辑段的段基地址:
CS:代码段寄存器 存放代码段的段基地址
DS:数据段寄存器 存放数据段的段基地址
ES:附加段寄存器
SS:堆栈段寄存器
段寄存器的值表明相应逻辑段在内存中的位置
IP和CS决定了下一条要取的指令在内存中的位置
8086 8088 寄存器、标志位