当前课程知识点:微机原理与接口技术 >  第2周 8088微处理器 >  第9讲 8088 CPU主要引线及机构 >  8088 CPU内部寄存器

返回《微机原理与接口技术》慕课在线视频课程列表

8088 CPU内部寄存器在线视频

8088 CPU内部寄存器

下一节:实模式存储器寻址_01

返回《微机原理与接口技术》慕课在线视频列表

8088 CPU内部寄存器课程教案、知识点、字幕

大家好 这一讲我们来介绍

8088的内部寄存器

我们已经知道8088是一个 16位体系结构的这样的CPU

所以呢 它的16位的体系结构就意味着

它能够同时处理16位的二进制码

意味着它内部的总线是16位宽

还意味着 它内部的寄存器都是16位的

8088的内部一共有14个 16位的寄存器

这14个寄存器可以分为三种类型

一个是通用寄存器 有8个

还有段寄存器 有4个

以及两个控制寄存器

段寄存器和控制寄存器 我们都可以称为

专用寄存器 就相对于通用寄存器来讲的话

这14个内部的寄存器 它们的作用各有不同

大家学习它的时候

首先肯定要知道它们的名字

它们的含义

更重要的是一定要理解

这14个内部寄存器

它们里边的16位二进制码 的含义是什么含义

对于这四个段寄存器以及 两个控制寄存器

它们因为作为专用 所以

它们内部的16位二进制码 的含义非常清楚

你只要需要记住就行了

其实更加复杂的是通用寄存器

所以下边我们会花多一点的时间

来学习通用寄存器

有关段寄存器呢 因为要真正地理解大家必须要

把实地址模式下的存储器寻址 要学习清楚了

我们才能反过来去学习清楚

这四个段寄存器

但是今天这一讲里头 我们还是把这四个段寄存器

给大家先展示一下

然后在下一讲学习完了以后 我们再做一个回顾

8个通用寄存器又可以分成这样子的

三个小类或者说两大类

一大类就是数据寄存器

它们分别是 AX BX CX和DX

还有两类呢

可以简单地说是地址寄存器

这里边有两个地址指针寄存器

SP和BP

还有两位叫变址

还有两个叫变址寄存器

DI和SI

我们这一次首先强调一下

作为通用寄存器

不管这里边

叫哪个名字 不管这8个寄存器什么名字

不管它们下边我们要讲的 它们的专用的用法或者

特殊用法是什么用法

首先它们的

大名叫通用寄存器 也就是说它们的一级作用

是暂存中间运算结果

这一点请大家千万要记住

不要学了它们的一些特殊用法 就把专用

这个它们的通用用法就忘了

因此这8个通用寄存器 不管什么情况下

它们里边都可以放运算结果

或者说中间运算结果 也就是用来存放数据用的

其中这四个数据寄存器呢

是非常特殊的

4个16位寄存器

因为这四个数据寄存器

它们分别都是由两个

8位寄存器都在一起来构成的

也就是说它们合在一起 可以是一个16位寄存器

拆开来可以是两个独立的8位寄存器

这样设计的目的

也就是能够提高它们的应用的灵活度

或者说它们的效率

比如AX

它实际上是

可以拆分为AH跟AL两个寄存器的

它们一旦拆开来

两个作为8位寄存器用

AH跟AL就是两个独立的寄存器

虽然这里的H是High的缩写

L是Low的缩写

但是一旦拆开来作为8位寄存器

它们不存在High和Low这样的之分

就是存放8位数的寄存器

但是如果把这两个寄存器合在一起的话

它们一定AH在高8位
AL在低8位

这个是不能改的

同样的BX也是可以被这样子
分开为两个8位寄存器

CX DX是一样的

所以呢这四个数据寄存器

它们都是可以

被分别拆分为两个8位寄存器

所以合起来可以是一个

8个8位寄存器

然后又可以合在一起

构成4个16位寄存器

这4个寄存器呢

它们通用的叫数据寄存器
因此这4个寄存器

更常用的是用来存放中间运算结果

好了
现在就这4个寄存器我们来总结一下

它的第一级大名叫通用寄存器
用暂存中间运算结果

第二级大名
第二级的名字叫数据寄存器

那么更确定地

说明他们经常用来暂存中间运算结果

下边我们来说一下他们的一些
专用法

AX又叫累加器

因为它的性能要略微高一些

所以它更多更多的时候是被用来做

中间运算结果的存放

AX中的16位数没有任何的二义性

它里边都是运算的数据

BX呢
它的最小一级名字叫

基址寄存器

意思它里面有个址的意思
就是地址的意思

因此呢
意味着BX里的16位数

