【读书笔记】汇编语言(第四版)第二章 寄存器

8086CPU由运算器、控制器和寄存器等构成,内部总线连接各组件。CPU通过段地址和偏移地址合成20位物理地址进行寻址,具备1MB的寻址能力。8086有14个16位寄存器,其中通用寄存器AX、BX、CX、DX可拆分为8位使用。CS和IP寄存器分别存储指令的段地址和偏移地址,指示CPU执行指令的位置。
摘要由CSDN通过智能技术生成

一个典型的CPU(此处讨论的不是某一具体的CPU)由运算器、控制器、寄存器(CPU工作原理)等器件构成, 这些器件靠内部总线相连。之前所说的总线, 相对于CPU内部来说是外部总线内部总线实现CPU内部各个器件之间的联系, 外部总线实现CPU和主板上其他器件的联系

CPU中:

运算器进行信息处理
寄存器进行信息存储
控制器控制各种器件进行工作
内部总线连接各种器件, 在它们之间进行数据的传送

程序员通过改变各种寄存器中的内容来实现对CPU的控制。

不同的CPU,寄存器的个数、结构是不相同的。8086CPU有14个寄存器, 每个寄存器有一个名称。这些寄存器是: AX、BX、EX、DX、SI、DI、SP、BP、IP、CS、SS、

DS、ES、PSW

通用寄存器

8086CPU 的所有寄存器都是16 位的, 可以存放两个字节。AX、BX、EX、DX这4个寄存器通常用来存放一般性的数据, 被称为通用寄存器。

8086CPU 的上一代CPU中的寄存器都是8位的, 为了保证兼容, 使原来基千上代CPU编写的程序稍加修改就可以运行在8086 之上, 8086CPU的AX、BX、EX、DX这4个寄存器都可分为两个可独立使用的8位寄存器来用:

AX 可分为AH 和AL
BX 可分为BH 和BL
EX 可分为CH 和CL
DX 可分为DH 和DL

AX 的低8 位(0 位~7 位)构成了AL 寄存器,高8 位(8 位~15 位)构成了AH 寄存器。

AH 和AL 寄存器是可以独立使用的8 位寄存器

字在寄存器中的存储

出千对兼容性的考虑, 8086CPU 可以一次性处理以下两种尺寸的数据。

字节:记为byte, 一个字节由8 个bit 组成,可以存在8 位寄存器中。

字:记为word, 一个字由两

物理地址&16位结构的CPU&8086CPU给出物理地址的方法

CPU 访问内存单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址。

CPU 通过地址总线送入存储器的,必须是一个内存单元的物理地址。在CPU 向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址。不同的CPU 可以有不同的形成物理地址的方式。

什么是16 位结构的CPU ?

16 位结构(16 位机、字长为16 位等常见说法,与16 位结构的含义相同)

运算器一次最多可以处理16 位的数据
寄存器的最大宽度为16 位
寄存器和运算器之间的通路为16 位

8086CPU 有20 位地址总线,可以传送20 位地址,达到1MB 寻址能力。8086CPU 又

是16 位结构,在内部一次性处理、传输、暂时存储的地址为16 位。从8086CPU 的内部

结构来看,如果将地址从内部简单地发出,那么它只能送出16 位的地址,表现出的寻址

能力只有64KB 。

8086CPU 采用一种在内部用两个16 位地址合成的方法来形成一个20 位的物理地址。

8086CPU 相关部件的逻辑结构如图

如图2.6 所示,当8086CPU 要读写内存时:

(l) CPU 中的相关部件提供两个16 位的地址, 一个称为段地址,另一个称为偏移地址;
(2) 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
(3) 地址加法器将两个16 位地址合成为一个20 位的物理地址;
(4) 地址加法器通过内部总线将20 位物理地址送入输入输出控制电路;
(5) 输入输出控制电路将20 位物理地址送上地址总线;
(6) 20 位物理地址被地址总线传送到存储器。

地址加法器采用物理地址=段地址x16+偏移地址的方法用段地址和偏移地址合成物理

地址

例如, 8086CPU 要访问地址为123C8H 的内存单元,此时,地址加法器的工作过程

如图2.7 所示(图中数据皆为十六进制表示)。

“段地址×16+偏移地址=物理地址”的本质含义

8086CPU 的这种寻址功能是“ 基础地址+偏移地址=物理地址” 寻址模式的一种具体实现方案。8086CPU 中,段地址x16 可看作是基础地址。

“数据在21F60H 内存单元中。”这句话对于8086PC 机一般不这样讲,取而代之的是两种类似的说

法:

数据存在内存2000:1F60 单元中
数据存在内存的2000H 段中的1F60H 单元中

这两种描述都表示“数据在内存21F60H 单元中”

段寄存器&CS和IP&修改CS、 IP的指令&代码段

8086CPU 在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址

段地址在8086CPU 的段寄存器中存放

8086CPU 有4 个段寄存器: CS 、DS 、SS 、ES

当8086CPU 要访问内存时由这4 个段寄存器提供内存单元的段地址

CS 和IP 是8086CPU 中两个最关键的寄存器,它们指示了CPU 当前要读取指令的地址

CS 为代码段寄存器, IP 为指令指针寄存器

想让CPU 执行我们放在代码段中的指令,必须要将CS:IP 指向所定义的代码段中的第一条指令的首地址

小结

段地址在8086CPU 的段寄存器中存放。当8086CPU 要访问内存时,由段寄存器提供内存单元的
段地址。8086CPU 有4 个段寄存器,其中CS 用来存放指令的段地址

cs存放指令的段地址, IP 存放指令的偏移地址
8086 机中,任意时刻, CPU 将CS:IP 指向的内容当作指令执行。

8086CPU 的工作过程:
从CS: IP 指向的内存单元读取指令,读取的指令进入指令缓冲器;
IP 指向下一条指令;
执行指令。(转到步骤CD, 重复这个过程。)

8086CPU 提供转移指令修改CS 、IP 的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值