详细概括:8086/8088CPU内部寄存器

8086CPU内部寄存器结构图

8086/8088CPU内部有14个16位寄存器,按功能可分为三类:通用寄存器(8个)、段寄存器(4个1)和控制寄存器(2个)。8086/8088CPU内部寄存器结构如下图所示:
在这里插入图片描述
现在,我们对每个寄存器一一学习!!!Go!

一、通用寄存器

(一)数据寄存器AX、BX、CX、DX

数据寄存器一般用于存放参与运算的操作数或运算结果。每个数据寄存器都是16位的,但又可将高、低八位分别作为两个独立的8位寄存器来用。高8位分别记为AH、BH、CH、DH,低8位分别记为AL、BL、CL、DL。
【注意】:8086/8088CPU的14个寄存器除了这4个16位寄存器能分别当作两个8位寄存器来用之外,其他寄存器都不能这样使用。

① 累加器 AX

AX(Accumulator)称为累加器。用该寄存器存放运算结果,可提高指令的执行速度。此外,所有的I/O指令都使用该寄存器与外设端口交换信息。

② 基址寄存器 BX

BX(Base)称为基址寄存器。8086/8088CPU中有两个基址寄存器BX和BP。BX用来存放操作数在内存中数据段内的偏移地址,BP用来存放操作数在堆栈段内的偏移地址。

③ 计数器 CX

CX(Counter)称为计数器。在设计循环程序时,使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。

④ 数据寄存器 DX

DX(Data)称为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。

(二)地址指针寄存器SP、BP
① 堆栈指针寄存器 SP

SP(Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH 或 POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。

② 基址寄存器 BP

BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。

(三)变址寄存器SI、DI
① 源变址寄存器 SI

SI(Source Index)称为源变址寄存器。

②目的变址寄存器 DI

DI(Destination Index)称为目的变址寄存器。这两个寄存器通常用在字符串操作时存放操作数的偏移地址,其中SI存放源串在数据段内的偏移地址,DI存放目的串在附加数据段内的偏移地址。

二、段寄存器

为了对1M个存储单元进行管理,8086/8088对存储器进行分段管理,即将程序代码或数据分别放在代码段、数据段、堆栈段或附加数据段中,每个段最多可达64K个存储单元。段地址分别放在对应的段寄存器中,代码或数据在段内的偏移地址由有关寄存器或立即数给出。

① 代码段寄存器 CS

CS(Code Segment)代码段寄存器。用来存储程序当前使用的代码段的段地址。CS的内容左移四位再加上指令指针寄存器IP的内容就是下一条要读取的指令在存储器中的物理地址。

② 数据段寄存器 DS

DS(Data Segment)数据段寄存器。用来存储程序当前使用的数据段的段地址。DS的内容左移四位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。

③ 堆栈段寄存器 SS

SS(Stack Segment)堆栈段寄存器。用来存储程序当前使用的堆栈段的段地址。堆栈是存储器中开辟的按先进后出原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程序时保护断点和现场。

④ 附加数据段寄存器 ES

ES(Extra Segment)附加数据段寄存器。用来存储程序当前使用的附加数据段段的段地址。附加数据段用来存放字符串操作时的目的字符串。
附:8086/8088段寄存器与提供段内偏移地址的寄存器之间的默认组合

段寄存器提供段内偏移地址的寄存器
CSIP
DSBX、SI、DI或一个16位数
SSSP或BP
ESDI(用于字符串操作指令)

三、控制寄存器

① 指令指针寄存器 IP

IP(Instruction Pointer)称为指令指针寄存器,用来存放下一条要读取的指令在代码段内的偏移地址。用户程序不能直接访问IP。

② 标志寄存器 FLAGS

FLAGS称为标志寄存器,它是一个16位的寄存器,但只用了其中的9位,包括6个状态标志位和3个控制标志位。
在这里插入图片描述
1)状态标志位

名称描述
CF(Carry Flag)进位标志位当进行加减运算时 ,若最高位发生进位或借位,则CF为1,否则为0。该标志位通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围。
PF(Parity Flag)奇偶标志位当指令执行结果的低8位中含有偶数个1时,PF为1,否则为0。
AF(Auxiliary Flag)辅助进位标志位当执行一条加法或减法运算指令时,若结果的低字节的低4位向高4位有进位或借位,则AF为1,否则为0。
ZF(Zero Flag)零标志位若当前的运算结果为0,则ZF为1,否则为0。
SF(Sign Flag)符号标志位若运算结果的最高位为1,SF=1,否则为0。
OF(Overflow Flag)溢出标志位当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1,否则为0。该标志通常用来判断带符号数运算结果是否溢出。

2)控制标志位
控制标志位有三个,用于控制CPU的操作,由程序设置或清除。

名称描述
TF(Trap Flag)跟踪(陷阱)标志位是为测试程序的方便而设置。若将TF置1,CPU处于单步工作方式 。
IF(Interrupt Flag)中断允许标志位是用来控制可屏蔽中断的控制标志位。若将IF置1,表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求;若用CLI指令将IF清0,则禁止CPU接受可屏蔽中断请求信号。
DF(Direction Flag)方向标志位若将DF置为1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;否则按增地址方式进行。
  • 27
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值