可能是运算数据

也可能是数据存放的地址

到底里边是地址还是数据?

那在我们下一章指令的时候
我们可以根据它在指令中的表现形式

来说明它的含义

这个因此BX这个寄存器
在使用的时候

是非常灵活的

这也是大家作为初学者

觉得比较困难的一个寄存器

CX呢
它叫计数寄存器

我们说它的最小名字是计数寄存器

也就是说这个寄存器也有一些
专用的做法

虽然它的里边的都是数据

但是它的数据的意思不一样

当然它很多很多的时候
它里边是中间运算结果

但是在有些时候

比如在循环指令中间

循环的次数要求一定要在CX里

在串操作指令里头

串的长度值一定要在CX里

所以在这些指令里头CX

实际上也是作为专用寄存器
来使用的

DX呢

不论是它的二级名字还是三级名字
都叫数据寄存器

听上去好像它里边的数据
更经常的是数据了

实际上它还在一个地方
它里边代表着数据的含义

它只有在输入输出指令中

DX值一定代表的是端口地址

这个毫无问题

那么除了在输入输出指令之外

其他指令中DX的值一定都是
运算的数据

而且作为一个特殊的寄存器

它经常在需要32位运算的时候

它用来存放高8位的内容

高16位的内容

因为我们现在学的是8088/8086
指令集

所以我们的指令只能直接
处理16位数

当你需要处理32位的时候

没有寄存器能够放

所以必须要借助

DX来存放高16位数

好了这是4个数据寄存器
请大家注意他们内部

16位数的含义

地址指针寄存器呢
一个叫BP一个叫SP

SP呢我们称为

堆栈指针寄存器

请大家注意这个寄存器
虽然它的一级大名叫通用寄存器

实际上这个寄存器经常作为
专用寄存器来用的

当你的程序中间如果设置了
堆栈的时候

那么当然堆栈什么概念我们后面来讲

只要有堆栈存在

SP一定被专用
它用来指向栈顶

也就是说它是作为栈顶指针来使用的

另外一个和堆栈操作相关的就是叫BP

我们后边学堆栈的时候
我们会知道

SP所指向的永远是栈顶的那个位置

而BP可以指向堆栈里边的
任何一个区域

这两个寄存器再次强调

在有堆栈操作的时候

SP肯定被专用
但是BP不一定

BP里边的16位数

可能是一个堆栈区域的某个单元的地址

也有可能就是一般运算的中间结果

这些是它们作为通用寄存器的特性

当然在没有堆栈的操作的这样的程序中

SP也可以作为通用寄存器

存放中间运算结果

BP和BX的区别在哪里?

它们的共同点都是可以用来存放
某个单元的地址

但是它们的不同点是
BX一般来讲指向的是数据区

而BP指向的是堆栈区

这一点后面我们随着指令的学习
再逐渐地帮助大家理解

还有两个

用来表示地址的通用寄存器

一个叫

源变址寄存器SI
一个叫目标变址寄存器

叫DI

这个名字具体是怎么回事
我们随着后边内容的解释

我们再逐渐地来解释给大家

首先大家就记住这有两个

这样的通用寄存器SI和DI

而且这两个寄存器的里边的16位数

也可以是运算的数据

也可以是存放数据的地址

到底它们是地址还是数据

那么要取决于它们在指令中间的
表现形式

那么从这个角度来讲
它们跟BX没有什么区别

都是可以放数据可以放地址

而且它们都通常指向的是数据区

但是它们也有一些不同

不同的地方在哪里?
我们后面学习的时候

再来逐渐解释给大家

这是8个通用寄存器

总之这8个通用寄存器里头

这8个通用寄存器都是16位寄存器

作为16位寄存器
它们里边的16位数

可以是运算的数据

可以是
存放数据的地址

除了AX和CX之外

其他的

6个通用寄存器里头都可能是地址

但是呢作为

8位寄存器的AH AL

BH BL等等这些

这个8位寄存器里的值

一定是运算的数据

绝不可能是地址

请大家一定要注意
我们16位体系结构的CPU

它的地址最短也是16位的

它哪怕是零

也是16位的

控制寄存器我们有两个

一个我们叫指令指针

这个实际上就是程序计数器

只不过Inter公司给它另外起了个名字

叫指令指针

指令指针寄存器呢

它里边的16位数的含义非常明确

就是下一条要取的那条指令
的偏移地址

这里什么叫偏移地址?
我们也先放着

到后边我们再来学习它

我们看一下这个图

这个图我们见了好几次了

我们说我们的程序一旦经过编译

就开始运行之前我们要放到内存里

好到了内存里以后就变成了
一条一条的机器指令

