内部寄存器的类型

含有 14个 16位 寄存器,按照功能可分为三类

8个通用寄存器 (除了特殊作用,均可以用作 暂存中间结果)
数据寄存器(AX, BX, CX, DX)
  • AX : 累加器
  • 所有 I/O 指令都通过 AX 与接口传送信息,中间运算结果也多放于 AX 中
  • BX :基址寄存器
  • 间接寻址中存放 基地址
  • CX : 计数寄存器
  • 用于在循环或串操作指令中存放计数值
  • DX : 数据寄存器
  • 在间接寻址的 I/O 指令中存放 I/O 端口地址 ; 在 32位 乘除法运算时,存放高 16位 数
地址指针寄存器 (SP,BP)
  • SP : 堆栈指针寄存器,其内容为栈顶的偏移地址
  • BP : 基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址
  • : 在有堆栈操作的时候 SP 一定被专用, BP 不一定被专用 BP可能作为中间运算结果的存储位置
  • BPBX 的区别
  • 作为通用寄存器,二者均可用于存放数据
  • 作为基址寄存器,用 BX 表示所寻找的数据在 \(\color {red}{数据段}\) ; 用 BP 则表示数据在 \(\color {red}{堆栈段}\)
变址寄存器 (SI, DI)
  • SI :源变址寄存器
  • DI :目标变址寄存器
  • 变址寄存器在指令中常用于存放数据在内存中的地址
  • 除了 AX、CX 之外剩余 6个 寄存器都有可能存放地址,但是如果 拆开之后 如: \(AH,AL,BH,BL ……\)
2个控制寄存器
  • IP : 指令指针寄存器,其内容为下一条要取的指令的偏移地址

bios dl汇编 汇编 bp_寄存器

  • FLAGS :标志寄存器,存放运算结果的特征,是一个 16位 寄存器,但是只有 9位 是有意义的,其他 7位是空闲位
  • 6个 状态标志位 (CF SF AF PF OF ZF)
  • CF (Carry Flag) :进位标志位。 加(减)法运算时,若最高位有进(借)位 则 CF = 1 两个无符号数结果有溢出
  • OF (Overflow Flag) : 溢出标志位。当运算结果超出了有符号数的可表达范围时, OF = 1 两个有符号数结果有溢出
  • ZF (Zero Flag) :零标志位。 当运算结果为零时 ZF = 1
  • SF (Sign Flag) :符号标志位。 当运算结果最高位为1时 SF = 1
  • PF (Parity Flag) :奇偶标志位。 当运算结果低八位中 \(1\) 的个数为偶数时 PF = 1
  • AF (AuxiliaryCarry Flag) :辅助进位标志位。 在加(减)操作中,若 Bit3 向 Bit3 有进位(借位),AF = 1

例子:给出以下运算结果以及运算后各状态标志位的的状态

10110110 + 11110100

10110110

\(+\)

1 10101010
CF = 1 有进位 OF = 0 最高位和次高位进位状态相同
AF = 0 若 Bit3 向 Bit3 没有进位 PF = 1 运算结果偶数个 1
SF = 1 运算结果最高位为 1 ZF = 0 运算结果不为 0

  • 3个 控制标志位(IF TF DF)
  • TF:(Trap Flag) 陷阱标志位,也叫跟踪标志位。TF = 1 时,使 CPU 处于单步执行指令的工作方式。
  • IF 😦InterruptEnalbe Flag ) 中断允许标志位。 IF = 1 使 CPU 可以相应屏蔽中断请求
  • DF(Direction Flag) 方向标志位。在数据串操作时确定操作的方向
4个段寄存器
  • 作用 : 用于存放相应逻辑段的段基地址
  • 8086/8088 内存中逻辑段的类型
  • 代码段 : 存放指令代码
  • 数据段 : 存放操作的数据
  • 附加段 : 存放操作的数据
  • 堆栈段 : 存放暂时不用但需要保存的数据
  • CS : 代码段寄存器,存放代码段的段基地址
  • DS: 数据段寄存器,存放数据段的段基地址
  • ES : 附加段寄存器,存放数据段的段基地址
  • SS : 堆栈段寄存器,存放堆栈段的段基地址