目录
1.2 微型计算机系统
外部设备:可以与CPU进行信息交换,但是不能直接与CPU进行信息交换
即必须通过输入输出接口 同计算机进行信息交换
脱机外存:离开计算机后还可以存储数据的设备 ,例如U盘
为什么需要IO接口?
这是因为CPU是一个高速设备,外设是一个低速设备。高速设备和低速设备之间
直接相联速度不匹配。 因为往往一个外设配备一个IO接口,所以IO接口 和 外设
之间传输多长时间没关系,当IO接口接收完数据后,通知下CPU将数据取走即可。
当CPU需要向外设写入数据时,CPU一个周期将数据写入接口中,之后IO接口和
外设之间传输数据画多长时间CPU可以不管了,转身做自己的加减乘除了。
1.3 微型计算机的一般工作过程
2.1 8088 微处理器
8088/8086 CPU相对于早期CPU的特点:
1.可以实现指令并行流水线工作方式:通过设置指令预取队列
2.对内存空间进行分段管理:将内存分为4个段并设置地址寄存器,以实现对1MB空间
的寻址(实模式存储器寻址)
3.支持协处理器:协处理器主要用于浮点运算,是否支持协处理器取决于 CPU的工作模式
8088/8086 的两种工作模式:
最小模式:单处理器工作模式,所有控制信号 由微处理器自己来产生
最大模式:主处理器 和 协处理器 协同工作模式,由 总线控制器 将 主处理器的 一部分控制
信号分解 来控制协处理器。
ALE 地址锁存信号 ,当ALE 有效的时候,CPU 发出的 内存地址 就进入了 地址锁存器中,被锁
进去的内存地址 就会呈现 在 地址锁存器的输出端,这个输出端就连接着 外部总线的 地址总线
为什么需要 地址锁存?
一般使用地址锁存都是因为 发出地址信息 的通道 和 发出数据信息 的 通道 其实 是同一个通道
(多路复用)
所以为了 数据信息 不会覆盖掉 之前传输的地址信息 ,将地址信息锁存到了地址锁存器中
最大模式下 添加了总线控制器:
两种工作模式的选择:
注意:MN/MX 是一个引脚,MX上横杠 表示低电平有效 ,也就是说 MN/MX 这个引脚为 低电平
的时候工作 在最大模式下。
2.2 8088 CPU 主要引线及机构
最小模式下,地址总线 一共有20位
其中低八位 称为 AD0-AD7(A:adress,D:data),这些八位 地址信号 和数据信号 是分时复用的,一般
先传送地址信号 后 传送数据信号。这八根线既是地址总线 又是 数据总线。
其中高四位,地址信号 和 状态信号 是分时复用的
注意:8088CPU 的机器字长是16位,也就是说 CPU内部是可以16位数据同时处理的。
但是8088的数据总线只有8位,也就是说16位的数据需要分两次才能从CPU内部传输出去
#号 表示 上横线的意思,即低电平有效。
8088CPU 读和写 可能 针对的是内存 也可能针对的是 IO接口
所以除了读信号 和 写信号,还必须得有一个信号 指明 访问内存 还是 访问 IO接口
10/#M (是一个引脚)M表示Memory #表示当 该引脚为低电平时,CPU访问的是内存
当该引脚 加 高电平的时候,CPU读写的是 IO接口
8088CPU 并不是直接将数据发送给了 数据总线 ,而是先发给了数据收发器
#DEN 是数据收发器的工作信号,低电平时数据收发器开始工作
DT/#R 是 方向控制信号, DT:Direction R:Read
当该引脚为低电平时,数据读入 数据收发器 ,高电平时, 数据收发器 发出数据
READY信号:外部同步控制信号,
正常情况下,CPU访问一次内存 或者IO 接口 需要4个时钟周期(8088一个时钟周期大约0.2个微秒)
这四个时钟周期称为一个总线周期。
因为内存 和IO接口的速度 比 CPU慢很多,所以4个时钟周期内不一定能完成一次 内存 或者接口访问
当不能完成的时候,就需要 向4个时钟周期中增加 时钟周期。
当CPU访问内存或者接口时,CPU就会发出一个访问信号,当达到4个时钟周期中的第三个时钟周期时
CPU就会检查自己的Ready端引脚,如果发现Ready端是高电平,那么它就会送上第四个时钟周期,一次
访存结束。
如果发现Ready端是低电平,CPU就会在第三个时钟周期后面插入若干个时钟周期,让CPU等待
P18
8088的内部结构:
#执行单元
FLAGS 标志寄存器,保存运算结果特征
ALU:指令执行
8个通用寄存器:暂存中间运算结果
#总线接口单元 BIU
主要功能:总而言之,就是访问接口 或者内存用的
1.总线接口单元负责从内存中取指令 到 指令预取队列 队列中,直到指令与取队列填满。
这是BIU 就处于空闲状态了
而执行单元EU 则是不断从 指令预取队列中 取指令进行译码
指令预取队列实现了 EU 和 BIU 的并行流水线
但是因为我们只是预取了指令 而没有 预取数据,所以可能导致 并行流水线断流
2.负责访问内存 或者 访问IO接口
3.如果我们执行的指令是一个跳转指令,很有可能导致指令预取队列中取的指令白取了
进而导致流水线断流。
所以在执行转义程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给
EU执行
#8088 的内部寄存器
一共14个16位的寄存器,可以分为三类:
8个通用寄存器
4个段寄存器
2个控制器寄存器
## 8个通用寄存器:
通用寄存器不论叫什么名字, 不论有什么特殊用法,这些通用寄存器的一级作用都是暂存中间运算结果
- 数据寄存器(AX BX CX DX):一个数据寄存器可以分为两个8位寄存器
- 地址指针寄存器 (SP BP)
- 变址寄存器(SI DI)
### 数据寄存器
数据寄存器的特殊用法:
AX:累加器
所有IO指令 都通过AX 与接口 传送信息;
中间运算结果也多放在AX中
BX:基址寄存器
BX 使用时是非常灵活的,其中可能存放数据 也可能 存放数据在内存中 的地址
CX:计数寄存器
循环次数 一定要 放在CX中;
串操作指令的 计数值 也必须放在CX中
DX:数据寄存器
在输入输出指令(IO指令)中,DX的值一定代表的是IO端口地址
### 地址指针寄存器
SP:
栈指针寄存器,存栈顶的偏移地址
BP:
基址指针寄存器,常用于存 栈中内存单元的偏移地址
BP 和 BX 的区别:
1.作为通用寄存器,两者都可以存数据
2.作为基址寄存器,BX 表示所寻找的数据一定在 数据段 ,而BP则表示所寻找的数据一定在 栈段
### 变址寄存器
SI: 源变址寄存器
DI: 目标变址寄存器
变址寄存器常用来存放数据在内存中的地址
## 控制寄存器
IP 指令指针寄存器 ,其内容为下一条要取的指令的偏移地址
Flags 标志寄存器 ,存放运算结果的特征
6个状态标志位,3个控制标志位
### 状态标志位
注意 最低位为第0位
例题:
### 控制标志位