第一课时
微型计算机系统:微型计算机、外围设备、操作系统
微型计算机:微处理器、存储器、输入输出接口、系统总线
冯诺依曼:存储程序,取指执行
系统总线:
- 数据总线
- 地址总线
- 控制总线
微处理器:运算器、控制器、寄存器
运算器中的操作数一个来自累加器一个来自寄存器
控制器:指令寄存器、指令译码器、控制电路
第二课时
读操作过程
- cpu将地址放在地址总线上,经地址译码器译码后选中内存中相应单位
- cpu通过控制总线发出读信号
- 内存把相应单元的内存放在数据总线上,cpu取走数据
写操作过程
- cpu将地址放在地址总线上,经地址译码器译码后选中内存中相应单位
- cpu把数据放在数据总线上
- cpu通过控制总线发出写信号,内存取出数据并写入。
读写操作顺序不同
微机的工作过程:取指和执行
有些指令包括操作码和操作数,指令对于cpu也是数据,每个操作码占1字节,cpu工作时首先取出操作码,由操作码判断是否需要取出操作数,如果需要取操作数,那么再去内存中取操作数,取操作数是在指令的执行阶段完成的。有的指令只包含操作码,不包含操作数
第二章内容(8086/8088):
- 特点
- 内部结构
- 内部寄存器及功能
- 主存结构和寻址
- 外部引脚
- 最小/最大模式
第三课时
cpu并行执行:取指、译码、执行等过程并行起来,设置指令预取队列,存放预取的指令。即通过指令预取队列来实现并行流水线的工作方式。
将内存分段并设置段地址,以实现对1M空间的寻址。
8086内部结构:EU(执行单元)、BIU(总线接口单元)
BIU:取指、译码、取操作数、总线控制电路,即段寄存器、指令指针寄存器(IP)、地址加法器、指令译码器、指令预取队列
EU:执行指令,即通用寄存器、运算器(ALU)、PSW标志寄存器
物理地址:段地址左移四位+偏移量
寄存器:
- 8个通用寄存器(不用记)
- AX
- BX
- CX
- DX
- SP堆栈指针寄存器
- BP基址指针寄存器
- SI源变址寄存器
- DI目的变址寄存器
- 4个段寄存器(要记住)
- CS
- DS
- SS
- ES
- 2个控制寄存器
- IP指令指针寄存器
- PSW标志寄存器
IP:存放代码段的地址偏移量,和CS共同构成了PC
8086将内存分为4段,每段之间可以重叠
第四课时
用于获得操作数所在地址的方法称为寻址方式,寄存器寻址最快,立即数寻址次之,存储器操作数最慢
-
立即数操作数:操作数在指令中
-
立即寻址
操作数在指令中
-
-
寄存器操作数:操作数在寄存器中
-
寄存器寻址
操作数在寄存器中
-
-
存储器操作数:操作数在存储器中,注意内存中存字,低字节在前高字节在后
-
直接寻址
在指令中指明操作数在存储器中的(数据段)段内地址,用数据外加中括号来表示直接寻址
-
寄存器间接寻址
寄存器中存放的是操作数的地址,寄存器两边也要加上中括号,只允许用SI、DI、BX、BP寄存器存放偏移地址
-
寄存器相对寻址
由寄存器和一个偏移量之和组成操作数的地址
-
基址-变址寻址
一个基址寄存器和一个变址寄存器,他们之和作为地址
-
基址-变址且相对寻址
一个基址寄存器、一个变址寄存器和一个立即数求和作为地址
-
地址转移:指令寻址
- 段内直接寻址
- 段内间接寻址
- 段间直接寻址
- 段间间接寻址
第五课时
8086引脚:知道每个引脚的作用即可,高低电平不用记。书2.2.2
- Vcc/GND:电源/电源地输入引脚
- AD15-AD0:地址/数据复用总线
- A19-A16/S3-S6:高四位地址总线
- CLK、RESET:时钟输入、复位输入
- NMI、INTR:不可屏蔽(上升沿有效)/可屏蔽(高电平有效)中断输入
- MN/MX非:最小模式/最大模式控制输入信号
- BHE非/S7:高字节数据选择信号
- RD非、WR非:读写控制引脚
- READY:准备就绪信号
- TEST:测试信号,WAIT指令时,每5个CLK周期测试一次,测试到低电平则停止等待
- ALE:地址锁存下降沿触发输出信号,接锁存器LE引脚
时序图,要求会画:书2.2.6
- 时钟周期:CLK周期,CPU处理动作的最小时间单位
- 总线周期:存储器读写、IO读写、中断响应,一个总线周期至少包括四个CLK周期
- 指令周期:取值+执行
常用芯片
- 373:8位锁存器
第六课时
-
静态随机读写存储器SRAM
异步、同步
6264芯片:8K*8bit
引脚:
- A0-A12
- D0-D7
- CS1-CS2:片选,用于地址译码
- OE非:读允许
- WE非:写允许
部分地址译码:浪费地址空间(地址重叠)换得简单译码
会使用38译码器设计地址译码电路
第八课时
利用ROM作译码器
利用ROM做地址映射表,如[070H]=1110,然后ROM的数据线连接几个6264的片选引脚,那么就可以使用070H地址选中Q4连接的6164。
ROM译码和38译码器译码二考一
存储器的位扩充:将cpu的A0引脚接入存储器芯片的CS片选引脚,A0决定了地址的奇偶性,这样就实现了奇地址和偶地址的分离,cpu的A0引脚不再接入存储器芯片的地址引脚。偶地址存储器芯片数据引脚接到cpu的D0-D7引脚,奇地址存储器芯片数据引脚接到cpu的D8-D15引脚。使用BHE非引脚控制字读。
第九课时
只读存储器ROM
2764芯片
引脚:
- A12-A0
- D7-D0
- CE非:片选信号
- OE非:读允许
- PGM非:编程允许
动态异步随机读写存储器DRAM(64K*1bit)
每个单元1bit,因此地址空间很大,采用了复用地址引线
- A0-A7先输入行地址,再输入列地址(通过数据选择器来实现)
- RAS非:行地址选中,兼做片选
- CAS非:列地址选中,兼做数据输入允许
- Din/Dout:数据输入/输出
- WE非:写允许
读时序:
- 给行地址
- RAS非置低
- 给列地址
- CAS非置低
- 保持WE非置高
- 输出数据
写时序:
- 给行地址
- RAS非置低
- WE非置低
- 给列地址
- CAS置低
- WE非置低
读变写:读后WE非置换
刷新:由于DRAM使用电容储存信息,电容不能持久保存,需要2-4ms重新写入一下,称为刷新。一次刷新一行的所有列,因此刷新只有行地址没有列地址,因此RAS非置低,CAS非置高
第十一课时
cpu与外设交换的信息分为三类:
- 数据信息
- 状态信息
- 控制信息
IO接口电路包含:
- 数据寄存器
- 状态寄存器
- 控制寄存器
以上三个寄存器统称为IO端口
IO查询方式
-
无条件传送
适合简单的设备如二极管,不用考虑设备的状态,只有一个数据端口
-
程序程序查询方式
D0-D7连接数据端口
STB非连接控制端口,上升沿触发命令外设写入数据
BUSY端口连接状态端口
中断
中断过程:
-
中断请求
分为内中断和外中断
-
中断响应
在每个指令的最后一个时钟周期,检测中断输入端,且中断允许打开(PSW的IF位),则发送一个INTA非信号响应中断。一旦进入中断处理,立刻清除中断请求信号避免一个中断请求被cpu多次处理。
1.断点保护:(由硬件完成速度快)
- 将PSW的内容压入堆栈
- 自动关中断:IF=0,TF=0
- 将CS压栈
- 将IP压栈
2.中断源识别
3.获得中断服务程序
-
中断处理
- 保护现场(软件完成)
- 开中断:允许中断嵌套
- 进行中断处理
- 关中断
- 恢复现场
- 中断返回(开中断等)
中断返回
第十二课时
8086与中断有关的引脚:NMI(不可屏蔽)、INTR、INTA非
每个中断源有一个与之对应的中断类型(向量)码。
软件中断向量码由指令给出,可屏蔽中断向量码由PIC给出。
cpu响应INTR中断需要两个总线周期,第一个总线周期INTA非置低,告诉PIC已经处理该终端,第二个总线周期再次将INTA非置低,请求PIC在D0-D7数据引脚给出中断向量码。
中断向量表:中断向量码到处理程序地址的映射,n*4存的是IP,n*4+2的是CS
中断优先级:
- 内部中断
- NMI
- INTR
- 单步中断
中断控制器8259(PIC)
可对8个中断源实现优先级控制,可扩展至64个。
中断请求寄存器IRR(IR0-IR7,有请求的置1,下同)
中断服务寄存器ISR
中断屏蔽寄存器IMR
一般全嵌套:同优先级不响应
特殊全嵌套:同优先级响应,用于级联中的主片
第十三课时
级联8259的中断向量码发送:
- 从片发送INT
- 主片收到IR3请求
- 主片发送INT给cpu
- cpu发送INTA非给主片,但从片也能收到
- 主片通过CAS2-0引脚发送011,命中从片
- cpu发送第二个INTA非
- 从片发送中断向量码
cpu对8259的控制:
-
初始化命令字
ICW1-ICW4
-
操作命令字
OCW1-OCW3
初始化时,依次写入ICW1-ICW4,其中如果不是级联模式,则不需要写入ICW3
ICW2即写入中断向量码,D7-D3写入中断向量码高5位,低3位由IR序号构成
ICW3写入级联控制字,对于主片,D7-D0相应位=1表示改为连接从片;对于从片,D2-D0标识码表示了该从片连接到主片的那个IR引脚上。
OCW1中断屏蔽字,将D7-D0写入IMR,屏蔽置1的中断