目录
微型计算机基础
一、基础
微型计算机与大、中、小型计算机的区别在于其中央处理器(CPU)是集成在一块硅片上的,简称微型计算机的CPU芯片为微处理器(MPU)
微处理器是计算机的核心部件
微型计算机特点:
- 体积小、重量轻、功耗低
- 可靠性高、使用环境要求低
- 结构简单、系统设计灵活、适应性强、使用方便
- 软件配置丰富
- 性能价格比高
微型计算机系统包括硬件系统和软件系统两大部分。
硬件系统包括:主机和外部设备
软件系统包括:系统软件和应用软件
主机:以微处理器为基础,配以内存储器及输入输出(I/O)接口电路和相应的辅助电路而构成的裸机,即构成微机主板。
8086是16位的微处理器。
8086CPU的内存地址空间为1MB。
8086CPU内部结构按功能分为两部分,即BIU和EU。
8086/8088微处理器的CX寄存器可以用作8位或16位寄存器。
术语8086BIU部分的是 CS、IP、SS、DS
在8086微机系统中,完成对指令译码操作功能的部件是EU。
8088CPU与主板其他部件连接时的数据总线有8位
计算机硬件由五个基本部分组成:
- 运算器(ALU):完成算术运算和逻辑运算
- 控制器(CU):基本功能是从内存取指令和执行指令(一般由指令寄存器、指令译码器、时序电路和控制电路组成
- CPU:将运算器和控制器统称为中央处理器
- 存储器:主要功能是存放程序和数据
- 输入设备:数字化仪、条形码阅读器
- 输出设备:打印机、绘图仪
专业术语:
- 位:位是计算机所能标示的最基本最小的数据单位。它只有两种状态”0“和”1“,即二进制位。
- 字:计算机中作为一个整体参与运算、处理和传送的一串二进制数,是计算机中信息的基本单位。
- 字长:计算机中每个字所包含的二进制位数称为字长。字长通常等于数据总线的位数和通用寄存器的位数。
- 字节:8位二进制称为一个字节。
- 指令:指挥计算机进行基本操作的命令。
- 指令系统:计算机所能执行的全部指令的集合称为计算机的指令系统。
- 程序:完成某一任务的指令(或语句)的有序集合称为程序。
技术指标:
- CPU类型:指微型计算机系统所采用的CPU芯片型号
- 字长:指CPU一次可以同时传送和处理的二进制数码的位数,通常8、16、32、64位等。
- 主频:计算机的时钟频率,是指CPU单位时间(秒)内发出的脉冲数,一般用吉赫(GHz)为单位。
- 内存容量:指内(主)存储器可容纳二进制信息的总量,一般以字节(B)来表示。(1024B=1KB 1024KB=1MB 1024MB=1GB 1B=8b 1024=2的10次方
- 运算速度:一般用每秒钟所能执行的指令条数来表示,并以MIPS(百万条指令/秒)作为计量单位。
- 存取周期:存储器进行一次读出或写入操作所需的时间称为存取周期,通常用纳秒(ns)表示。(1s =1000ms(毫秒) 1ms=1000us(微秒) 1us=1000ns(纳秒)
三态门:
基本逻辑门电路:
基本逻辑运算:
机器数的范围:由计算机的CPU字长来决定。
机器数的符号:0为正数,1为负数
溢出判断:两正数加,得负数,为上溢
两负数加,得正数,为下溢
8位二进制数得原码的表示范围-128~127.
将-33以但符号位补码形式存入8位寄存器中,寄存器中的内容为DFH。
将微处理器、内存储器及I/O接口连接起来的总线是系统总线。
总线按位置分:片内总线、系统总线、外部总线
片内总线:指一个芯片内部的,例如微处理器内部的运算器和寄存器之间的连线
外部总线:CPU与其他外部设备的连接
二、微处理器简介
8086CPU:
- 16位微处理器
- 16根数据线
- 20根地址线
8088CPU:准16位微处理器
- 内部寄存器、运算部件及内部操作按16位
- 对外数据总线位8位
- 在处理一个16位数据时,8088需要两个步骤
8086的功能结构
总线接口部件(BIU)
功能:
- 从内存取指令送到指令队列
- 配合指令部件从指定的内存单元或外设端口取数据,或将数据送到指定的内存单元或者外设端口。
组成:
- 4个段寄存器:CS、DS、ES、SS
- 16位指令指针寄存器IP:存放即将要执行指令的地址
- 20位地址加法器
- 6字节指令队列
执行部件(EU)
功能:
- 从指令队列中取指令
- 对指令进行译码,发出相应的控制信号
- 接口由总线接口部件送来的数据,或把数据传送到总线接口部件
- 进行算数运算
组成:
- 4个通用寄存器:AX(AH,AL)、BX()、CX、DX
- 专用寄存器:BP、SP、SI、DI
- ALU
- 数据暂存寄存器
- EU控制电路
- 标志寄存器
内部寄存器
通用寄存器:通用数据寄存器
指针和变址寄存器
通用数据寄存器:
- 累加器AX:用于产生20位物理地址
- 基址寄存器BX
- 计数寄存器CX
- 数据寄存器DX
指针和变址寄存器:
- 堆栈指针寄存器SP
- 基址指针寄存器BP
- 源变址寄存器SI
- 目的变址寄存器DI
段寄存器:用于存放段地址的寄存器称为段寄存器。
- 代码段寄存器CS:用来给出当前的代码段起始地址,存放CPU可以执行的指令,CPU执行的指令将从代码段取得。
- 数据段寄存器DS :指向程序当前使用得数据段,用来存放数据,包括参加运算的操作数和中间结果。
- 堆栈段寄存器SS:给出程序当前所使用的堆栈段,即在寄存器中开辟的堆栈区,堆栈操作的执行地址就在该段。
- 附加段寄存器ES:指出程序当前所使用的附加段,通常也用来存放数据,典型用法是存放处理后的数据。
控制寄存器:
- 指令指针寄存器IP:又称程序计数器,是16位寄存器。
- 标志寄存器FLAG
标志寄存器(FLAG)共有16位,其中7位未用。
1.条件标志
共6位,用于寄存程序运行的状态信息,这些标志往往用作后续指令判断的一句。
- CF进位标志:反映在运算结果的最高位有无进位或借位。
- PF奇偶标志:反映运算结果中,”1“的个数的奇偶性,主要用于判断数据传送过程中是否出错。
- AF辅助进位位:加减运算时,若D3向D4产生了进位或借位则AF=1。否则AF=0.在BCD码运算时,该标志用于十进制调整。
- ZF零标志:反映计算机结果是否为0。若结果为0则ZF=1,否则ZF=0
- SF符号标志:反映计算结果的最高位即符号位的状态。如果运算结果的最高位为1,则SF=1,否则SF=0
- OF溢出标志:反映运算结果是否超出了带符号的表数范围
2.控制标志
共3位,用于控制机器或程序的某些运行过程。
- DF方向标志:用于串处理指令中控制串处理的方向
- IF中断允许标志:用于控制CPU是否允许相应可屏蔽中断请求
- TF陷阱标志:用于单步操作
指令队列缓冲器:是一个能与CPU速度相匹配的高速缓冲寄存器。
总线控制逻辑:是CPU外部三总线(AB、DB、CB)的控制电路,它控制CPU与其他部件交换数据、地址、状态及控制信息。
8086有两种功能工作模式
最小模式:是指系统中只有一个微处理器(8086).在这种系统中,8086直接产生所有的总线控制信号,系统所需的外加总线控制逻辑部件最少。
最大模式:是指系统中含有两个或多个微处理器,其中一个位主处理器8086,其他的处理器称为协处理器,是协助主处理器工作的,在最大模式工作时,控制信号是通过8288总线控制器提供的。
在最小模式和最大模式下的通用引脚:
- GND(地)和Vcc电源,Vcc引脚+5V电源,GND引脚接地。
- AD15~AD0地址/数据复用引脚,双向,三态。
- A19/S6~A16/S3地址/状态复用引脚,输出,三态。
- BHE/S7高8位数据允许/状态复用引脚,输出,三态。
- .NMI:非屏蔽中断请求引脚,输入
- INTR:可屏蔽中断请求引脚,输入、高电平有效。
- RD读信号,输出、三态、低电平有效。
- CLK:时钟输入引脚
- RESET:复位引脚,输入、高电平有效
- READY:准备好引脚,输入、高电平有效
- IEST:测试引脚,输入、低电平有效
- MN/MX最小/最大模式控制引脚,输入。
- M/IO:存储器或I/O端口访问信号,三态输出
- WR:写信号,低电平有效。
最小模式引脚功能:
- M/IO:写信号,三态输出,低电平有效。当低电平有效时,表示CPU正在进行写存储器或I/O端口的操作。
- W/R:存储器或I/O端口的访问信息,三态输出,高电平有效。=1时,表示CPU当前正在访问存储器;=0时,表示CPU正在访问I/O
- INTA:中断响应信号,输出,低电平有效。表示CPU响应了外部发来的信号,在中断响应总线周期,可用来做读选通信号
- ALE:地址锁存与信号,输出,高电平有效,在最小迷失系统中用来做地址锁存器8288/8283的片选信号
- DT/R:数据发送/接受控制信号,三态输出。在最小模式下用来控制总线收发器8286/8287的数据传送方向,当CPU输出(写)数据到存储器或I/O端口时,输出高电平;当CPU输入(读)数据时,输出低电平。
- DEX:数据允许信号,三态输出,低电平有效.当CPU访问存储器或I/O端口的总线周期的后一段时间内和中断响应周期,此信号低电平有效,被用作为总线收发器8288/8287的选通控制信号。在DMA方式时,为悬空状态
- HOLD:总线请求信号,输入,高电平有效。在最小模式系统中,当其他部件要求占用总线时,可通过对此引脚施加一个高电平总线请求信号,向CPU请求使用总线。
- HLDA:总线请求响应信号,输出,高电平有效。CPU一旦检测到有HOLD请求时,就在当前总线周期结束时,使HLDA有效,表示响应这一总线请求,并立即让出总线使用权,CPU中指令执行部件(EU)可继续工作到下次要求使用总线位置,一直到HOLD无效。CPU才能HLDA置为无效,并收回对总线的使用权,继续操作
最小模式下总线时序
- 基本概念:从取指令到指令执行完毕所需要的时间称为指令周期
- 指令周期是由一个个基本总线周期构成。
- 总线周期是指CPU从存储器或I/O端口存取一个字节(或一个字)所需的时间。
- 8086CPU为了与存储器及外设端口交换数据,需要执行一个总线周期,这就是总线操作。
- 按照数据传送方向来分,总线操作可以分为总线读操作和总线写操作。总线读操作是指CPU从存储器或外设端口读取数据;总线写操作是指CPU将数据写入存储器或外设端口。总线完成读操作和写操作的工作,需要CPU的总线接口部件执行一个总线周期。
- 8086中,一个最基本的总线周期由4个时钟周期组成。每个时钟周期称为T状态。用T1、T2、T3和T4表示。时钟周期是CPU的基本时间计量单位,由计算机主频决定,由于8086的时钟频率为5MHz,故其时钟周期为0.2us.
T1:CPU向多路复用总线上发送地址信息,指出要寻址的内存地址或I/O端口地址。
T2:CPU从总线上撤销地址,使总线低16呈现高阻状态,为数据传输作准备。
T3:总线低16位上出现CPU要写出的数据或准备读入的数据。
T4:总线周期结束,若为总线周期则在T4前沿将数据读入CPU
第二行、三行字修改为:字节
时钟发生器8284A:是Intel公司专为8086设计的时钟信号发生器,除提供恒定的时钟信号外,还对外界输入的就绪信号RDY和复位信号进行同步。
地址锁存器:8086系统中使用8282(8283)作为地址锁存器,它是带三态缓冲器的8位通用数据锁存器,可用于数据的锁存、缓冲或信号的多路输出。
数据收发器:8286是为数据总线接口设计的三态输出8位双向数据缓冲器。
最大模式引脚功能:
- S2、S1、S0:总线周期状态信号,三态输出,用来指示当前总线周期所进行的操作类型。它们经 由总线控制器8288进行译码,产生相应的访问存储器或I/O端口的总线控制信号。
- RQ/GTq 和RQ/GT1:总线请求输入/总线请求允许输入出信号,双向,低电平有效。为8086和其他处理器使用总线时提供一种仲裁电路,以代替最小模式下的HOLD/HLDA 两种信号的功能。和是专门为多处理器系统而设计的。 输入时表示其他处理器向CPU请求使用总线;输入出时表示CPU对总线请求的响应信号,两天线可同时与两个处理器相连,内部保证它们有较高优先级。
- LOCK:封锁信号,三态输出,低电平有效,信号有效时,表明此时CPU 不允许其他系统总线控制器占用总线。
- QS1、QS0:指令队列状态,输出。QS1和QS0两个信号组合起来可指示BIU中指令队列的状态,以提供一种让其他处理器监视CPU中指令队列状态的手段。
在最大工作模式下,需要增加一个总线控制器及总线仲裁控制器。
8288:总线控制器
8289:总线仲裁控制器
当M/IO=1,W/R=1时,微处理器完成的操作时存储器写。
8086在最小模式下,分时使用AD0~AD15,所以必须外接地址锁存器,当总线上为地址信息时,通过(ALE)及那个地址送入地址锁存器。
当8086CPU采样到READY=0,则CPU将插入等待周期
8086的空闲周期Ti发生在T4后
8086中的BIU中有一个16位的指令指针寄存器、20位的地址加法器。
8088/8086中断系统
- 所谓”中段“是指CPU在正常执行程序的过程中,由于内部/外部事件或由程序的预先安排,引起CPU暂时中断当前程序的运行而转去执行为内部/外部事件或预先安排的事件服务的子程序,待中断服务子程序执行完毕后,CPU再返回到暂停处(断点)继续执行与原来的程序,这一过程称为中断,中断具有随机性。
- 中断源:引起中断的事件
- 分为:硬件中断(外部中断),软件中断(内部中断)
- NMI:不可屏蔽中断请求
- INTR:可屏蔽中断请求。若干个可屏蔽中断请求由中断控制系统8259A来控制
硬件中断
- 由外部硬件触发
- 可分为:可屏蔽中断(INTR)、非屏蔽中断(NMI)
- 非屏蔽中断的中断号为2,不受IF标志影响。
软件中断
- 分母为零中断(INT 0):优先级最高的内部中断
- 单步中断(INT 1)
- 溢出中断(INT 4)
- 断点中断(INT 3)
- 指令中断(INT N),用户定义的双字节中断指令,第一个字节为操作码,第二个字节N是中断类型号
中断类型号:给每个中断源一个标号
中断向量
- 中断向量即中断源的识别标志
- 用来存放中断服务程序的入口地址或跳转到中断服务程序的入口地址
- 8086可以处理256种中断向量,每种中断都指定一个中断类型号代码(0~255),每一个中断类型号都可以与一个中断服务程序相对应
- 2个高字节单元存放入口的段地址CS,2个低缔结存放入口的偏移量IP
中断向量表
- 中断向量表是存放中断服务程序入口地址(即”中断向量“)的表格。
- 它存放在存储器的最低地址区,每4个字节存放一个中断服务程序的入口地址。
- 由于要存放256个中断服务程序的入口地址,所以要占用1024个字节(1KB),地址号为00000H~003FFH。较高地址的两个字节存放中断程序入口的段基址CS,较低地址的两个字节放入口地址的段内偏移量IP,这4个单元的最低地址称为向量地址。
根据中断类型号寻找中断向量
- CPU获得中断类型号n之后,通过乘4即可取得中断向量表中对应的入口地址,然后把向量表n*4地址开始的两个低字节单元的内容装入IP寄存器,即:IP =(n*4 :n*4+1)
- 再把两个高字节单元内容装入代码寄存器CS,即:CS = (n*4+2 :n*4+3 )
- 8086在响应中断以后,先将标志寄存器压入堆栈,然后将执行一个与段间间接调用CALL指令相当的过程来启动一个中断过程,该过程中,CPU将CS和IP压入堆栈,以保存断点的地址,然后将中断向量表中相应的4个字节内容放入IP和CS,使控制转向该中断服务子程序。如果n个中断请求同时到达 ,则CPU将按优先级顺序来调用中断过程。
中断优先级和中断嵌套
- 中断优先级:根据中断源要求的轻重缓急,排好中断处理的优先次序,即优先级,先响应优先级最高的中断请求。
- 优先级顺序:内部中断(除法出错、溢出、指令中断) 不可屏蔽中断 可屏蔽中断 单步中断
- 中断嵌套:当CPU执行优先级较低的中断服务程序时,允许响应比它优先级高的中断源请求中断,而挂起正在处理的中断,这就是中断嵌套或称多重中断,此时,CPU暂时中断正在进行着的级别较低的中断服务程序,优先级别高的中断服务,待优先级高的中断服务结束后,再返回到刚才被中断的较低优先级的那一级,继续为它进行中断服务。
中断处理过程
一个完整的中断过程一般经历五个步骤:
- 中断请求
- 中断优先级判定
- 中断响应:如果允许CPU响应(IF=1),则CPU自动完成一下工作
- 取中断类型号
- 标志寄存器入栈(执行1个总线周期,将PSW的内容压入堆栈)
- 清除IF和TF标志(IF=0 TF=0)
- CS和IP入栈(断点)
- 获取中断向量
- 中断处理
- 中断返回
中断响应操作时序
- 中断响应周期:从CPU中止现行程序转到中断服务程序这一过程。
- 中断响应周期要用两个总线周期
- 在中断系统中,中断类型号是在中断响应信号的作用下送往CPU的。
- 响应NMI请求的必要条件是一条指令结束。
- 若8086系统某中断类型码是46H,则中断向量的逻辑地址是0000H: 0118H (段基址:偏移量4n)
- 若中断服务程序入口地址为0AB0H:0C00H,则其向量表对应的4个单元的数值依次为多少?(00H,0CH,0BH,0AH )
- 中断向量是中断服务程序的入口地址每个中断向量占 4字节。INTEL8086中将对应256类中断的中断向量组成一张中断向量表 ,占据内存从00000H 到003FFH 区间。
- 指令周期,总线周期和时钟周期三者的关系怎样?(执行一条指令所需要的事件为指令周期,不同指令的指令周期是不等长的。总线周期是CPU与外设或存储器进行一次读写操作所需要的时间为总线周期;时钟周期是指时钟脉冲的重复周期,是CPU的时间基准,由计算机的主频决定。一个指令周期通常由一个或若干总线周期组成;对8086/8088而言,一个总线周期至少需要4个时钟周期。)
- 如果在存储器读周期时,存储器的速度较慢,无法与CPU匹配应采取什么措施?(如果存储器的存取速度较慢,可设计一个等待电路向CPU发出请求延长总线周期的READY信号,CPU接到信号后就在T3和T4之间插入若干个等待周期TW)