寄存器总结(针对于8086CPU)

CPU中的寄存器,实际上是其内部的一组高速存储单元,具有数据准备数据调度数据缓冲等作用,用于临时保存操作数、运算结果或者地址指针等信息。从应用角度来划分,可分为通用寄存器和专用寄存器。

  • 通用寄存器
    特点:数量多,即可以存放数据,又可以存放地址或地址指针,使用频率高
  • 专用寄存器
    特点:功能专一,有特殊用途,例如:标志寄存器是用来保存程序运行状态,而指令指针寄存器是用来存放程序中要执行的下一条指令地址
    下图是8086CPU的程序可见寄存器组,共有14个16位的寄存器。

在这里插入图片描述

下面我们将一一说明(分为三类:通用寄存器、段寄存器和控制寄存器):

通用寄存器

通用寄存器包含数据寄存器、指针和变址寄存器

  • 数据寄存器(4个)
    作用:用来保存操作数或运算结果等信息,但他们各自有专门的用途。

AX寄存器,又称为累加器,是算术运算的主要寄存器。 特别是在乘、除等指令中用来默认存放操作数和结果,另外,所有的I/O指令都使用这一寄存器与外部设备传送信息。

BX寄存器,又称为基址寄存器,常用来存放存储器单元的偏移地址。

CX寄存器,又称计数寄存器,一般作为移位指令、循环或串操作等指令中的隐含计数器

DX寄存器,又称为数据寄存器,常用来存放双字数据的高16位(在乘、除法中),这种情况,一般是与AX搭配使用的。

注意事项:这四个寄存器本身是16位的,可以以字的形式(1字节=8位,1字=2字节)访问,也可以以字节的形式访问,即每个寄存器可以分为两个8位的寄存器来使用。目前,只有这四个寄存器能这样使用。
例如:AX可以分为AH和AL两个8位寄存器,分别访问高位字节和低位字节

  • 指针和变址寄存器(4个)
    指针和变址寄存器包括SP、BP、SI和DI。

SP寄存器,为堆栈指针寄存器,用来存放当前堆栈段中栈顶单元的偏移地址,可以与堆栈段寄存器SS联用指向堆栈栈顶单元

BP寄存器,为基址指针寄存器,用来存放堆栈段中某一存储单元的偏移地址,可以与堆栈段寄存器SS联用确定堆栈段中某一存储单元的地址

SI为源变址寄存器,DI为目的变址寄存器,一般与数据段寄存器DS联用,用来确定数据段中某一存储单元的地址这两个变址寄存器有自动增量和自动减量的功能

段寄存器(4个)

8086CPU的地址线是20位的,最大的寻址空间应为2的20次方,也就是1MB,而寄存器都是16位的。似乎只使用一个寄存器无法表示,那我们该怎么表示一个数据或指令的物理地址呢?

我们将1MB地址空间分为若干个逻辑段,同时,将物理地址分为两部分——段地址和偏移地址,段寄存器存放段地址,以确定逻辑段在主存中的起始地址。

物理地址的计算方法:段地址左移4位再加上偏移地址,结果就是该数据或指令的物理地址
公式:物理地址=段地址*10H+偏移地址,这里的10H是16进制数,也就是十进制中的 16

下面,我们将具体说明各个段寄存器。

CS寄存器,称为代码段寄存器,用来存储程序当前使用的代码段的段地址,以CS里的内容作为段地址IP里的内容作为偏移地址,然后计算出的就是下一条要读取的指令在存储器中的实际地址

DS寄存器,称为数据段寄存器,用来存放当前使用的数据段的段地址

SS寄存器,称为堆栈段寄存器,用来存放当前所使用的堆栈段的段地址,通常和SP与BP搭配使用

ES寄存器,称为附加段寄存器,用来存放程序当前使用的附加数据段的段地址

控制寄存器

控制寄存器包括指令指针寄存器和标志寄存器

  • 指针指令寄存器IP:用来存放下一条要读取的指令在代码段中的偏移地址
  • 标志寄存器FLAGS:
    在这里插入图片描述
    由上图可知,它包含9个标志位,其中有6个条件码标志和3个控制码标志。

条件码

进位标志CF:当进行加减运算时,若运算的最高位发生进位或借位,则CF为1,否则为0

辅助进位标志AF:当进行加减运算时,若运算结果的低字节的低4位向高4位有进位或借位,则AF为1,否则为0

符号标志SF:记录运算结果的符号,结果为负时为1,否则为0

零标志ZF:运算结果为0时ZF为1,否则为0

溢出标志OF:用于检测有符号数的运算结果是否产生了溢出,溢出时OF为1,否则为0

奇偶标志PF:当结果的低8位中1的个数位偶数时,PF为1,否则为0.

控制码

方向标志DF:在串处理指令中控制处理信息的方向。当DF为1时,每次操作后使变址寄存器SI和DI减少,这样就使串处理从低地址向高地址方向进行;当DF位为0时,则使SI和DI增大,这样使串处理从高地址向低地址方向进行。

中断标志IF:用来控制是否允许中断,当IF为1时,允许CPU响应可屏蔽中断请求;否则关闭中断,不允许CPU响应可屏蔽中断请求。

跟踪标志TF:用于调试时的单步方式操作。当TF为1时,每条指令执行完后产生中断,CPU处于单步运行方式;当TF为0时,CPU正常工作,程序连续执行

PS:单步运行方式,在程序开发中,为了找到程序的bug,通常采用的一种调试手段,一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值