微机原理----8088内部寄存器
内部寄存器的类型
14个16位寄存器,按功能分成3类
- 8个通用寄存器
- 4个段寄存器
- 2个控制寄存器
8个通用寄存器
- 数据寄存器:AX BX CX DX
- 地址指针寄存器:SP,BP
- 变址寄存器:SI,DI
数据寄存器
8088含有4个16位数据寄存器,他们又可以分为8个8位寄存器
- AX可以分为AH(高8位)和AL(低8位)
- BX可以分为BH(高8位)和BL(低8位)
- CX可以分为CH(高8位)和CL(低8位)
- DX可以分为DH(高8位)和DL(低8位)
作用:暂存中间运算结果
AX:累加器
- 所有IO指令都通过AX与接口传递信息,中间运算结果也多放在AX中
BX:基址寄存器
- 在间接寻址中用于存放基地址
CX:计数寄存器
- 用于在循环或者串操作指令中存放计数值
DX:数据寄存器
- 在间接寻址的IO指令中存放IO端口的地址:在32位除法中,存放高16位数
地址指针寄存器
SP:堆栈指针寄存器
- 其内容为栈顶的偏移地址
BP:基址指针寄存器
- 常用于访问内存时存放内存单元的偏移地址
- 和BX的区别:BX表示所寻找的数据在数据段,BP寻找的数据在堆栈段
变址寄存器
- SI:源变址寄存器
- DI:目标变址寄存器
- 变址寄存器的指令常用于存放数据在内存中的地址
控制寄存器
- IP:指针寄存器,其内容为下一条要取的指令的偏移地址
- FLAGS:标志寄存器,存放运算结果的特征:6个状态标志位:CF,SF,PF,ZF,OF;3个控制标志位:(IF,TF,DF)
状态标志位
CF(carry flag):进位标志位
- 加减运算时,若最高位有进位(借位),则CF=1;
OF(overflow flag):溢出标志位
- 当算数运算的结果超出有符号数的表示范围,则OF=1
ZF(zero flag):零标志位
- 运算结果为0时,ZF=1;
SF(sign flag):符号标志位
- 当运算结果的最高位为1时,SF=1;
PF(parity flag):奇偶标志位
- 运算结果的低8位中“1”的个数为偶数时,PF=1;为奇数时,PF=0;
AF(auxiliary carry flag):辅助标志位
- 在加减操作中,第3位向第4位有进位(借位)时,AF=1;(最右边为第零位)
如: 10110110 + 11110100 10110110+11110100 10110110+11110100的运算结果和各标志位的状态
结果: 10110110 + 11110100 = 10101010 10110110+11110100=10101010 10110110+11110100=10101010
标志位 | 值 |
---|---|
CF | 1 |
OF | 0 |
ZF | 0 |
SF | 1 |
PF | 1 |
AF | 0 |
控制标志位
TF(trap flag):陷阱标志位,也叫跟踪标志位
- TF=1:CUP处于单步执行命令的工作方式
IF(interrupt enable flag):中断允许标志位
- IF=1:CPU可以响应可屏蔽中断的请求
DF(direction flag):方向标志位
- 在数据串操作时确定操作方向
段寄存器
作用:用于存放相应逻辑段的段基地址
段的类型
-
代码段(CS):存放指令代码
-
数据段(Ds):存放操作的数据
-
附加段(ES):存放操作的数据
g):方向标志位 -
在数据串操作时确定操作方向
段寄存器
作用:用于存放相应逻辑段的段基地址
段的类型
- 代码段(CS):存放指令代码
- 数据段(Ds):存放操作的数据
- 附加段(ES):存放操作的数据
- 堆栈段(SS):存放暂时不用但是需要保存的数据