这样子排列着放到里头

那么我们为什么系统就能找到
第一条指令

因为我们的指令指针

或者说我们的程序计数器
指向了程序的第一条指令上

那么

跟一维这个程序计数器指向的这条指令

所以CPU取指令的时候就会到这里取

所以说程序计数器实际上是一个
指挥棒

也就是说我们归结到我们的8088

就说BI有取指令的时候
到哪里去取呢?到哪个单元里去取呢?

完全取决于程序计数器指向的位置

在我们这里就完全取决于
IP指向的位置

所以IP我们叫指令指针

Instruction Pointer

就是指到这个地方
那么所以它就取到这里

所以简单地讲

BI有取指令就看IP

IP指向哪里它就取向哪里

那么另外一个专用寄存器或者说

控制寄存器我们叫FLAGS

我们前面已经讲了

FLAGS是标志寄存器

它里边保存的是运算结果的特征

那么这个寄存器作为一个整体来讲

它是一个16位寄存器

但是它里边实际上只有9位
是有意义的

它是按位来说的
其他的

7位都是空闲位

那么这9位呢又分成两种类型

一种叫状态标志位
一共有6个

还有一类有3个呢
叫控制标志位

状态标志位是真的表示运算结果的特征

而控制标志位表示的是
处理器当前的工作状态

我们下边把这9个标志位的含义
一一介绍给大家

首先我们来看6个状态标志位

CF表示进位标志位

也就是说当加减运算最高位
向前有借位或着进位的时候

那么CF会等于1

OF表示溢出标志位

也就是说当你的两个符号数运算

次高位

和最高位向前的进位

或者借位状态不一样的时候

OF会等于1

也就说反过来讲
OF等于1

表示两个有符号数运算

它结果溢出

CF等于1
表示两个无符号数运算

有溢出

这个请大家注意它们的含义

ZF叫零标志位

请大家注意
就是运算结果为零的时候

ZF等于1

不为零
ZF等于零

它虽然很好记
但是容易记反

SF是符号标志位

就说最高位是1的时候

它就是1
最高位零就表示零

也就是说
当你是有符号数运算的时候

SF表示你运算结果的性质
到底是正数还是负数

这4个状态标志位呢

都针对8位 16位都是有意义的

它们是一样的
对于16位数

比如它就是第15位是1
SF等于1

对于8位数呢
就第7位是1 SF等于1

那么对于16位数的最高位
向第15位向前有进位 SF等于1

8位数呢 就是第7位向最高位有进位
SF等于1 等等

但是下面这两个状态标志位呢

它只针对8位有效

也就是说在16位数运算的时候

它只针对低8位

PF呢表示低8位中

1的个数如果是偶数个的话

PF为1
否则就为零

AF呢叫半加标志位
也叫辅助进位标志位

也就是说第3位向第4位
有进位或者有借位的时候

AF会等于1

我们做一个练习
把这6个状态标志位帮助大家

理解一下或者说记忆一下

比如我们现在就做这两个二进制求和

我们也不知道这两个数是

有符号还是无符号

我说过有符号还是无符号
实际上是程序员自己定的

就说从硬件这个层面上它是不能理解的

那么这两个数

做加法

那么计算机的硬件
也就是说CPU

它就会按部就班地去求和

也就是说 零加零等于零 零加1等于1
1加1等于零 有进位

所以总而言之就得到了这么一个结果

好了 我们现在来看一下

这样运算完了以后6个
状态标志位会有什么反应

首先 现在作为两个8位数相加

最高位向前有进位 对吧

这个红颜色方框框里的
所以SF会等于1

最高位向前有进位
次高位向前

向最高位有进位没有呢?

也有

所以OF等于零

两个进位状态相同

所以如果它是有符号数运算
表示没有溢出 所以OF等于零

第三位到第四位有进位没有呢?

没有
所以AF等于零

最后这个1的个数

这运算结果中8位

不算那个进掉那一位
这8位中1的个数有4个

所以是偶数个
所以PF等于1

最高位现在是1

所以SF等于1

运算结果显然不为零
所以ZF等于零

这就是运算结果的特征

我们通过这些特

我们就能知道我们运算的结果

到底是有没有溢出

最高位是正数还是负数

等等这样的一些信息就可以得到了

好 控制标志位呢有3个

它是用来表示处理器目前的控制状态的

TF叫陷井标志位

它通常表示现在

它等于1的时候表示CPU在响应中

处于一种单步工作状态

也就是说它实际上是
一种中断的一种性质

IF表示外部可屏蔽的中断

请求允许信号

也就是说它等于1的时候

