微机与接口技术笔记(1)
记录一下书本的知识点、练习题、课后题
8086处理器参数
16根数据线、20根地址线,寻址范围:2^20 = 1MB,内部总线和ALU为16位,可以进行8位和16位操作。按照功能分为执行部件EU(Execution Unit) 和 总线接口BIU(Bus Interface Unit) 。
执行部件EU
由4个通用寄存器(AX、BX、CX、DX)、4个专用寄存器(SP、BP、DI、SI)、1个16位算术逻辑单元ALU、1个16位标志寄存器PSW、1个数据暂存寄存器和EU控制电路。
通用寄存器 | 用途 |
---|---|
AX(Accumulator) | 字乘法,字除法,字I/O |
AL | 字节乘,字节除,字节I/O,十进制算术运算 |
AH | 字节乘,字节除 |
BX (Base) | 转移 |
CX(Count) | 串操作,循环次数 |
CL | 变量移位,循环控制 |
DX (Data) | 字节乘,字节除,间接I/O |
指针寄存器: SP(Stack Pointer)为堆栈指针寄存器,和SS一起确定堆栈在内存的位置;BP(Base Pointer)为基数指针寄存器,通常用于存放基地址
变址寄存器: SI(Source Index)为源变址寄存器,DI(Destination Index)是目的变址寄存器
标志寄存器 | 意义 |
---|---|
CF(Carry FLag) 进位标志(第 0 位) |
进位标志是用来反映计算时是否产生了由低位向高位的进位,或者产生了从高位到低位的借位 。1有进借位。 |
PF(Parity FLag) 奇偶标志(第 2 位) |
运算结果低8位中 1 的个数是否为偶数 。 |
AF(Auxiliary Carry FLag) 半进位标志(第 4 位) |
字节加法时低四位向高四位进位或减法时低四位向高四位借位时置1。用于BCD算术运算结果调整。 |
ZF(Zero FLag) 零标志(第 6 位) |
运算结果为0置1,否则清零 |
SF(Sign FLag) 符号标志(第 7 位) |
运算结果最高位是否为1(或者说结果为负),置1否则清零 |
TF(Trap FLag) 追踪标志(第 8 位) |
追踪标志,主要是用于调试时使用 。1为CPU进入单步方式 |
IF(Interrupt-Enable FLag) 中断允许标志(第 9 位) |
中断允许标志,其决定CPU是否能够响应外部可屏蔽中断请求,1为CPU能够响应外部的可屏蔽中断请求 |
DF(Direction FLag) 方向标志(第 10 位) |
方向标志,其用于在串处理指令中,用来控制每次操作后SI和DI是自增还是自减。0为自加1为自减 |
OF(OverFlow FLag) 溢出标志(第 11 位) |
溢出标志,其通常记录了有符号数运算的结果是否发生了溢出 。发生溢出置1 |


