微机原理_第2章 微处理器

目录

2.1 8086微处理器的基本结构

前言

2.1.1  8086的功能结构

前言总结

1.执行部件EU

2.总线接口部件BIU

EU和BIU两部分在很多时候可以并行工作

2.1.2 8086的寄存器结构【14个寄存器,必须掌握】

1.通用数据寄存器(AX/BX/CX/DX)

2.地址指针(SP/BP)和变址寄存器(SI/DI)

3. 段寄存器(CS/DS/SS/ES)

4. 指令指针寄存器IP和标志寄存器FR

2.1.3 8086的工作模式和引脚特性

1. 芯片引脚特性的描述

2. 8086的工作模式

3. 8086的引脚特性【重要】

2.2 8086的系统组成和总线时序

2.2.1 8086的系统组成

1. 系统组成的特点

2. 最小模式系统组成

3. 最大模式系统组成(略)

4. 存储器组织与分段

5. I/O组织 

2.2.2 8086的总线时序

1. 基本概念

2. 最小模式下的读/写总线周期


2.1 8086微处理器的基本结构

前言

8086简介
      Intel系列的第三代16位(字长,由加法器、寄存器、数据总线的位数决定,第1章中1.2.2有说明)微处理器
      采用了HMOS高密度工艺,集成度达每片4万多只晶体管
      单一+5V电源,主频为5M Hz /10M Hz
      内部和外部的数据总线宽度都是16位
      地址总线宽度20位,可寻址空间达2^20,即1MB

2^10——1KB         2^20——1MB        2^30——1GB        2^40——1TB

8088设计目标是为了与Intel的8位外围接口芯片直接兼容。

8088和8086的内部结构基本相同,两者的软件也完全兼容;最主要的区别是外部数据总线:8086是16位数据总线,8088是8位数据总线。

2.1.1  8086的功能结构

前言总结

8086微处理器的内部功能结构由两个独立的工作部件:执行部件EU(Execution Unit)和总线接口部件BIU(Bus Interface Unit)构成。
        EU运算器(运算器由算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成)、寄存器组、控制器等组成,负责指令的执行
        BIU指令队列、地址加法器、总线控制逻辑等组成,负责与系统总线打交道

8086CPU的内部功能结构框图

1.执行部件EU

(1)EU的功能
        从BIU的指令队列缓冲器中取出指令,由EU控制器的指令译码器译码产生相应的操作控制信号给各部件。
        对操作数进行算术运算和逻辑运算,并将运算结果的状态特征保存到状态寄存器FR<见本章2.1.2的4.指令指针寄存器和标志寄存器,FR为标志寄存器>中。
        EU不直接与CPU外部系统相连,当需要与主存储器或I/O设备交换数据时,EU向BIU发出命令,并提供给BIU16位有效地址(偏移地址)所需传送的数据

(2)EU的组成
        说法一:
        EU由算术逻辑单元ALU,通用数据寄存器组,地址指针和变址寄存器,标志寄存器,数据暂存寄存器和EU控制器组成。
        说法二:
        EU运算器、寄存器组、控制器等组成,负责指令的执行

(3)EU的特点
        通用数据寄存器AX,BX,CX,DX,既可以作16位寄存器使用,也可以分成高、低8位分别作两个8位寄存器使用;地址指针BP、SP和变址寄存器SI、DI都是16位寄存器,一般用来存放地址信息
        ALU的核心是16位二进制加法器。其功能:一是进行算术/逻辑运算,二是按指令的寻址方式提供给BIU所需要操作对象的16位(偏移)地址,让BIU对内存储器或I/O空间寻址,传输操作对象。
        16位状态标志寄存器FR(7位未用)存放操作后的状态特征设置的控制标志<见本章2.1.2的4.指令指针寄存器和标志寄存器>。

        EU控制器是执行指令的控制电路,实现从队列中取指令、译码、产生控制信号等。 

2.总线接口部件BIU

(1)BIU的功能
        BIU负责完成CPU与存储器或I/O设备之间的数据传送。它的具体功能为以下三个方面:
        ①BIU从主存(外面存储器)取指令送到指令队列缓冲器
        ②CPU执行指令时,总线接口单元要配合EU,从指定的主存单元或外设端口中取数据将数据传送给EU,或把EU的操作结果传送到指定的主存单元或外设端口中。
        ③计算并形成访问存储器的20位物理地址<8086有20根地址线>。