表示可以响应外部的可屏蔽中断请求

为零就不可以

可屏蔽中断请求的含义
我们在上一讲已经

有过介绍

DF表示操作方向的一个标志位

它主要在后边我们学习
串操作指令的时候会用到它

这是3个控制标志位

请大家对这9个标志位

要能够熟悉 知道它们的含义

第三类寄存器呢我们称为段寄存器

段寄存器的这个学习现在

我们在这一会大家只能去
就事论事记住它

因为有关

什么是段
为什么要有段

或者什么是逻辑段等等这些概念
我们都还没有讲

段寄存器是用来存放
相应逻辑段的段地址

所以这里第一个名词

就是逻辑段

那么8088也好8086也好

它的内存都是按段

按逻辑段来分段管理的

这个我们在

开篇讲8088/8086特点的时候

曾经说过它的第二大特点

就是利用了16位体系结构

只能直接产生16位地址码的
这样一个条件下

能够通过内存分段管理
能够管理到一兆个单元

这么大的内存空间

那么怎么个分段?
那么段的段地址在哪里呢?

段地址就在段寄存器里

这个段的含义
大家今天暂时可以理解为

像一层楼一层楼

我们前面讲过每一栋大楼里的每一

每一个房间
一栋大楼里的每个房间

它的门牌号码的编码都是有规律的

它的前面第一位十进制或者
前两位十进制

通常来表示楼层号

那么

这个楼层号我们也可以在这里
就当于在这里是个段地址一样

所以这个楼层号放在哪里呢?
在这里就放在段地址里

段寄存器里

当然这个大楼和我们现在这个

还不能完全一一对应

我们下一讲

来给大家介绍

在8088中这个逻辑段的

个数可以很多
但是类型只有4种

一种我们称为代码段
用来放指令代码的

就说我们所有的程序

它经过翻译成机器语言以后
都由机器指令

和运算的数据

这些指令码都是放在

代码段里

而运算的数据

可以放在数据段或者附加数据段里头

另外
我们提了好几次的这个名词堆栈

堆栈 那么也是一个段

所以这一共是4种类型的段

这4种类型的段呢

就要对应着4种类型的段地址

这4种类型地段地址呢

就放在了这样4个段寄存器里

那么显然这只有4个段寄存器

只能放4个段地址

那么你又说有那么多个逻辑段

你怎么放呢?

我们所以说

我们不管有多少个逻辑段
但是只有4种类型

而且就对应只有4个段地址

因此在一个程序模块里

一种逻辑段只能有一个

也就是说在一个

程序模块里
最多只能有4个逻辑段

结论先放在这里

所以段寄存器一共有4个

它们里边都是16位的段地址

这16位的段地址的含义非常明确

代码段的段地址一定放在CS里

数据段的段地址一定放在DS里

因为段地址刚才我们用了那个楼层号
来区分

所以段地址相当于那个

可以对应到我们大楼的楼层号

所以楼层号就

就决定了这一层楼上所有房间
在这一栋楼中间的位置

比如五楼

那么你这个五

就决定了五楼上所有的房间
在这栋楼里都处于五楼这个区域

所以段地址

也就决定了

一个段在内存中的区域是在哪里

好 讲了这么多

那么我们要知道为什么

什么是逻辑段

为什么要分段

这些概念

我们必须要理解了
我们才能理解段寄存器

因此我们渴望下一讲来给大家介绍

就是实地址模式下的

存储器管理

这一讲

学习完了
大家就真正能够理解段寄存器

它的作用

好了 我们这一讲我们就到这里

微机原理与接口技术课程列表:

第1周 微型计算机基础概论

-第1讲 关于本课程

--关于本课程

-第2讲 微型计算机系统

--微机系统_01

--微机系统_02

-第3讲 微型计算机一般工作过程

--微机的一般工作过程_01

--微机的一般工作过程_02

-第4讲 数制与编码

--常用计数制及其转换

--计算机中的编码

-第5讲 计算机中数的表示与运算

--数的表示

--符号数的表示

--数的表示与运算

-第6讲 基本逻辑运算与逻辑电路

--基本逻辑运算与逻辑门

--常用逻辑运算及电路

-第7讲 本周小结

--本周小结

-第1周 微型计算机基础概论--第一周单元测验

第2周 8088微处理器

-第8讲 8088微处理器

--8088 CPU_01

--8088 CPU_02

-第9讲 8088 CPU主要引线及机构

--8088 CPU主要引线

--8088 CPU内部结构

--8088 CPU内部寄存器

-第2周 8088微处理器--第二周单元测验

第3周 实模式存储器寻址与总线

-第10讲 实模式存储器寻址