总线接口部件BIU
指针寄存器IP: 16位,用于控制CPU指令执行顺序,顺序执行程序时,CPU完成取指令,IP+1,指向下一个要读取的指令。
段寄存器:
- CS (Code Segment):代码段寄存器
- DS (Data Segment):数据段寄存器
- SS (Stack Segment):堆栈段寄存器
- ES (Extra Segment):附加段寄存器
通常CS划定并控制程序区,DS和ES控制数据区,SS控制堆栈区
20位地址加法器:用来产生20位物理地址,物理地址=CS(16进制)左移一位+IP,如:CS=2000H,IP=0400H,物理地址为20400H
BIU和EU按照流水线技术原理协调工作
8086储存的管理
8086有20条地址总线,最大寻址空间为:2^20B = 1MB。从00000H到0FFFFFH。寄存器只有16位,为了取得20位地址要使用下面方法。
存储器分段
因为8086内部寄存器是16位的,能寻址的内存空间只能是64KB,所以8086系统采用了地址分段的方法,将1M空间分成4段,每段最多64KB,在段内寻址仍可采用传统的16位地址寻址方法。每个段的起始地址低4位必须为0,高16位放在16位的段寄存器内,这高16位地址称为段基址。
段寄存器分别为CS、DS、SS和ES,段基址存放在这4个段寄存器内。
20位物理地址的产生
8086规定每个段的段起始地址必须能被16整除,其特征是20位段起始地址的最低4位为0(用16进制表示为××××0H)。
段基址可确定某个段在内存中的起始位置,而段中某个单元在该段中的位置则可由该单元在段内相对于段起始地址的偏移量来决定,称为偏移地址,也是16位。
也就是说,内存中某单元的位置可用16位的段基址和16位的偏移地址确定。 计算公式为:20位物理地址=16位段地址×16+16位偏移地址。
段的分配
在对存储器进行操作时,内存一般可分成4个段,分别称为代码段、数据段、堆栈段和附加数据段,每个段存放不同性质的数据,进行不同的操作。
代码段:存放指令。
堆栈段:程序的堆栈区(子程序调用、系统功能调用、中断处理等操作使用)或作为临时数据存储区。
数据段:存放程序所使用的数据。
附加数据段:辅助的数据区(串操作指令使用)。
4个逻辑段的段基址分别放在相应的代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES中,由这4个段寄存器来指明每个段在内存中的起始地址。
例如:设当前有效的代码段、数据段、堆栈段、附加段的段地址分别为1066H、251BH、900CH、F001H,则各段在内存中的分配情况如图所示。