(2)BIU的组成
        BIU由4个16位段寄存器(CS、DS、SS、ES)、16位指令指针寄存器(IP)、20位物理地址加法器、6字节指令队列及总线控制逻辑组成。

(3)BIU的特点
        指令队列是由6个字节的寄存器组成(8088指令队列由4个字节组成)  先进先出
        地址加法器是用来产生20位存储器物理地址的,物理地址 = 16×段地址 + 偏移地址 = 段地址 <<4 + 偏移地址(二进制)
        8086分配20条引脚线分时传送20位地址、16位数据和4位状态信息。

EU和BIU两部分在很多时候可以并行工作

        使取指令、指令译码、执行指令构成作业流水线。
        每当指令队列中出现空字节,且EU没有访问存储器和接口的要求时,BIU自动从存储器读出指令代码,存于指令队列,供EU执行。
        在一条指令执行的过程中,就可以预取下一条(或多条)指令,从而减少了8086CPU为取指令而等待的时间,提高了CPU的运行速度。
        在以后的几代微处理器中,对内部结构的改进主要由此入手,将指令的执行过程进一步分解,尽可能使每一步骤都能同时执行,由此提高微处理器的执行速度。

2.1.2 8086的寄存器结构【14个寄存器,必须掌握

8086CPU内部设有三组信息寄存器一个标志寄存器,即:通用数据寄存器组(AX/BX/CX/DX)、地址指针(SP/BP)和变址寄存器(SI/DI)、段寄存器组(CS/DS/SS/ES)、16位的指令指针寄存器IP和标志寄存器FR。
它们用于暂存CPU操作过程中需要的指令地址数值计算的数据数据处理的中间结果

1.通用数据寄存器(AX/BX/CX/DX)

EU中设置了四个16位通用寄存器,它们是AX、BX、CX和DX,而且都可以拆成两个独立的8位寄存器使用。
四个寄存器(8位或16位):存放计算过程中所用到的操作数、结果或其他信息
        AX:累加器(Accumulator),算术计算的主要寄存器,所有的I/O指令都使用这一寄存器与外部设备传送信息。
        BX:通用寄存器,在计算存储器地址时,用作基址(Base)寄存器。
        CX:通用寄存器,在循环和串处理指令中用作隐含的计数器(Counter)。
        DX:通用寄存器,数据(Data)寄存器,一般在作双字长运算时把DX和AX组合在一起存放一个双字长数,用来存放高位字,也可用来存放I/O的端口地址。

8086中通用寄存器的一般用法和隐含用法

2.地址指针(SP/BP)和变址寄存器(SI/DI)

EU中设有两个地址指针寄存器SP、BP和两个变址寄存器SI、DI。

指针及变址寄存器(4个16位寄存器)
        指针寄存器
                    SP (Stack Pointer) 堆栈指针寄存器(存放栈顶的偏移地址)
                    BP (Base Pointer)  基址指针寄存器(堆栈区中的一个基址地址)
        变址寄存器
                    SI (Source Index)  源变址寄存器
                    DI (Destination Index)  目的变址寄存器

8086中地址寄存器的一般用法和隐含用法

需要特别指出:

(1)8086的堆栈及堆栈操作有以下特点
        双字节操作。即每次进PUSH、出POP栈的数据均为两字节,且高位字节对应高地址,低位字节对应低地址。无论是源操作数还是目的操作数,也无论是存储器操作数还是寄存器操作数,都必须按这个原则执行。
        堆栈向低地址方向生成。数据每次进栈时堆栈指针SP向低地址方向移动(减2);反之,数据出栈时,SP向高地址方向移动(加2)

(2)BP、BX都被称为基址指针,但两者用法不同。BP只能寻址堆栈段(段缺省),不允许段跨越;BX可以寻址数据段(段缺省),也可以寻址附加段(段跨越)
        如4.3.4所言,在段寻址伪指令ASSUME中,堆栈段所使用的段寄存器为SS;同理,数据段所使用的段寄存器为DS附加段所使用的段寄存器为ES。(也可以见下面段寄存器的介绍)

(3)大多数算术和逻辑运算中可以使用BP、SP和变址寄存器,因而将这4个寄存器归入通用寄存器组。这4个寄存器只能用于16位存取操作

3. 段寄存器(CS/DS/SS/ES)

