寄存器知识大杂烩

1.寄存器是什么

寄存器是一个容器,一个存储信息的容器,和内存差不多,不过寄存器比内存更加稀有。

寄存器有分为cpu中的寄存器和外设的寄存器,我们常常说的寄存器,一般是说cpu中的寄存器

2.有哪些寄存器

8086 cpu中的寄存器总共14个,且均为16位

分别是AX BX CX DX SP BP SI DI IP FLAG CS DS SS ES,按照用处,分别分为通用寄存器、控制寄存器和段寄存器


通用寄存器并不只是上面说明的那些特殊用处,还有其他的用处,可以用来传递数据和暂存数据

数据寄存器还可以把它们分为2个相互独立的8位寄存器来使用 ,其他的寄存器是不可以这样分开成2个相互独立的8位寄存器的,AX:AH和AL, BX:BH和BL,CX:CH和CL,DX:DH和DL,其中H代表高8位,L代表低8位

AX被称为累加器寄存器,特殊用处,DIV和MUL指令使用时,用来存放被除数和乘数

BX被称为基地址寄存器,特殊用处,用来寻址,一般用来存放偏移地址,配合基地址一起使用

CX被称为计数器寄存器,特殊用处,在LOOP指令是,用来指定循环的次数

DX被称为数据寄存器,特殊用处,和AX差不多,不过它是存放的另一部分,例如被除数是32位,高16放DX

BP被称为指针寄存器,特殊用处,获取堆栈中的数据或地址,存放一般是偏移地址,基地址一般是从SS寄存器里面,特殊表明,有可能是在CS寄存器里面

SI和DI和BX差不多,都是用来寻址用的,存放某个内存单元地址的偏移或者用于某组存储单元开始地址的偏移

段地址和偏移地址出现的原因,是地址总线是20位,但是寄存器是16位,所以一个寄存器存放地址段地址,一个存放偏移地址

段地址是地址的高16位,基地址 = 段地址 *10的4次方,物理地址 = 基地址+偏移地址

程序里面有数据段、代码段、栈段,每个段都有段地址,数据段的短地址放在DS,代码段的段地址放在CS,栈段的段地址放在SS

CS:IP两个寄存器指向了CPU要执行的下一条指令

SS:SP两个寄存器指向栈顶元素

DS和ES,DS是用来获取数据的,ES是一个扩展的寄存器,这个寄存器,主要是用于寄存器不够用的时候

8086CPU不支持直接将一个送入段寄存器中

标志寄存器(FLAG):flag寄存器里面存放的的数据,每一位表示不同的状态,这些信息被称为程序状态字(PSW)


这些标志位用来存储相关指令的某些执行结果、为CPU执行相关指令提供行为依据、控制CPU的相关工作方式

ZF(zero flag):零位标志位,记录相关指令执行后的结果是否为0,如果为0,ZF = 1,否则ZF = 0

PF(parity flag):奇偶标志位,记录相关指令执行后,其结果的所有二进制中的1的个数是否为偶数,是的,PF = 1,否则PF = 0

SF(sign flag):符号标志位,记录相关指令执行后,其结果是否为负,如果为负,SF = 1,否则,SF = 0

CF(carry flag):进位标志位,记录相关指令执行后,发生了低位向高位进位或者低位向高位借位,CF = 1,否则,CF = 0

OF(overflow flag):溢出标志位,记录相关指令执行后,出现结果超出机器能表示的范围,OF = 1,否则,OF = 0

TF(trap flag):追踪标志位,当TF = 1时,CPU进入单步执行方式,每执行一步产生一个中断请求,用于调试

IF(interrupt-enable flag):中断允许标志位,当IF=1,CPU可以响应外部的可屏蔽中断发出的中断请求,当IF=0,CPU可不响应外部的可屏蔽中断发出的中断请求

上面说的都是CPU中的寄存器,但是外设也有寄存器,CPU和外设的寄存器是怎么通信的

这里就涉及了统一编址和独立编址的问题

统一编址:外设接口中IO寄存器与主存单元一样看待,每个端口占用一个存储单元的地址,将主存的一部分划出来用作IO地址空间,统一编址也叫IO内存

独立编址:IO地址和存储地址分开独立,IO端口地址不占用存储空间的地址范围,这样,在系统中就存在了另一种与存储地址无关的IO地址,CPU也必须具有专门与输入输出操作的IO指令和控制逻辑,地址总线过来一个地址,设备不知道是给IO端口的、还是给存储器的,于是处理器通过控制信息来实现不同的寻址,独立编址也叫IO端口


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值