4个段可分配在1MB的任何地方,段与段间可重叠或不重叠、可连续排列、断续排列。尽管CPU在某一时刻最多只能同时访问4个段,但用户在程序中可根据需要定义多个这样的段。若CPU要访问4个段以外的其他段,只要改变相应段寄存器的内容即可。
8086存储区的分配
- 00000H~003FFH共1KB区域用来存放中断矢量,这一区域称为中断矢量表。中断矢量表的定义和作用参阅中断一章的有关内容。
- B0000H~B0F9FH是单色显示器的显示缓冲区,存放单色显示器当前屏幕显示字符所对应的ASCII码和属性。
- B8000H~BBF3FH约16KB是彩色显示器的显示缓冲区,存放彩色显示器当前屏幕像点所对应的代码。
- FFFF0H~FFFFFH共16个单元,一般用来存放一条无条件转移指令,转到系统的初始化程序。这是因为系统加电或者复位时,会自动转到FFFF0H执行。
8086引脚功能
8086CPU引脚
两种工作方式相同的引脚:
- AD15~AD0(address databus):地址/数据总线,双向,三态。这是一组采用分时的方法传送地址或数据的复用引脚。根据不同时钟周期的要求,决定当前是传送要访问的存储单元或I/O端口的低16位地址,还是传送16位数据,或是处于高阻状态。
- A19/S6~A16/S3(address/status):地址/状态信号,输出,三态。这是采用分时的方法传送地址或状态的复用引脚。其中A19~A16为20位地址总线的高4位地址,S6~S3是状态信号。S6表示CPU与总线连接的情况,S5指示当前中断允许标志IF的状态。S4,S3的代码组合用来指明当前正在使用的段寄存器。S4,S3的代码组合及对应段寄存器的情况。
- BHE(低)/S7(bushighenable/status):允许总线高8位数据传送/状态信号,输出,三态。为总线高8位数据允许信号,当低电平有效时,表明在高8位数据总线D15~D8上传送1个字节的数据。S7为设备的状态信号。
- RD/(read):读信号,输出,三态,低电平有效。
- READY(22脚):准备就绪信号,输入,高电平有效。当READY=1时,表示CPU访问的存储器或I/O端口已准备好传送数据。若CPU在总线周期T3状态检测到READY信号为低电平,表示存储器或I/O设备尚未准备就绪,CPU自动插入一个或多个等待状态TW,直到READY信号变为高电平为止。
- INTR(18脚):可屏蔽请求信号,输入,电平触发,高电平有效。当INTR=1时,表示外设向CPU发出中断请求,CPU在当前指令周期的最后一个T状态去采样该信号,若此时中断允许标志IF=1,则CPU响应中断,停止执行原指令序列,转去执行中断服务程序。
- RESET(21脚):复位信号,输入,高电平有效。RESET信号至少要保持4个时钟周期。CPU接到RESET信号后,停止进行操作,并将标志寄存器、IP、DS、SS、ES及指令队列清零,将CS设置为FFFFH。当复位信号为低电平时,CPU从FFFF0H开始执行程序。
- CLK(19脚):主时钟信号,输入。8086要求时钟信号的占空比为33%,即1/3周期为高电平,2/3周期为低电平。8086的时钟频率要求为5MHz,8086-1的时钟频率为10MHz,8086-2的时钟频率为8MHz。不同型号的芯片使用的时钟频率不同。
- VCC(40脚):电源输入引脚。
- GND(1、20脚):接地引脚。
- MN/(33脚):最小/最大模式输入控制信号。
最小模式和最大模式
8086/8088可以在两种工作模式下工作,即最小模式和最大模式。
- 最小模式--即系统中只有8086一个微处理器。最小模式是单处理器系统。系统中所需要的控制信号全部由8086CPU本身直接提供。还需要地址锁存缓冲器、双向数据缓冲器、8284A时钟发生器。
- 最大模式--系统中有两个或两个以上的微处理器,即除了主处理器8086以外,还有协处理器(8087算术协处理器或8089输入/输出协处理器)、地址锁存缓冲器、双向数据缓冲器、8284A时钟发生器、总线控制器8288。最大模式可构成多处理器系统,系统中所需要的控制信号由总线控制器8288提供。
最大模式是相对最小模式而言的。最大模式用在中等规模的或者大型的8086/8088系统中。在最大模式系统中,总是包含有两个或多个微处理器,其中一个主处理器就是8086或者8088,其他的处理器称为协处理器,它们是协助主处理器工作的。
8087是一种专用于数值运算的处理器,它能实现多种类型的数值操作,比如高精度的整数和浮点运算,也可以进行超越函数(如三角函数、对数函数)的计算。
CPU工作模式的选择是由硬件决定的,将8086/8088的第33号(MN/MX)引脚接地,则工作于最大模式,第33号引脚接高电平,则工作于最小模式。8086CPU有8条引腿(第24号~31号)在两种不同工作模式中具有不同的功能。
最小模式下的典型配置
- N/MX端接+5V,决定了CPU的工作模式。
- 用一片8284A,作为时钟信号发生器。
- 用三片8282或74LS273,作为地址信号的锁存器。
- 当系统中所连的存储器和外设端口较多时,需要增加数据总线的驱动能力,这时,需用2片74LS245或8286/8287作为总线收发器。
最大模式下的典型配置
最大模式和最小模式在配置上的主要差别: 在最大模式下,要用8288总线控制器来对CPU发出的控制信号进行变换和组合,以得到对存储器或I/O 端口的读/写信号和对锁存器8282及总线收发器8286的控制信号。
原因在于:在最大模式的系统中,一般包含2个或多个处理器,这样就要解决主处理器和协处理器之间的协调工作,和对系统总线的共享控制问题,8288总线控制器就起了这个作用。
在最大模式的系统中,一般还有中断优先级管理部件8259A。8259A用以对多个中断源进行中断优先级的管理,但如果中断源不多,也可以不用中断优先级管理部件。
8086总线的操作时序
时序基本概念
指令周期
指令周期指CPU从内存取出一条指令并执行这条指令的时间总和。一般由若干个机器周期组成,是从取指令、分析取数到执行完所需的全部时间。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
总线周期
把CPU通过总线与内存或I/O端口之间,进行一个字节数据交换所进行的操作,称为一次总线操作,相应于某个总线操作的时间即为总线周期。
时钟周期
微机系统工作的最小时间单元,取决于系统的主频率,系统完成任何操作所需要的时间,均是时钟周期的整数倍。时钟周期又称为T状态。
基本定时脉冲是由外部振荡器产生的,通过CPU的CLK输入端输入,基本定时脉冲的频率,我们称之为系统的主频率。例如8086CPU的主频率是5MHz,其时钟周期为200ns(1/f)。
一个最基本的总线周期是由4个时钟周期(T状态)组成,也称为4个状态,即T1、T2、T3和T4,在每个T状态下,CPU完成不同的动作。
8086时序分析
系统复位和启动操作
当CPU通过RESET引脚接收到有效的RESET信号且至少维持4个时钟周期,不管之前在执行什么动作,只要正常供电,8086就结束现行操作,进入复位状态,直到RESET信号失效。在复位状态下,CPU内部的各寄存器被置为缺省值(段寄存器CS和指令指针IP分别被初始化为FFFFH和0000H)。