8086CPU中有4个段寄存器,用于存放当前程序所用的各段的起始地址,也称为段的基地址。它们分别为:
        代码段寄存器CS(Code Segment)
                存放当前执行程序所在段的基地址。其内容左移4位再加上指令指针IP的内容,就形成下一条要执行的指令存放的实际物理地址。(不能写,只能读

        数据段寄存器DS(Data Segment)
                存放当前数据段的起始地址,DS中的内容左移4位再加上按指令中存储器寻址方式计算出来的偏移地址,即为数据段指定的单元进行读写的地址。(不能对DS直接赋值

        堆栈段寄存器SS(Stack Segment)
                存放当前堆栈段的起始地址,堆栈是按“后进先出”原则组织的一个特别存储区。堆栈操作所处理的操作数常存放在当前堆栈段中。操作数的存放地址是由SS的内容左移4位再加上SP的内容而形成的。

        附加段寄存器ES(Extended Segment)
                存放目前附加段的基地址。附加段是在进行字符串操作时作为目的区地址使用的一个附加数据段。在字符串操作指令中SI作为源变址寄存器,DI作为目的变址寄存器,其内容都是偏移地址。同样,基地址内容左移4位再加上偏移地址即为存放操作数的有效地址。(不能直接传输数据到ES)

同4.3.4所言,在段寻址伪指令ASSUME中,代码段所使用的段寄存器为CS数据段所使用的段寄存器为DS堆栈段所使用的段寄存器为SS附加段所使用的段寄存器为ES

SP,BP,SI,DI与段寄存器联用说明
        SP,BP与SS联用→确定堆栈段中某一存储器单元的地址,SP用来表示栈顶的偏移地址,BP可作为堆栈区中的一个基地址以便访问堆栈中的其他信息。 
        SI,DI与DS联用→确定数据段中某一存储器单元的地址,SI和DI有自动增量和自动减量的功能。在串处理指令中,SI和DI作为隐含的源变址和目的变址寄存器,SI和DS联用,DI和ES联用,分别达到在数据段和附加段中寻址的目的。 其中,DF为1,SI、DI减量,由高地址向低地址处理;DF为0,SI、DI增量,由低地址向高地址处理(其中,DF为标志寄存器IP的一个控制标志位)。

4. 指令指针寄存器IP和标志寄存器FR

(1)指令指针寄存器IP
         指令指针寄存器IP是一个16位的表示地址指针的寄存器。IP指向当前需要取出的指令地址的偏移量,当BIU从内存中取出指令字节后,IP自动指向下一条指令。IP的内容是指令字节地址在当前代码段的偏移量,又称为偏移地址。应注意,程序员不能直接访问IP的内容
        代码段中的下一条要执行的指令存放的实际物理地址:CS:IP。 

(2)标志寄存器FR(Flag Register)
        标志寄存器也称为程序状态字PSW(Program Status Word)寄存器,它是一个16位的标志寄存器,但仅使用其中的9位。

        状态标志位(6个)
                OF(Over Flag)溢出标志:溢出为1,计算方法:R6异或R7
                SF(Sign Flag)符号标志 :计算运算结果的符号,结果为负为1, 取最高有效位
                ZF(Zero Flag)零标志:运算结果是0则为1
                AF(Auxiliary Flag)辅助进位标志:在字节(共8位)操作时,第3位(半字节)向高位产生进位(或借位)时为1
                PF(Parity Flag)奇偶进位标志:操作数结果低8位含有偶数个1时为1
                CF(Carry Flag)进位标志:使最高位产生进位(或借位)时为1

        控制标志位(3个)
                DF(Direction Flag)方向标志:DF为1,SI、DI减量,由高地址向低地址处理(地址递减);DF为0,SI、DI增量,由低地址向高地址处理(地址递增)。可用STD和CLD汇编指令分别使DF=1和DF=0。
                IF(Interupt Flag )中断标志: IF为1时允许中断(存在响应与不响应两种情况);IF=0,则禁止可屏蔽中断。可用STI和CLI汇编指令分别使IF=1和IF=0。
                TF(Trap Flag)陷阱标志( 又叫跟踪标志):每执行一条指令就引起一个内部中断,用于单步方式操作。TF为1,指令执行完后产生陷阱,由系统控制计算机;TF为0,CPU不产生陷阱,正常工作。该标志没有对应的指令操作,只能通过堆栈操作改变TF状态。

        控制信息由系统程序或用户程序根据需要用指令设置
        状态信息由中央处理机根据计算机的结果自动设置
        举例【注意弄清楚每个标志位对应的英文以及含义】

总结:

EU中的寄存器:通用数据寄存器组(AX/BX/CX/DX)、地址指针(SP/BP)和变址寄存器(SI/DI)。

BIU中的寄存器:段寄存器组(CS/DS/SS/ES)、16位的指令指针寄存器IP和标志寄存器FR。

2.1.3 8086的工作模式和引脚特性

1. 芯片引脚特性的描述

引脚的功能
        即引脚信号的定义。人们约定,引脚名为该引脚功能的英文缩写,基本反映了信号的作用,即含义。

信号的有效电平
        指控制引脚使用有效时的逻辑电平。低电平有效的引脚名字上面加有一条横线,引脚名字上无横线者为高电平有效。
        另有一些引脚信号编码使用,即高、低电平均有效(例如地址信号),分别表示不同的状态或数值。还有些引脚信号为边沿有效,即信号仅在上升(或下降)沿有效

信号的流向
        芯片与其他部件的联系全靠在引脚上传送信息,这些信息可能自芯片向外输出,也可能从外部输入到芯片,还可能是双向的。
        例如:   CPU的地址线(AB)输出的,用以寻址存储器单元或I/O端口;  数据线(DB)双向的,CPU可通过它从存储器或外设读取数据,也能将数据输出给它们;  CPU的某些控制线是输出的,用来对外界提供控制,也有些控制线是输入的,通过这些流入的信息,可以接受外界的联络信号

引脚的复用
        在芯片的设计中,有时为了以少量引脚提供更多的功能,会采用引脚复用的做法。如8086中就采用地址、数据线分时复用的方法,即当引脚上出现有效信号时,前一时刻总线上出现地址,后一时刻,其上传输的是数据。

三态能力
        “三态”能力是指有些引脚除了能正常输出或输入高、低电平外,还能输出高阻状态。当它输出高阻状态时,表示芯片实际上已放弃了对该引脚的控制,使之“浮空”。这样,与总线相连接的其它设备就可以获得对总线的控制权,系统转为接受总线的设备控制下工作。

2. 8086的工作模式

为了尽可能适应各种使用场合,8086设计了两种工作模式——最小模式最大模式
8086系统处于最小模式,就是系统中的CPU只有8086单独一个处理器。在这种系统中,所有总线控制信息都直接由8086产生,系统中总线控制逻辑电路被减到最少,这些特征就是最小模式名称的由来。最小模式适合于较小规模的系统。
最大模式系统中有多个微处理器,其中必有一个主处理器8086,其他处理器称为协处理器或辅助处理器,承担某一方面的专门工作。
与8086匹配的协处理器:专用于数值运算的处理器8087、专用于输入/输出操作的协处理器8089。

最大模式和最小模式的主要区别就是是否存在协处理器。

3. 8086的引脚特性【重要

8086有40个引脚,其中第33 (最小/最大模式)脚很关键,它是一条输入线,可以加高电平,也可以加低电平,由该线所加电平的高或低电平决定24-31引脚的功能(24-31引脚的功能取决于8086工作在最小模式还是最大模式,括号里的引脚名是最大模式下的功能),其他引脚不受第33引脚的影响,我们把这部分引脚称为一般引脚。

以最小模式介绍引脚功能

工作必须条件的5个引脚:电源Vcc(40)、GND(1,20)、系统时钟CLK(19)、复位RESET(21)

        电源Vcc(40):输入
                Vcc接入的电压为+5V±10%(直流)

        GND(1,20):输入
                GND(又名Vss),有两条(1,20脚)

        系统时钟CLK(19):输入
                该时钟信号的占空比为33%(即1/3周期为低电平,2/3周期为高电平)。
                8086要求的时钟频率为5MHz,系统时钟为CPU和总线控制逻辑电路提供了时序基准(定时手段)。

        复位RESET(21):输入,高电平有效
                RESET接时钟发生器8084A的RESET端,得到一个经同步的复位脉冲信号
                RESET引起处理器立即结束现行操作。
                CPU结束当前操作后,对状态标志寄存器、指令指针寄存器IP、数据段寄存器DS、堆栈段寄存器SS、附加段寄存器ES清零,而将代码段寄存器CS设置为0FFFFH。
                        代码段寄存器CS存放当前执行程序所在段的基地址,其内容左移4位再加上指令指针IP的内容,得到实际物理地址
                        0FFFFH可以使实际物理地址变大,而内存空间随着数据的加入逐渐减小的
                当RESET=0时,CPU从0FFFFH开始执行程序。

地址/数据总线的20个引脚

        AD0-AD15,A16-A19
                总线复用,共有20根地址线,16根数据线

        AD0-AD15(39,2~16),地址/数据总线,复用线,双向,三态
                分时复用的存储器或端口的地址/数据总线。
                传送地址时为单向三态输出(地址总线AB, Address Bus),传送数据时可双向三态输入/输出(数据总线DB, Data Bus)。
                在总线周期(见本章2.2.2)的T1状态,输出要访问的存储器或I/O端口的地址;T2状态浮置成高阻状态,为传输数据做准备; 在T3状态,用于传输数据;T4状态,结束总线周期。
                当CPU响应中断DMA(直接存储器访问)方式时,这些线处于浮空状态(高阻态)。
                直接存储器存取(DMA)方式,使数据的传送不经过CPU,由DMA控制器来实现内存与外设,或外设与外设之间的直接快速传送。

        A16-A19/S6-S3(38~35),地址/状态总线,复用线,输出,三态
                    A19--A16是地址的高4位,在T1输出地址。
                    S6--S3是CPU的状态信号,在T2-T4时输出CPU状态
                    当访问存储器时,T1输出的A19--A16与AD15--AD0组成20位地址信号
                    而访问I/O端口时  A19-A16=0000,AD15--AD0为16位地址信号
                    状态信号
                            S6=0,表示当前8086与总线相连
                            S5标志中断允许IF的状态,其中IF(Interupt Flag )中断标志: IF为1时允许中断
                            S4和S3组合指示当前使用的段寄存器(00,01,10,11)分别指ES,SS,CS,DS
                    在进行DMA(直接存储器访问)方式时, A19-A16/S6-S3浮空(高阻态)

数据处理的5个引脚:中断(可屏蔽中断请求INTR(18) 、非屏蔽中断请求NMI(17) 、中断响应INTA/(24))、直接存储器访问DMA(HOLD(31)、HLDA(30))

        中断
                可屏蔽中断请求INTR(18):输入,高电平有效
                        当INTR=1,表示外设提出了中断请求。
                        CPU在执行每条指令的最后一个时钟周期采样此信号,若INTR=1且IF=1(中断允许),则响应中断。其中,IF(Interupt Flag )中断标志: IF为1时允许中断。
                非屏蔽中断请求NMI(17):输入,上升沿触发 
                        NMI(Non-Maskable Interrupt)中断请求不受中断允许标志位IF的影响,也不能用软件进行屏蔽
                        只要此信号一有效,CPU就在现行指令结束后立即响应中断,进入非屏蔽中断处理程序
                中断响应INTA/(24):输出低电平有效
                        INTA/有效则表示对INTR的外部中断请求作出响应,进入中断响应周期。
                        INTA/信号实际上是位于连续周期中的两个负脉冲,在每个总线周期的T2、T3和Tw状态, INTA/端为低电平。第一个负脉冲通知外部设备的接口,它发出的中断请求已经得到允许;外设接口收到第二个负脉冲后,往数据总线上放中断类型码(中断向量号),从而CPU便得到了有关此中断请求的详尽信息。

        直接存储器访问DMA
                总线请求HOLD(31)和总线允许HLDA(30)
                        总线请求HOLD(31),输入,高电平有效
                        总线允许HLDA(Hold Acknowledge,30):输出,高电平有效
                        HOLD和HLDA是一对配合使用的总线联络信号。当系统中的其他总线主控部件要占用总线时,向CPU发HOLD=1总线请求。
                        如果此时CPU允许让出总线,就在当前总线周期完成时,发HLDA=1应答信号,且同时使具有三态功能的地址/数据总线和控制总线处于浮空,表示让出总线。
                        总线请求部件收到HLDA=1后,获得总线控制权,在这期间,HOLD和HLDA都保持高电平。当请求部件完成对总线的占用后,HOLD=0总线请求撤消,CPU收到后,也将HLDA=0。这时CPU又恢复了对地址/数据总线和控制总线的占有权。

数据读写相关的6个引脚:读RD/(32) 、写WR/(29) 、读/写DT/R/(27) 、允许DEN/(26)、选通M/IO/(28) 、地址锁存ALE(25)

        读RD/(32) :输出,低电平有效,三态
                RD/ =0,表示8086为存储器I/O端口读操作。
                当DMA(直接存储器访问)时,此线浮空。
                **具体到底是读取存储器某地址单元的内容还是某输入设备输入端口的内容,这取决于M/IO/信号

        写WR/(29) :输出,低电平有效,三态
                WR/=0,表示8086为存储器I/O端口写操作。
                当DMA(直接存储器访问)时,此线浮空。
                **具体到底是读取存储器某地址单元的内容还是某输入设备输入端口的内容,这取决于M/ IO/信号。
                **在最小模式中,信号M/IO/、WR/、RD/组合起来决定了系统中数据传送方式

        数据允许DEN/(26)与数据收/发DT/R/(27):输出,三态
                DEN/是8086提供给数据收发器的选通信号,DT/R/是控制其传输方向的信号。
                如果DEN/有效,表示允许传输。此时,DT/R/=1,进行数据发送DT/R/=0,进行数据接收
                在DMA下,它们被置为浮空

        存储器I/O选通M/IO/(28):输出,高低电平均有效,三态
                M/IO/用于指示是存储器还是I/O访问:M/IO/ =1,表示CPU与存储器之间数据传输;M/IO/ =0,表示CPU和I/O设备之间数据传输
                当DMA(直接存储器访问)时,此线浮空

        地址锁存ALE(25):输出,高电平有效
                在每个总线周期的T1状态时发出的,其下降沿将8086CPU输出的AD15~AD0、A19~A16地址信息和BHE/锁存在CPU外部的地址锁存器中。
                注意:ALE端不能被浮空

其他的4个引脚:最大/最小MN/MX/(33) 、准备READY(22)  、测试TEST/(23) 、高8位数据线BHE/ /S7(34)

        最大/最小MN/MX/(33) :输入,高低电平均有效
                MN/MX/ =1,8086系统为最小模式(常用),全部控制信号由8086提供;MN/MX/ = 0,8086设置为最大模式。

        准备好READY(22)  :输入,高电平有效
                READY表示数据传送结束与否,接时钟发生器8084A的READY端,得到一个经同步的“准备好”信号
                当READY=1时,表示内存或I/O设备准备就绪,马上可以进行依次数据传输。
                CPU在每个总线周期的T3状态开始对READY进行采样,如READY=0,CPU在T3之后,自动插入一个或几个等待状态Tw。一旦READY=1,才进入T4状态,完成数据传输过程,从而结束当前总线周期。具体见本章2.2.2的总线周期(Bus Cycle)

        等待测试TEST/(23):输入,低电平有效
                    用于多处理器系统中,且只有在执行WAIT指令时才使用(见3.2.6的外部同步指令)。
                    当CPU执行WAIT指令时,它就进入空转的等待状态,每隔5个时钟周期对该线的输入进行一次测试。
                    若TEST/=1,则CPU将停止取下条指令而继续等待,直至TEST/=0,才继续执行WAIT指令的下一条指令。

        高8位数据线BHE/ /S7(34)
                    高8位数据总线允许/状态复用引脚,三态,输出
                    BHE/ 在T1时输出,表示总线高8位AD15—AD8上的数据有效,S7在T2—T4时输出,未赋予定义,作备用状态信号线(时间与A16-A19/S3-S9类似)
                    BHE/ 和A0组合起来表示当前数据在总线上的格式,如下表(见书本32页)

另一种分析(复习)方法

通过引脚顺序记忆,且需要记住引脚数及其对应的关系

【归纳总结】

输入:

        地GND(1,20)、非屏蔽中断请求NMI(17)、可屏蔽中断请求INTR(18)、系统时钟CLK(19)、复位RESET(21)、准备好READY(22)、等待测试TEST/(23)、总线请求HOLD(31)、最大/最小MN/MX/(33)、电源Vcc(40)

输出:

        中断响应INTA/(24)、地址锁存ALE(25)、数据允许DEN/(26)、数据读/写DT/R/(27)、存储器I/O选通M/IO/(28)、写WR/(29)、总线允许HLDA(30)、读RD/(32)、数据线高8位开放/状态BHE/ /S7(34)

双向:

        AD0-AD15(39,2~16)、A16-A19/S6-S3(38~35)

复用线:

        AD0-AD15(39,2~16)、数据线高8位开放/状态BHE/ /S7(34)、A16-A19/S6-S3(38~35)

高电平有效:

        可屏蔽中断请求INTR(18)、复位RESET(21)、准备好READY(22)、地址锁存ALE(25)、总线允许HLDA(30)、总线请求HOLD(31)

低电平有效:

        等待测试TEST/(23)、中断响应INTA/(24)、写WR/(29)、读RD/(32)

高低电平均有效:

        存储器I/O选通M/IO/(28)、最大/最小MN/MX/(33)

上升沿有效:

        非屏蔽中断请求NMI(17)

浮空(三态):

        DMA模式:数据允许DEN/(26)、数据读/写DT/R/(27)、存储器I/O选通M/IO/(28)、写WR/(29)、读RD/(32)、A16-A19/S6-S3(38~35)

        响应中断、DMA模式:AD0-AD15(39,2~16)

        让出总线:具有三态功能的地址/数据总线和控制总线

        其他:数据线高8位开放/状态BHE/ /S7(34)

禁止浮空:

        地址锁存ALE(25)

2.2 8086的系统组成和总线时序

2.2.1 8086的系统组成

1. 系统组成的特点

8086系统的硬件组成除了最主要的8086微处理器外,还需要配置许多部件(芯片)。系统的硬件组成由最小、最大模式的不同而有所差异,其中具有共性的特点是:
        MN/MX/端接VCC或GND,决定工作在最小模式或最大模式
        8284A为时钟发生器,外接15MHz振荡源,经8284A三分频后,得5MHz主频送到8086系统时钟端CLK。除此之外,8284A还将外部的复位信号RESET和就绪信号READY实现同步后发给8086相应引脚
        用3片8282(也可以是74LS373)作地址锁存器,在T1时锁存地址/数据复用线上的地址A19-A0和BHE/(数据线高八位开放)信号
        当系统所连的存储器和外设较多时,需要增加数据总线的驱动能力
        系统组成还必须有其他的一些,如半导体存储器RAM和ROM,外部设备的I/O接口,中断控制管理部件等组件

2. 最小模式系统组成

8086最小模式典型的总线部件配置图

3. 最大模式系统组成(略)

4. 存储器组织与分段

        8086的存储器按字节组织,有20根地址线,无论在最小模式还是最大模式下都可寻址1MB(2^20)存储空间。这1MB的内存单元用00000H-FFFFFH编址,如图2-10所示。
        8086的1MB存储器,实际上被分成了两个512KB存储区(16根数据线可同时传输,但是数据为8位,所以一次只需要8根线),分别叫奇地址区(奇区)和偶地址区(偶区)。顾名思义,奇区单元地址是奇数,偶区单元地址是偶数。偶区的数据线与数据总线上低位字节数据线D7~D0相连,奇区的数据线与数据总线上高位字节数据线D15~D8相连。地址线A19~A1可同时对奇、偶区内单元寻址,BHE/、A0则用于对奇、偶区的选择(偶字节、奇字节和偶字操作均用1个总线周期完成,而奇字操作需要2个总线周期,分别用奇字节和偶字节操作来完成【重点】

        8086存储器操作采用典型的逻辑分段技术。所谓存储器分段技术就是把1MB空间分成若干逻辑段,每个逻辑段的容量≤64KB。段内地址是连续的,段与段之间是互相独立的。逻辑段可以在整个存储空间浮动,即段的排列可以连续、分开、部分重叠或完全重叠,非常灵活。这里所谓的重叠是指存储单元可以分属于不同的逻辑段

        8086要求各逻辑段首地址的最低4位是全0(即段首地址是16的整数倍),段首地址的高16位称作段基址。段基址存放在段寄存器DS、ES、SS或CS中,并表明了相应逻辑段的性质。段内存储单元距离段首地址的偏移量(以字节数计算),叫做偏移地址(在8086中称为有效地址EA)。偏移地址可以存放在IP、SP、BP、SI、DI或BX中,或者是通过计算给出的一个16位偏移量。段基址和偏移地址都是无符号的16位二进制数,用<段基址>﹕<偏移地址>作为存储单元逻辑地址的描述形式。例如,4000H﹕2000H就是42000H物理地址的逻辑地址描述。采用分段结构的存储器中,任何一个20位物理地址都是由它的逻辑地址通过CPU中BIU的地址加法器变换得到的,如图所示。

        一个物理地址单元可以唯一地包含在一个逻辑段中,也可以包含在多个相互重叠的逻辑段中,即可对应于多个逻辑地址。例如,物理地址21245H,它的逻辑地址可以是2123H﹕0015H,也可以是2124H﹕0005H,等等。这说明一个存储单元的物理地址是唯一标识的,而它的逻辑地址是可以不唯一的。也就是说,通过相应的段基址和偏移地址可以访问同一个物理地址所对应的存储空间。编程时使用逻辑地址描述,给程序设计带来很大的灵活性。

5. I/O组织 

8086系统和外部设备之间是通过I/O接口进行相互传输信息的。每个I/O接口都有一个或几个I/O端口,一个端口往往对应于接口上一个寄存器或一组寄存器。微机要为每个I/O端口分配一个地址,称端口地址。端口地址和存储单元地址一样,应具有唯一的地址编码。(同5.1.4的1.端口)

微机I/O端口有两种编址方式:(同 5.I/O组织 和 5.2.2 I/O端口的编址方式)
        (1)统一编址 
                这种编址方式是将I/O端口和存储单元统一编址,即把I/O端口置于存储器空间,也看作是存储单元。因此,存储器的各种寻址方式均可用来寻址I/O端口。在这种方式下I/O端口操作功能强,使用起来也很灵活,I/O接口与CPU的连接和存储器与CPU的连接相似。但是I/O端口占用了一定的存储空间,而且执行I/O操作时,因地址位数长,速度较慢。
        (2)独立编址 
                这种编址方法是将I/O端口进行独立编址,I/O端口空间与存储器空间相互独立。这就需要设置专门的输入、输出指令对I/O端口进行操作。8086系统采用的就是这种独立的I/O编址方式。

2.2.2 8086的总线时序

1. 基本概念

(1)时序
        计算机中一条指令的执行,是将指令的功能分成若干个最基本的操作序列,顺序完成这些基本操作来实现指令的功能。这些基本操作由具有命令性质的脉冲信号控制电路各部件来完成。各个命令信号的出现,必须有严格的时间先后顺序。这种严格的时间先后顺序就称为时序,即计算机操作运行的时间顺序。

(2)时钟周期、总线周期、指令周期
        微机系统的工作,必须严格按照一定的时间关系来进行,CPU定时所用的周期有三种,即时钟周期、总线周期和指令周期

        时钟周期(Clock Cycle)
                是CPU的基本时间计量单位,所有操作都以这个时钟周期为基准,它是计算机系统工作速度的重要标志。
                时钟周期由计算机的主频决定,比如8086CPU的主频为5MHz时,一个时钟周期就是200ns。一个时钟周期又称为一个“T状态”或T周期。时钟信号在时间上有先后次序,在空间上由不同的输出信号线输出。时钟脉冲是由时钟发生器8284A产生,通过CPU的CLK输入端输入的。
                8284A是一个时钟发生器/驱动器芯片,它由一个晶体振荡器、一个三分频器、多总线准备好(READY)信号控制逻辑及复位(RESET)信号产生逻辑这几部分组成。

        总线周期(Bus Cycle)【重要】
                是CPU通过系统总线对外部存储器I/O端口进行一次访问(读/写)所需的时间。
                在8086/8088CPU中,一个基本的总线周期由4个时钟周期组成,称为T1、T2、T3和T4状态,但有时也会插入Tw、Ti状态。
                Tw为等待时钟周期,在总线周期的T3和T4之间插入(当READY=0时),总线处于等待状态。(同上面的 准备好READY(22) ) 
                Ti为空闲时钟周期,在两个总线周期之间插入,总线处于空闲状态,即高阻状态。

        指令周期(Instruction Cycle)
                是执行一条指令所需要的时间。每条指令的执行一般由指令、对指令进行译码执行指令等操作组成。一个指令周期由一个或若干个总线周期组成。不同指令的指令周期是不等长的。
                一条指令由若干个总线周期来完成,而一个总线周期是由4个时钟周期来实现的,从而建立了指令周期、总线周期和时钟周期的关系。
                典型的总线周期有存储器读/写周期、I/O端口读/写周期、中断响应周期、空闲周期等,每种类型对应相应的总线操作。

2. 最小模式下的读/写总线周期

8086CPU为了要与存储器及I/O端口交换数据,需要执行一个总线周期,即完成一次总线操作。依照数据传输的方向,总线操作分为总线读操作和总线写操作。总线读操作指CPU从存储器或I/O端口读取数据;总线写操作指CPU将数据写入存储器或I/O端口。一个基本的读/写周期包括4个T状态,即T1、T2、T3、T4。在存储器和外设速度较慢时,要在T3之后插入一个或几个等待周期T w,以使其在数据传送时能与CPU同步。T4 结束后,可以开始新的读写周期,也可不执行总线周期。
        (1)最小模式下的总线读操作

        (2)最小模式下的总线写周期操作

简单汇总
        T1:发地址(前提ALE=1且8284锁存器有效)
        T2:缓冲(针对读地址,因它与写地址的方向相反)
        T3:数据传送(READY信号→Tw等待周期)
        T4:结束

猜你喜欢

转载自blog.csdn.net/qq_59467552/article/details/128298800