--实模式存储器寻址_01

--实模式存储器寻址_02

--实模式存储器寻址_03

-第11讲 8088系统总线

--8088系统总线

-第12讲 微处理器小结

--微处理器小结

-单元测验--作业

第4周 数据传送指令

-第13讲 指令概述

--指令概述

-第14讲 寻址方式

--寻址方式

-第15讲 通用数据传送指令

--通用数据传送指令_01

--通用数据传送指令_02

--通用数据传送指令_03

-第16讲 地址传送指令

--地址传送指令

-第17讲 输入输出指令

--输入输出指令

-第4周 数据传送指令--第四周单元测验

第5周 算术运算、逻辑运算与移位操作指令

-第18讲 算术运算指令

--加法运算指令

--减法指令

--乘除运算指令

-第19讲 逻辑运算指令

--逻辑运算指令_01

--逻辑运算指令_02

-第20讲 移位操作指令

--移位操作指令

-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验

第6周 串操作指令

-第21讲 关于串操作指令的说明

--串操作指令说明

-第22讲 串传送与串比较

--串传送与串比较

-第23讲 串扫描指令

--串扫描指令

-第24讲 串装入与串存储指令

--串装入与串存储指令

-第六周单元测验--作业

第7周 程序与处理器控制

-第25讲 程序控制指令说明

--程序控制类指令说明

-第26讲 转移类指令

--无条件转移指令

--条件转移指令

-第27讲 循环控制指令

--循环控制指令

-第28讲 过程调用指令

--过程调用指令

-第29讲 中断指令

--中断指令

-第30讲 处理器控制指令

--处理器控制指令

-第31讲 指令系统小结

--指令系统小结

-第7周 程序与处理器控制--第七周单元测验

-第7周 程序与处理器控制--第七周作业

第8周 汇编语言程序设计

-第32讲 汇编语言源程序

-- 汇编语言源程序_01

-- 汇编语言源程序_02

-第33讲 伪指令

--数据定义伪指令

--符号与段定义伪指令

--汇编语言源程序结构例

--其它伪指令

-第34讲 系统功能调用

--系统功能调用_01

--系统功能调用_02

-第35讲 汇编语言程序设计示例详解

--程序设计示例1

--汇编语言程序设计示例_02

-第36讲 汇编语言程序设计小结

--汇编语言程序设计小结

-第8周 汇编语言程序设计--第八周单元测验

-第8周 汇编语言程序设计--第八周作业

第9周 半导体存储器

-第37讲 半导体存储器概述

--半导体存储器概述

-第38讲 内存单元编址

--存储单元编址

-第39讲 随机存取存储器RAM

-- RAM_01

--RAM_02

-第40讲 只读存储器ROM

--ROM_01

--ROM_02

-第九周单元测验--作业

第10周 半导体存储器扩展技术

-第41讲 半导体存储器扩展

--半导体存储器扩展_1

--存储器扩展_2

--半导体存储器扩展_3

-第42讲 半导体存储器小结

--半导体存储器小结

-第十周单元测验--作业

-第十周作业--作业

第11周 输入输出与中断技术

-第43讲 基本I/O接口

--I/O系统概述_01

--I/O系统概述_02

-第44讲 简单接口芯片

--简单接口芯片

-第45讲 基本输入输出方法

--基本I/O方法

-第46讲 简单I/O控制系统设计

--简单I/O控制系统设计1

--简单I/O控制系统设计2

-第47讲 中断技术

--中断技术1

--中断技术2

-第48讲 输入输出与中断技术小结

--本周小结

-第十一周单元测验--作业

第12周 可编程并行数字接口

-第49讲 可编程定时计数器

--可编程定时计数器8253_01

--可编程定时计数器8253_02

--可编程定时计数器8253_03

-第50讲 可编程并行接口

--可编程并接口8255_01

--可编程并行接口8255_02

--可编程并行接口8255_03

-第51讲 可编程接口小结

--本周小结_01

--本周小结_02

-第十二周单元测验

第13周 模拟量的输入输出

-第52讲 模拟量的输入输出

--模拟量的输入输出

-第53讲 D/A转换器

--D/A转换器_01

--D/A转换器_02

-第54讲 A/D转换器

-- A/D转换器_01

--A/D转换器_02

-第十三周单元测验--作业

第14周 系统综合设计示例详解

-第55讲 I/O接口系统综合设计示例详解I

--综合设计示例详解I_01

--综合设计示例详解I_02

-第56讲 综合设计示例详解II

--综合设计示例详解II_01

--综合设计示例详解II_02

-第57讲 结束语

--结束语

8088 CPU内部寄存器笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。