因此,8086 CPU复位后重新启动,执行的第一条指令所在存储单元的物理地址为FFFFH×16+0000H=FFFF0H。
最小模式下的典型时序
一个最基本的读周期包含4个状态,即T1、T2、T3、T4,当慢速设备在3个时钟周期(T)内无法完成数据传输时插入TW,插入TW的多少取决于数据传输的快慢。
……
练习题
- 微机系统由
硬件系统
和软件系统
两部分组成。 - 8086有
20
位地址线,存储器容量为1M
B。 - 8086CPU内部组成结构从功能上讲,可分为
BIU
和EU
两部分。 - 8086的四个段寄存器为
DS
、ES
、SS
、CS
。 - 用来存放指令地址的寄存器是
IP
。 - 8086的16位标志寄存器中OF=1表示运算结果
溢出
,ZF=1表示运算结果为0
。 - 8086的16位标志寄存器中IF=1表示CPU
允许
中断,TF=1表示CPU进入单步
工作方式。 - 地址4000H:0300H,其物理地址是
40300H
,段地址是4000H
,偏移地址是0300H
。 - 8086存储器管理采用
分段管理
技术。
课后习题
总线接口部件(BIU)中包含哪些部件?执行部件(EU)中包含哪些部件?
答:EU由4个通用寄存器:AX、BX、CX、DX,4个专用寄存器:SP、BP、SI、DI,一个16位通用寄存器,一个16位状态寄存器PSW,1 个数据暂存寄存器和 EU 控制电路等组成。
BIU由一个16位段寄存器:DS、CS、ES、SS,一个16位指令指针寄存器IP,20位地址加法器和6 字节指令队列缓冲器组成。设段地址为 4ABFH,物理地址为 50000H,求有效地址是什么?
答:有效地址为物理地址减去左移一位的段地址,即50000H-4ABF0H=5410H8086CPU 读写总线周期各包含多少个时钟周期?什么情况下需要插入 TW 周期?插入多少个 TW 取决于什么因素?
答:(1)在最小和最大配置下,读和写的总线周期都为4个,分别是T1、T2、T3、T4.
(2)当储存器或者I/O设备的速度慢时,会通过READY线通知CPU,CPU会在T3时检测READY,如果是0则插入或者多个TW周期,并且在每个TW周期检测READY,如果恢复为1则推出TW状态。
(3)取决于I/O设备是否将READY设置为1什么是指令周期?什么是总线周期?什么是时钟周期?它们之间的关系如何?
答:指令周期是 CPU 从内存取出一条指令并执行完毕指令所需要的时间;
CPU通过总线和内存或I/O端进行一个数据交换所进行的操作成为总线操作,对应的某个总线操作的时间为总线周期;
时钟周期是 CPU 进行操作的最小单位,是由系统的时钟频率决定的,又称为T状态。
关系:一般一个指令周期由几个总线周期组成,一个最基本的总线周期至少包含 4 个时钟周期。