《微机原理04_1x》由会员分享,可在线阅读,更多相关《微机原理04_1x(59页珍藏版)》请在金锄头文库上搜索。
1、第四章 8X86微处理器和指令系统主要内容第1节 8086处理器第2节 80386/486处理器第3节 寻址方式和指令系统第1节 8086处理器一8086处理器结构特点流水处理 一存贮器分段8086处理器结构框图总线接口部件BIU nBIU的功能:形成访问存储器的物理地址(由地址加法器完成);访问存储器取得指令,暂存到指令队列中等待执行;访问存储器或I/O端口以读取操作数参与EU运算,或存放运算结果等 ;产生外部总线的各种控制信号。nBIU内部有一个6字节的指令队列。一旦指令队列中空出2个字节,BIU将自动进行读指令的操作以填满指令队列。nBIU内部总线控制电路将CPU的内部总线与CPU引脚所
2、连接的外部总线相连指令执行部件EU nEU的功能是执行指令。一般情况下, 指令按照它存放的先后次序顺序 执行,EU从指令队列中源源不断地取得指令代码,满负荷地连续执行 指令。nEU中的算术逻辑运算单元ALU可完成16位或8位的二进制运算,运算 结果通过内部总线送到通用寄存器,或者送往BIU的内部寄存器中,等 待写入存储器。nEU控制器负责从BIU的指令队列中取出指令,并对指令译码,根据指 令要求向EU内部各部件发出控制命令以实现各条指令的功能。8088与8086 CPU的区别(1)8088与外部交换数据的数据总线宽度是8位,而EU内部总线 和寄存器仍是16位,所以把8088称为准16位微处理器
3、。(2)8088 BIU中指令队列长度只有4字节,只要队列中出现一个 空闲字节,BIU就会自动地访问存储器,取指令来填满指令队列 。二、8086/8088 CPU的寄存器通用数据寄存器:存放运算原始/中间结果指针和变址寄存器:存放存储器地址控制寄存器:存放程序地址和其他控制信息段寄存器:存放各段的信息通用寄存器组8个16位通用寄存器可分成两组:一组由AX、BX、CX和DX构成,称作通用数据寄存器,用来存放16位的数据或地址。也可当作8个8位寄存器使用。8位寄存器只能存放数据。 AX 称为累加器 ( =AH+AL ) BX 称为基址寄存器( =BH+BL ) CX 称为计数寄存器( =CH+CL
4、 ) DX 称为数据寄存器( =DH+DL )数据指针寄存器主要用来存放操作数的偏移地址(即操作数的段内地址) SP 称为堆栈指针寄存器 BP 称为基址指针寄存器 SI 称为源变址寄存器 DI 称为目的变址寄存器(变址寄存器内存放的地址在数据传送完成后,具有 自动修改的功能。例如,传送1字节数据后把地址加1 ,为下次传送做好准备,变址寄存器因此得名。)访问存储器类型隐含的 段地址可更换的 段地址段内偏移地址EA 的来源取指令码CS无IP堆栈操作SS无SP字符 串操 作源地址DSCS、ES、 SSSI目的地 址ES无DIBP用作基址寄存 器SSCS、DS、ES由指令寻址方式求 得EA一般数据存取
5、DSCS、ES、SS由指令寻址方式求 得EA段寄存器 8086/8088 CPU总线接口部件BIU中设置有4个16位段寄存器: 代码段寄存器CS,数据段寄存器DS,附加段寄存器ES和堆栈段 寄存器SS。 代码段:存放程序指令。CS中存放的是现在正在执行的程 序段的段基址。程序代码超过64K时,需要分成几个段存放 。 数据段用于存放当前使用的数据。需要第二个数据段时可 以使用附加段。 堆栈段是内存中的一块存储区,用来存放专用数据。例如 ,调用子程序时的入口参数,返回地址等,这些数据都按照 “先进后出”的规则进行存取。SS存放堆栈段的段基址,SP 存放当前堆栈栈顶的偏移地址。存储单元的物理地址和逻
6、辑地址存储器地址表示方法:物理地址 用全部20位地址线表示(线性地址)逻辑地址 “段基地址:偏移地址”(分段地址)(32位) (高16位) (低16位)20位地址线存储空间可编址220字节1M字节将存储单元以8位的字节编址,CPU内的寄存器均为8和16位,因此 在实际编程中使用的是逻辑地址。1MB划分为若干个逻辑段,每段最长64KB(=216B),并规定每个段的起始 的物理地址必须能被16整除。即,20位起始的物理地址中最低4位必须 为0,起始地址的高16位为此段的段基地址。逻辑地址换算为物理地址的计算方法物理地址段基地址16偏移地址同一个逻辑段内,偏移地址可取值0FFFFH。16位段基址16
7、位段基址C018H20位物理地址0000xx段寄存器段起始地址C0180H偏移地址 FE7FHCFFFFHD017FH段末地址FFFFHC0180H FE7FHCFFFFH偏移地址代码段寄存器 6000H数据段寄存器 AE00H堆栈段寄存器 A000H附加段寄存器 8000H代码分段附加分段堆栈分段数据分段64KB64KB64KB64KB60000H6FFFFH80000H8FFFFHA0000HAE000H AFFFFHBDFFFH四个段寄存器的段基址可以有相互重叠区,也可以指向同一个64KB空间。标志寄存器FLAGS 8086/8088 CPU中设置了一个16位标志寄存器FLAGS,用 来
8、存放运算结果的特征和控制标志,其格式如下:状态标志,用来表示运算结果的特征,包括CF、PF、AF、ZF、SF和OF;控制标志,用来控制CPU的操作,包括IF、DF和TF。(1)ZF(Zero Flag) 零标志位。(2)SF(Sign Flag) 符号标志位。(3)PF(Parity Flag) 奇偶标志位。PF=1,表示本次运算结果的低八位中有 偶数个“1”;PF=0,表示有奇数“1”。PF可以用来进行奇偶校验,或者用来生成 奇偶校验位。(4)AF(Auxiliary Carry Flag) 辅助进位标志位。这个标志位只在BCD数运 算中起作用。(5)CF(Carry Flag) 进位标志位
9、。 进行二个无符号数加法或减法运算后,如果CF=1,表示运算的结果超出了该 字长能够表示的数据范围。例如,执行8位数据运算后,CF=1表示加法结果超 过了255,或者是减法得到的差小于零。 进行有符号数运算时,CF对运算结果没有直接意义。 (6)OF(Overflow Flag) 溢出标志位。例如,进行8位运算时,OF=1表示运 算结果大于+127 或小于128。OF标志对无符号数的运算结果没有意义。状态标志上述运算后: CF = C7 (D7位上的进位)= 0 (无进位); AF = C3 (D3位上的进位) = 1(有辅助进位); PF = 1(运算结果有4个1); SF = D7 = 1
10、(运算结果符号位为1); OF = C7C6 = 01 = 1 (有溢出); ZF = 0 (运算结果不为0)。ADD AL, AH上述运算后:CF = 1 (有借位);AF = 1 (有辅助进位);PF = 1 (运算结果中有6个1);SF = 1 (符号位为1);OF = 0 (无溢出);ZF = 0 (运算结果不为0)。SUB AL, AH状态标志的控制作用(1)IF(Interrupt Flag) 中断允许标志位。IF=1,表示允许 CPU响应可屏蔽中断。IF标志可通过STI指令置位(置1),通过CLI指令复位(清零) 。(2)DF(Direction Flag) 方向标志位。在串操作
11、指令中,若 DF=0,表示串操作指令执行后地址指针自动增量,串操作由低地 址向高地址进行;DF=1,表示地址指针自动减量,串操作由高地 址向低地址进行。DF标志位可通过STD指令置位,通过CLD指令复位。(3)TF(Trap Flag) 单步标志位。TF=1,每条指令执行结束都 会发生“单步”中断,用于程序调试控制标志地址/数据线高位地址线非屏蔽中断 可屏蔽中断最小最大模式控制 MN/MX=1,最小模式 MN/MX=0,最大模式读信号总线保持请求信号总线保持响应信号 写信号存储器/IO控制信号 M/IO=1,选中存储器 M/IO=0,选中IO接口数据发送/接收信号 DT/R=1,发送 DT/R
12、=0,接收数据允许信号 地址锁存信号 中断响应信号测试信号:执行WAIT指令, CPU处于空转等待; TEST有效时,结束等待状态。准备好信号:表示内存 或I/O设备准备好, 可以进行数据传输。复位信号三. 8086/8088 引脚8086/8088 CPU有两种不同的工作模式(最小模式和最大模式 )。8条引脚(2431)在两种工作模式中,具有不同的功能,最 大模式下被重新定义的控制信号写在括号中。引脚信号的传输有以下几种类型: 输出:信号从CPU向外部传送; 输入:信号从外部送入CPU; 双向:信号有时从外部送入CPU,有时从CPU向外部传送; 三态:除了高电平、低电平两种状态之外,CPU内
13、部还可以 通过一个大的电阻阻断内外信号的传送,CPU内部的状态与 外部相互隔离,称为“悬浮态”。AD15AD0(Address/Data)分时复用,双向、三态A19/S6A16/S3(Address/Status)分时复用,输出、三态 /BHE(Bus High Enable)输出、三态、低电平有效ALE(Address Latch Enable)输出、三态、高电平有效M/ IO(Input and Output/Memory)输出、三态/WR ,/RD (Write /Read)输出、三态、低电平有效READY (Ready)输入、高电平有效 /DEN(Data Enable)输出、三态、低
14、电平有效/DT/R(Data Transmit/Receive)输出、三态INTR(Interrupt Request)/ INTA(Interrupt Acknowledge) NMI(Non-Maskable Interrupt)HOLD/HLDA (总线请求/总线请求响应)CLK,RESET (时钟 )(复位)四. 8086最小模式典型配置BHE A0 操作数据引脚0 0 从偶地址写一个字AD15AD01 0 从偶地址读/写一个字节A D7AD00 1 从奇地址读/写一个字节AD15AD80 1 从奇地址读/写一个字AD15AD8 1 0AD7 AD0地址锁存 数据缓冲 D QCKADX
15、ALEAX/DT/R+/DENDT/R+/DEN五. 8086/8088 系统时序A19/S6A16/S3T4T3T2T1ALECLKAD15AD0A7A0输出数据A19A16S6S3READY高电平M /IOWR*/BHE/BHET1状态 输出20位存储器地址A19A0M/ IO 输出高电平,表示存储器操作;ALE输出正脉冲,表示复用总线输出地址T2状态 输出控制信号 /WRT3和Tw状态检测数据传送是否能够完成T4状态 读写数据,完成数据传送总线请求与响应时序系统复位与启动RESET 得到复位信号标志寄存器: 清零 指令指针(IP): 0000H CS : FFFFH DS、ES、SS : 0000H指令队列: 空其它寄存器: 0000H 故程序起始地址为 FFFF:0000第2节 80386/486处理器微处理器首批 生产 时 间性能 ( MIP S)首批 CPU 频率 MHz集成度 (百万 )寄存 器宽 度外部 数据 总线 宽度最大寻 址空间内含高速 缓存大小808619780.880.12916161MB无8028619822.712.50.134161616MB无80386D