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 寄存器、标志位

http://example.com/index/8783/

作者

WZJ

发布于

2021-08-27

许可协议

评论