zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

微机原理8086/8088——内部寄存器

2023-09-11 14:19:58 时间

微机原理8086/8088概念系列


微机原理8086/8088——微型计算机组成
微机原理8086/8088——微处理器功能结构
微机原理8086/8088——内部寄存器
微机原理8086/8088——指令系统与寻址方式
微机原理8086/8088——数据传送指令

更新ing


内部寄存器

1.通用寄存器

通用寄存器又称为数据寄存器,它们既可以当16位数据寄存器使用,也可以作为2个8为数据寄存器,用作16位时,包括AX、BX、CX、DX,当作8位的时候,可以分成AH、BH、CH、DH存放高字节,AL、BL、CL、DL存放低字节,并且可独立寻址。

2.段寄存器

8086/8088CPU有20位地址总线,2的20次方,所以可以存储的空间有1MB,但是指令地址只有16位也就是64KB。64KB和1MB相差甚远,所以8086/8088采用了分段管理
也就是把4个16位寄存器分别放到各个段的初始位置(这个位置叫作段基址)这样我们想要访问不同位置内存的时候只需要一个偏移地址,加上一个段基址就可以了。
这时候你会感觉奇怪,这四个段寄存器不也是16位的吗?他们怎么可以放得下20位的段基址?

其实只需要给他们一个16位(2的16次方)的地址,再把这个地址乘以16(2的4次方),也就是左移4位就可以了,16位地址左移4位后不就可以代替20位的地址了。这只是人为规定的。
(此篇文章内容可以结合《指令系统与寻址方式》深入理解)

段寄存器共有4个分别是CS(代码段寄存器)、DS(数据段寄存器)、SS(堆栈段寄存器)、ES(附加段寄存器)。
CS表示此时所执行的指令代码可以从CS段中指定存储器段中获得,对应的偏移值由IP指令指针提供(稍后会提到)。

DS是指当前程序使用数据所存放段的起始地址

SS指的是堆栈的起始地址

ES则指出当前程序所使用附加段地址的起始地址,此段一般存放原始数据或运算结果

3.地址指针与变址寄存器

参与地址运算的一般就是这四个寄存器
SP(堆栈指针寄存器)、BP(基址指针寄存器)、SI(源变址寄存器)、DI(目的变址寄存器)

BP可以和SS联用来共同确定堆栈段中一个存储单元的地址

SI一般都与DS联用,共同确定一个存储单元地址,达到在数据段中寻址的目的。

DI一般都与ES联用,共同确定一个存储单元地址,达到在附加段中寻址的目的。

4.指令指针和标志寄存器

IP是指令指针,其功能与51CPU中的PC(程序计数器)功能相似,IP中存放的是下一条指令的偏移地址。
例如:(IP)=200H (CS)=1000H
那么这条指令地址就是(CS)*16+(IP)=10200H
乘以16就是左移四位,上面我们提过。
每执行完一个指令之后,IP自动+1,某些指令可以使得IP的值改变,比如跳转指令等,当我们真正使用的时候便会理解。
FLAGS标志寄存器,此寄存器在《微处理器功能结构》一文中有详细说明。