第二章 8086系统结构_第1页
第二章 8086系统结构_第2页
第二章 8086系统结构_第3页
第二章 8086系统结构_第4页
第二章 8086系统结构_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章8086系统结构2.18086CPU的结构2.28086的引脚和功能2.38086存储器组织2.48086的工作模式和总线操作8086CPU的基本性能指标

(1)16位微处理器;数据宽度(字长):16位。(2)采用高速运算性能的HMOS工艺制造,芯片上集成了2.9万只晶体;(3)使用单一的+5V电源,40条引脚双列直插式封装(DIP);(4)时钟频率为5MHz~10MHz,基本指令执行时间为0.3ms~0.6ms。(5)16根数据线和20根地址线,寻址能力(或寻址范围)为:220=1MB。(6)8086可以和浮点运算器、输入/输出处理器或其他处理器组成多处理器系统,从而极大地提高了系统的数据吞吐能力和数据处理能力。2.1.18086CPU的内部结构及工作过程

8086是Intel系列的16位微处理器,采用HMOS工艺。同时,Intel还推出了准16位微处理器8088(内部数据总线16位,外部数据总线8位)。主要用于兼容当时的外围接口芯片。

8086CPU内部结构框图如下页图所示。

8086CPU指令执行部件EU总线接口部件BIU2.18086CPU的内部结构内部暂存器

IPESSS

DS

CS输入/输出控制电路外部总线执行部件控制电路123456∑ALU标志寄存器

AHAL

BHBLCHCL

DHDL

SP

BP

SIDI通用AX寄存

BX器CX

DX地址加法器指令队列缓冲器执行部件(EU)总线接口部件(BIU)16位20位16位8位功能:

总线接口部件BIU是CPU与外部(存储器和I/O口)的接口,它提供了16位双向数据总线和20位地址总线,完成所有的外部总线操作。具有地址形成、取指令、指令排队、读/写操作数、总线控制等功能。组成:4个16位段地址寄存器(CS、DS、ES、SS)

16位指令指针寄存器IP20位物理地址加法器

6字节指令队列总线控制器1.总线接口部件BIU(BusInterfaceUnit)

BIU的特点:

8086的指令队列为6个字节,在EU执行指令的同时,BIU可从内存中取出后续的指令代码,放在指令队列中,可以提高CPU的工作效率。

地址加法器用来产生20位物理地址。8086可用20位地址寻址1M字节的内存空间,而CPU内部的寄存器都是16位,因此需要由一个附加的机构来计算出20位的物理地址,这个机构就是20位的地址加法器。

例如:CS=FE00H,IP=0400H,则表示要取指令代码的物理地址为FE400H。2.指令执行部件EU(ExecutionUnit)功能:指令执行部件EU完成指令译码和指令执行的工作。组成:算术逻辑单元ALU

标志寄存器flags

4个16位通用寄存器(AX、BX、CX、DX)

4个16位专用寄存器(BP、SP、SI、DI)

EU控制器

3.BIU与EU的动作协调原则

总线接口部件(BIU)和执行部件(EU)按流水线技术原则协调工作,共同完成所要求的信息处理任务:

(1)每当8086的指令队列中有2个或2个以上空字节时,BIU就会自动把指令从存储器取到指令队列中。其取指的顺序是按指令在程序中出现的前后顺序(根据CS:IP指向的位置)。

3.BIU与EU的动作协调原则(2)每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会将操作数的偏移地址送给BIU,进入总线周期,完成访问内存或者I/O端口的操作;如果此时BIU正好处于空闲状态,会立即响应EU的总线请求。如BIU正将某个指令字节取到指令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应EU发出的访问总线的请求。BIU与EU两者的工作是不同步的,8086可以在执行指令的同时,进行取指令代码的操作,即BIU与EU是一种并行工作方式,改变了以往计算机取指令→译码→执行指令的串行工作方式,提高了总线的利用率,大大提高了工作效率。

(3)当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。

(4)在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序(CS:IP)发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码。等待取指1执行1等待取指2执行2等待取指3执行3CPU总线忙闲忙闲忙闲传统微处理器的指令执行过程取指1取指2取指3取指4取指5取指6EU总线执行1执行2执行3执行4执行5执行6忙忙忙忙忙忙BIU8086CPU的指令执行过程

总结:BIU状态:(1)将指令按序取入指令队列(指令队列中只要有两个字节以上的空,就往指令队列中取指令);(2)响应EU的总线周期,完成访问存储器、I/O口;(3)空闲状态(指令队列不空,也无EU的总线的请求)。EU状态:(1)从BIU指令队列前部取出指令,经指令译码后,执行指令;(2)需要访问存储器、I/O口,向BIU提出总线周期申请;(3)BIU指令队列空时,EU处于等待状态。CPU的工作过程已知:DS=3000H,CS=1000H,当前的IP=100H,执行下面的指令:

MOVAL,[2000H];假设32000单元中的内容为10ADDAL,02HEU和BIU的工作过程:2.1.28086CPU的寄存器DLDHCLCHBLBHALAH

AXBXCXDX通用寄存器

CSDSSSESIPflags变址寄存器指针寄存器堆栈指针基址指针源变址目的变址指令指针状态标志代码段数据段堆栈段附加段段寄存器控制寄存器

SPBPSIDIAX(Accumulator):累加器,存放算术运送操作数、结果;BX(Base):基址寄存器;CX(Count):计数器寄存器;DX(Data):数据寄存器。1.通用寄存器(见教材P26表2-1)

8086有4个16位的通用寄存器(AX、BX、CX、DX),可以存放16位的二进制操作数,也可做为8个相互独立的8位寄存器(AL、AH;BL、BH;CL、CH;DL、DH)来使用。除了作为通用寄存器外,它们还有专门的用途:2.指针和变址寄存器(见教材P26表2-1)

8086有4个16位的指针或变址寄存器(SI、DI、SP、BP)。(1)指针寄存器系统中有两个16位的指针寄存器SP和BP。

BP(BasePoint):基址指针寄存器。用于存放偏移量,通常和SS段寄存器配合使用,在间接寻址中用于定位堆栈段中的内存单元。SP(StackPoint)堆栈指针寄存器,用于存放偏移量,只能和SS段寄存器配合使用,且始终指向堆栈的栈顶,在堆栈指令中隐含的使用它来定位栈顶数据。(2)变址寄存器(见教材P26表2-1)

系统中有两个16位的变址寄存器SI和DI,用于指令的变址寻址方式。

SI(SourceIndex):源变址寄存器。用于存放偏移量或偏移量的一部分,通常和DS、ES这两个段寄存器配合使用,用于定位数据段或附加段中的内存单元。在字符串操作指令中,用于指明源串偏移量。也可同16位的通用寄存器一样使用。

DI(DestinationIndex):目的变址寄存器。用于存放偏移量或偏移量的一部分,通常和DS、ES这两个段寄存器配合使用,用于定位数据段或附加段中的内存单元。在字符串操作指令中,用于指明目的串偏移量。也可同16位的通用寄存器一样使用。

8086CPU共有4个16位的段寄存器,用来存放每一个逻辑段的段起始地址(段基址)。(1)代码段寄存器CS(CodeSegment)

(2)数据段寄存器DS(DataSegment)(3)堆栈段寄存器SS

(StackSegment)(4)附加段寄存器ES(ExtraSegment)

3.段寄存器

8086CPU外部有20位地址总线,可以直接寻址1MB空间,但8086CPU内部的寄存器都是16位的,只能直接寻址64KB,因此存储器的访问必须采用分段技术。段:内存中一段连续的空间,在程序中具有特定的用途。段基址:段在内存中的起始地址=段基值×168086CPU系统中共有4个16位段寄存器,用于存放程序所要使用的4个存储段的段基值,分别对应于内存中的四块存储区域,代码段、堆栈段、数据段、附加段。功能:段寄存器的内容与有效的地址偏移量一起,可确定内存的物理地址。通常CS划定并控制程序区,DS和ES控制数据区,SS控制堆栈区。

代码段:用于存放程序的机器指令序列;堆栈段:用于存放程序使用堆栈指令所保存的数据,自动保存的断点等信息;数据段:存放程序直接使用的数据;附加段:其中的内容不确定,可以由程序开发人员根据实际需要自己决定。

每个程序都可能会使用这样四个段,其中代码段是必须的,实用的程序通常至少包含代码段、堆栈段、数据段。

代码段寄存器CS(CodeSegment)数据段寄存器DS(DataSegment)堆栈段寄存器SS(StackSegment)附加段寄存器ES(ExtraSegment)CS0000

IP代码段DS或ES0000SI、DI或BXSS0000SP或BP数据段堆栈段存储器段寄存器和偏移地址寄存器组合关系4.指令指针及标志寄存器(1)指令指针寄存器IP

IP

用于控制CPU的指令执行顺序(只存放偏移量),只能和代码段寄存器CS配合使用,可以确定当前所要取的指令的内存地址,且始终指向代码段中下一条将要读取到CPU指令队列的那条指令。

顺序执行程序时,CPU每取一个指令字节,IP自动加1,指向下一个要读取的字节;修改IP中内容的操作是CPU在每读取一条指令到指令队列后自动进行的,使它指向要读取的下一条指令。

跳转指令可以隐含的修改IP寄存器中的内容。(2)标志寄存器flags

标志寄存器flags用于存放CPU在工作过程中的状态。

flags为16位寄存器,其中共有9个标志位,可分成两类:一类为状态标志,一类为控制标志。

状态标志:表示前一条指令(如加、减等)执行以后,ALU所处的状态,后续操作可以根据这些状态标志进行判断,实现转移;

控制标志:可以通过指令人为设置,用以对某一种特定的功能起控制作用(如中断屏蔽等),反映了人们对微机系统工作方式的可控制性。

PSW中各标志位的安排如下表所示。

1514131211109876543210

OF

DFIFTF

SFZFAFPF CFD15进借位标志奇偶标志半进借位标志零标志符号标志单步中断中断允许方向标志溢出标志1-有进、借位0-无进、借位1-低4位向高4位有进、借位0-低4位向高4位无进、借位1-低8位有偶数个10-低8位有奇数个11-结果为00-结果不为0D0OFDFIFTFSFZFAFPFCF16位寄存器,其中有7位未用。

PSW是按位操作的。可以通过转移指令来判断标志位的变化,从而实现程序中的分支结构或者循环结构。

PSW中各标志位含义如下:①状态标志:6个

CF—进位标志位,实现加法(或减法)时,当最高位出现进位(或借位),CF位自动置1,反之置0。

PF—奇偶标志位,当运算结果的低8位中l的个数为偶数时,则PF位自动置1,反之为0。AF—半进位标志位,实现加法(或减法)时,当低四位向高四位有进位(或借位),AF位自动置1。通常用于对BCD算术运算结果的调整。例如:11011000+10101110=110000110其中AF=1,CF=1ZF—零标志位,运算结果为0时,ZF位自动置1,否则清0。

SF—符号标志位,当运算结果的最高位为1,SF自动位置1,否则清0。即与运算结果的最高位相同。OF—溢出标志位,OF溢出的判断方法如下:加法运算:

若两个加数的最高位为0,而和的最高位为1,则产生溢出;若两个加数的最高位为1,而和的最高位为0,则产生溢出;两个加数的最高位不相同时,不可能产生溢出。减法运算:

若被减数的最高位为0,减数的最高位为1,而差的最高位为1,则产生溢出;若被减数的最高位为1,减数的最高位为0,而差的最高位为0,则产生溢出;被减数及减数的最高位相同时,按两数的大小判断溢出。如果所进行的运算是带符号数的运算,则溢出标志恰好能够反映运算结果是否超出了8位或16位带符号数所能表达的范围,即字节运算大于+127或小于-128时,字运算大于十32767或小于-32768时,该位置1,反之为0。例如:

01010100 00111001

+0100010101101010 1001100110100011

CF=0、AF=1、PF=1、ZF=0、SF=1、OF=1(两正数相加结果为负)

一般来讲,不是每次运算后所有的标志都改变,只是在某些操作之后,才对其中某个标志进行检查。②控制标志:3个

TF—单步标志位。当TF位置1时,将使8086/8088进入单步工作方式,通常用于程序的调试。

IF—中断允许标志位,若IF位置1,则处理器可以响应可屏蔽中断,否则就不能响应可屏蔽中断。

DF—方向标志位,若DF位置1,则串操作指令的地址修改为自动减量方向,反之,为自动增量方向。2.28086的引脚信号和功能

如下页图所示,是8086/8088CPU的外部结构,即引脚信号图。

8086/8088CPU芯片是40引脚双列直插式(DIP40)封装的集成电路芯片,其中32个引脚在两种工作模式(最小模式和最大模式)下的名称和功能是相同的,还有8个引脚(24----31)在不同的工作模式下,具有不同的名称和功能。

最小模式最大模式最小模式最大模式系统的最小模式:只有8086/8088CPU。系统的最大模式:有两个或两个以上的CPU,一个为主CPU8086/8088,另一个为协CPU8087/8089。1.两种模式下,名称和功能相同的32个引脚(1)VCC、GND:电源、接地引脚,8088/8086CPU采用单一的+5V电源,但有两个接地引脚。(2)AD15—AD0(AddressDataBus)(双向、三态):低16位地址/数据分时复用信号输入/输出引脚(16条)。在传送地址信号时为单向,传送数据信号时为双向。T1状态传地址,T2~T4状态传数据。(3)A19/s6—A16/s3(AddressStatusBus)(输出、三态):高4位地址/状态分时复用信号输出引脚(4条)。访问存储器时T1状态输出高四位地址,访问I/O口时四位为0。T2~T4输出状态。

S6:保持“0”用以指示8086/8088CPU当前与总线连通;

S5:为状态寄存器中断允许标志的状态。若S5=1,当前允许可屏蔽中断;若S5=0,则禁止一切可屏蔽中断。

S4S3

含义

00当前正在使用ES01当前正在使用SS10当前正在使用CS,或者未用任何段寄存器

11当前正在使用DSS4、S3:共有四个组态,用以指明当前使用的段寄存器,如下表所示。(4)NMI(Non-MaskableInterrupt)、INTR(InterruptRequest)

NMI为不可屏蔽中断请求信号输入引脚,上升沿触发,CPU必须在当前指令结束后响应该中断,不受可屏蔽中断允许标志IF的限制,不能用软件屏蔽。中断类型号为2。

INTR为可屏蔽中断请求信号输入引脚,电平(或边沿)触发,高电平(上升沿)有效,CPU在指令的最后一个周期采样INTR,在当前指令结束后响应该中断,可用软件通过复位内部中断允许标志IF来屏蔽INTR信号的中断请求。(5)RD(Read):读控制信号输出引脚,低电平有效,用以指明要执行一个对内存单元或I/O端口的读操作,具体是读内存单元,还是读I/O端口,取决于控制信号。(6)CLK(Clock)(输入):系统时钟信号输入引脚,时钟信号为方波信号,占空比约为33%,即1/3周期为高电平,2/3周期为低电平,8088/8086的时钟频率(又称为主频)为5MHz,即从该引脚输入的时钟信号的频率为5MHz。8086-1时钟频率为10MHz,8086-2时钟频率为8MHz。(7)RESET(Reset)(输入):复位信号输入引脚,高电平有效。8088/8086CPU要求复位信号至少维持4个时钟周期才能起到复位的效果,复位信号输入之后,CPU结束当前操作,进行复位操作,并对微处理器的标志寄存器PSW、IP、DS、SS、ES寄存器及指令队列进行清零操作,而将CS设置为FFFFH。当此引脚变为低电平时,CPU执行重启过程,从存储器地址FFFF0H单元开始执行指令。(8)READY(Ready):“准备好”状态信号输入引脚,高电平有效,“Ready”输入引脚接收来自于内存单元或I/O端口向CPU发来的“准备好”状态信号,表明内存单元或I/O端口已经准备好进行读/写操作。该信号是协调CPU与内存单元或I/O端口之间进行信息传送的联络信号。

CPU在T3(或TW

)状态采样Ready信号,当Ready=0(无效),则在T3(或TW

)状态结束后插入TW状态(等待周期),当Ready=1(有效),进入T4状态,完成数据传送。(9)TEST(Test):测试信号输入引脚,低电平有效,TEST信号与WAIT指令结合起来使用,CPU执行WAIT指令后,处于等待状态,只有当TEST引脚输入低电平时,系统才脱离等待状态,继续执行被暂停执行的指令。否则CPU继续等待。(10)MN/MX(Minimum/MaximumModelControl):最小/最大模式设置信号输入引脚,该输入引脚电平的高、低决定了CPU工作在最小模式还是最大模式,当该引脚接+5V时,CPU工作于最小模式下,当该引脚接地时,CPU工作于最大模式下。(11)BHE/S7(BusHighEnable/Status)(输出、三态):高8位数据总线允许/状态复用信号复用输出引脚。分时输出BHE有效信号(T1状态,表示高8为数据线D15—D8上的数据有效)和S7状态信号,但S7未定义任何实际意义。

BHE信号与A0信号配合,控制数据传送时的字、字节方式。具体规定如下表所示。BHEA0操作所用DB总线引脚

00从偶地址开始传送1个字(低字节在偶地址)AD15----AD001从奇地址开始传送1个字节(高位字节)AD15----AD810从偶地址开始传送1个字节(低位字节)AD7----AD011无效表BHE和A0的代码组合和对应的操作(1)M/IO(Memory/InputandOutput):存储器/IO端口控制输出信号,是CPU区分进行存储器访问还是I/O访问的输出控制信号。

M/IO=1,选择访问存储器(表示CPU与存储器之间进行传送数据);

M/IO=0,选择访问IO端口(表示CPU与之间IO端口进行传送数据)。2.最小模式下的24--31引脚

当8088/8086CPU的MN/MX

引脚固定接+5V时,CPU处于最小模式下,这时候剩余的24—31共8个引脚的名称及功能如下:(2)INTA(InterruptAcknowledge)(输出):中断响应信号输出引脚,低电平有效,该引脚是CPU响应中断请求后,向中断源发出的认可信号,用以通知中断源,以便提供中断类型码。该信号为两个连续的负脉冲,在每个总线周期的T2、T3(TW)状态INTA有效。第一个负脉冲:通知I/O接口,它发出的中断请求已得到允许。第二个负脉冲:I/O接口收到第二个负脉冲后,往数据总线上送自己的中断类型码,从而CPU得到有关此中断源的详细信息。(3)ALE(AddressLockEnable)(输出):地址锁存允许输出信号引脚,高电平有效,在任何一个总线周期的T1状态,ALE有效。CPU通过该引脚向地址锁存器8282发出地址锁存允许信号,把当前地址/数据复用总线上输出的地址信息锁存到地址锁存器8282中去。(4)DEN(DataEnable)(输出、三态):数据允许信号输出引脚,低电平有效,当AD15----AD0作为数据总线使用时,DEN作为外部数据发送器8286的选通信号,表示CPU当前准备发送或接收一个数据。在访问存储器、I/O端口或中断响应周期时DEN有效。(5)DT/R(DataTransmit/Receive)(输出、三态):数据收发控制信号输出引脚,CPU通过该引脚发出控制数据传送方向的控制信号,在使用8286/8287作为数据总线收发器时,DT/R信号用以控制数据传送的方向,DT/R=1,表示发送(数据由CPU经总线收发器8286/8287输出);

DT/R=0

,表示接收(数据由外设经总线收发器8286/8287输入到CPU)。(6)WR(Write)(输出、三态):写控制信号输出引脚,低电平有效,与M/IO配合实现对存储单元、I/O端口进行写操作的控制。注:读RD、写WR信号不会同时有效。(7)HOLD(HoldRequest)(输入):

总线保持请求信号输入引脚。当系统中的其它总线部件要求占用总线时,向CPU发出总线请求信号HOLD=1,要求直接与存储器传送数据。(8)HLDA(HoldAcknowledge)(输出):总线保持响应信号输出引脚,高电平有效。当CPU监测到HOLD有效时,就在当前总线周期T4状态从HLDA引脚向外设发出应答信(HLDA=1),同时使CPU与AB、DB、CB总线浮空,总线请求部件收到HLDA信号后,获得总线控制权(HOLD=1,HLDA=1)。在总线占有部件用完总线后,置HOLD=0无效,CPU检测到HOLD=0后,使HLDA=0,CPU又重新获得AB、DB、CB总线控制权。3.最大模式下的24--31引脚

当8088/8086CPU的引脚MN/MX接地时,CPU处于最大模式下,这时候剩余的24—31共8个引脚的名称及功能如下:

(1)

QS1、QS0(InstructionQueueStatus)(输出):指令队列状态信号输出引脚,这两个信号的组合给出了前一个T状态中指令队列的状态,以便于外部对8086CPU内部指令队列的动作跟踪,如下表所示:QS1QS0含义无操作

00011011从指令队列的第一个字节取走代码

指令队列为空

除第一个字节外,还取走了后续字节中的代码(2)S2、S1、S0(Buscyclestatus)(输出):总线周期状态信号输出引脚,低电平有效,这些信号组合起来,可以指出当前总线周期中,所进行数据传输过程的类型,总线控制器8288利用这些信号来产生对存储单元、I/O端口的控制信号。S2、S1、S0与具体物理过程之间的对应关系,如下表所示。

S2S1S08086总线周期8288命令000

001

010011100101

110111中断响应

I/O端口读I/O端口写暂停

取指令码存储器读存储器写无源状态

INTAIORCIOWCAIOWC无MRDCMRDCMWTCAMWC无效有源状态:对于S2、S1、S0的组合来说,在前一个总线周期的T4状态和本总线周期的T1和T2状态中,至少有一个信号为0(低电平),每种组合都对应一个具体的总线操作,称为有源状态。无源状态:在总线周期的T3和TW状态且READY=1时,S2S1S0=111(全为高电平),此时一个总线操作即将结束,另一个总线周期还未开始,称为无源状态。在无源状态时,若S2、S1、S0其中任一信号的改变,都意味着一个新的总线周期的开始。(3)LOCK(Lock)(输出、三态):总线封锁输出信号引脚,低电平有效。当该引脚输出低电平时,系统中其它总线部件不能占用系统总线。

LOCK信号是由指令前缀LOCK产生的,在LOCK前缀后面的一条指令执行完毕之后,便撤消LOCK信号。此外,在8086的2个中断响应脉冲之间

LOCK信号也自动变为有效的低电平,以防止其它总线部件在中断响应过程中,占有总线而使一个完整的中断响应过程被中断。(4)RQ/GT0、RQ/GT1(Request/Grant)(双向):总线请求信号输入/总线允许信号输出引脚。输入时,表示其他主控者向CPU请求使用总线;输出时,表示CPU对总线请求的响应信号。这两个信号端可供CPU以外的两个处理器,用来发出使用总线的请求信号和接收CPU对总线请求信号的应答。这两个引脚都是双向的,请求与应答信号在同一引脚上分时传输,方向相反。其中RQ/GT0比RQ/GT1的优先级高。

4.8086/8088CPU的引脚分类

(1)数据/地址复用线、地址/状态复用线:AD0~AD7、AD8~AD15、A16/S3~A19/S6(2)电源、地:VCC、GND(2个)(3)最小模式下与地址总线有关的控制信号:ALE(4)最小模式下与数据总线有关的信号:DEN、DT/R、BHE/S7

(5)最小模式下与CPU有关的控制信号:RESET、CLK、TEST、READY、HOLD、HLDA(6)最小模式下与存储器、I/O操作有关的信号:M/IO、RD、WR(7)最小模式下与中断有关的信号:NMI、INTR、INTA(8)最小/最大模式选择信号:MN/MX(9)最大模式下总线周期状态信号:S2、S1、S0(10)最大模式下指令队列状态信号:QS1、QS0(11)最大模式下总线请求信号/总线请求允许信号:RQ/GT1、RQ/GT0(12)总线封锁信号:LOCK8088CPU注意与8086的不同

最小模式最大模式最小模式最大模式VCCA152.38086存储器组织2.3.1段地址和偏移地址1.存储器地址的分段

由于CPU内部的寄存器都是16位的,为了能够提供20位的物理地址,8086系统中采用了存储器分段的方法,每个段为64KB,由段寄存器来确定存储单元的段地址,由指令提供该单元相对于相应段起始地址的16位偏移量。这样,系统的整个存储空间可分为16个互不重叠的逻辑段。如右图所示。

存储器的每个段的容量为64KB,并允许在整个存储空间内浮动,即段与段之间可以部分重叠、完全重叠、连续排列,非常灵活,如右图所示。2.存储容量

8086系统有20根地址总线,因此,它可以直接寻址的存储器单元数为220=1MB,这1MB的存储器单元按照00000~FFFFFH来编址。

3.逻辑地址(LA)和物理地址(PA)

物理地址:

8086可直接寻址1MB的存储空间,其地址区域为00000H~FFFFFH,是与存储单元一一对应的20位地址,我们称之为存储单元的物理地址。就是存储器的实际地址,它是指CPU和存储器进行数据交换时所使用的地址(20位)。

逻辑地址:是在程序中使用的地址,它由段地址和偏移地址两部分组成(都是16位)。逻辑地址的表示形式为“段地址:偏移地址”。

物理地址是由段地址与偏移地址共同决定的,段地址来自于段寄存器(CS、DS、ES、SS),是十六位地址,由段地址及偏移地址计算物理地址的表达式为:

物理地址=段地址×16+偏移地址

例如:系统启动后,指令的物理地址由CS的内容与IP的内容共同决定,由于系统启动的CS=FFFFH,IP=0000H,所以初始指令的物理地址为FFFF0H,我们可以在FFFF0H单元开始的几个单元中,固化一条无条件转移指令的代码,即转移到系统初始化程序部分所在存储器的地址位置处。注意:物理地址与逻辑地址并不是一一对应的,举例:6830H:12A0H和6840H:11A0H,物理地址都为695A0H。20位物理地址是由段地址与偏移地址共同决定

4.偏移地址

偏移地址是某存储单元相对其所在段起始位置的偏移字节数,或简称偏移量。它是一个16位的地址,根据指令的不同,它可以来自于CPU中不同的16位寄存器(IP、SP、BP、SI、DI、BX等)或是一个直接在程序中给出的地址偏移量。5.20位物理地址的形成代码段:物理地址=CS×16+IP数据段:物理地址=DS×16+(SI、DI等)附加段:物理地址=ES×16+(BP、BX等)堆栈段:物理地址=SS×16+(SP、BP等)2.3.28086存储器的分体结构(P34)

存储器是按字节进行组织的,两个相邻的字节被称为一个“字”。存放的信息若是以字节(8位)为单位的,将在存储器中按顺序排列存放;若存放的数据为一个字(16位)时,则将每一个字的低字节(低8位)存放在低地址中,高字节(高8位)存放在高地址中,并以低地址作为该字的地址。在组成与8086CPU连接的存储器时,1M字节的存储空间实际上被分成两个512K字节的存储体,分别叫奇地址存储体和偶地址存储体。奇地址存储体(高字节存储体):与8086CPU的高8位数据线D15~D8相连,地址均为奇地址,由BHE引脚选通。偶地址存储体(低字节存储体):与8086CPU的低8位数据线D7~D0相连,地址均为偶地址,由最低位地址线A0选通。

1MB的存储器单元的地址分为奇地址和偶地址,由BHE和A0控制读写顺序。BHE=0(有效),从奇地址传送高8位数据;A0=0,从偶地址传送低8位数据。BHE与A0的组合及对应的操作如下表所示。

BHEA0操作所用DB总线引脚

00从偶地址开始传送1个字(低字节在偶地址)AD15----AD001从奇地址开始传送1个字节(高位字节)AD15----AD810从偶地址开始传送1个字节(低位字节)AD7----AD011无效

如果一个16位数据,高8位数据存储在存储器的奇地址单元中,低8位数据存储在存储器的偶地址单元中,则读写该数据需要一个总线周期。

如果一个16位数据,高8位数据存储在存储器的偶地址单元中,低8位数据存储在存储器的奇地址单元中,则读写该数据需要两个总线周期。第一个总线周期用于在奇地址中完成低8位数据的传送;第二个总线周期用于在偶地址中完成高8位数据的传送;这些都是8086自动完成的。所以,这种情况下,除增加一个总线周期外,其余与从偶地址开始的16位数据的操作是一样的。但编程时尽量“对准存放”,以缩短程序执行的时间。8086与8088存储器的区别(P36)2.3.3堆栈的概念(P33)堆栈:在存储器中开辟一段区域,用于存储一些暂时需要保护而以后还要用到的数据(如中断现场的保护与恢复、子程序现场的保护与恢复等),这个区域称为堆栈。堆栈的特点:

(1)堆栈存储数据的原则为后进先出。

(2)堆栈单元在存储器中的位置由SS:SP确定。(3)堆栈指针SP在8086系统中始终指向栈的顶部,即:始终指向最后压入栈中的数据的地址。(4)8086系统中栈的操作是以字为单位的。执行一次入栈操作,自动使SP-2然后数据入栈,直至SP=0栈满为止。执行一次出栈操作,数据出栈然后自动使SP+2。

(5)PUSH和POP指令要成对出现。功能:主要用于保护中间数据,子程序、中断程序的现场等。AX=3322H,BX=1100H,CX=6655HSS=C000H,SP=1000H

堆栈主要用于中断和子程序调用时的断点和现场保护,中断或调用结束后还要恢复断点和现场。PUSH和POP指令要成对出现,而且要先入后出,才能正确恢复断点和现场。2.48086工作模式和总线操作8088/8086CPU工作在两种模式下:最小模式(最小工作方式):单微处理器系统(系统中只有一个8086微处理器),所有的总线控制信号,都是直接由8086CPU产生的,适用于规模较小的微机应用系统。当把8086的33脚MN/MX接+5V时,8086CPU就处于最小工作方式。

最大模式(最大工作方式):多微处理器系统(包含有两个或多个微处理器,一个主处理器8086CPU,其他的处理器称为协处理器它们是协助主处理器工作的。),主要用在中等或大规模的8086系统中。当把8086的33脚MN/MX接地时,8086CPU就处于最大模式。2.4.1最小模式系统74LS37374LS24582841.数据总线缓冲器74LS244和74LS245(1)单向数据总线缓冲器74LS244

P38

图2.11两个控制信号:

使能控制信号1G

使能控制信号2G1G=0,1A11A4端的信号被传送到1Y11Y4;

2G=0,2A12A4端的信号被传送到2Y1~2Y4;当1G和2G=1时,输出呈高阻态。常把1G和2G连起来,由1个片选信号控制8位。(2)双向数据总线缓冲器74LS245(或Intel8286/8287

)P38

图2.12两个控制信号:

使能控制信号G

方向控制DIR

只有G=0,数据才能传输,AB或AB;

DIR=1,AB;

DIR=0,AB。(2)双向数据总线收发器74LS24574LS245是典型的8位总线收发器,8位输入(A1----A8),8位输出(B1----B8)。只有G=0,数据才能传输。

DIR为控制数据传送方向信号,DIR=1时,A1----A8为输入,B1----B8为输出;DIR=0时,B1----B8为输入,A1----A8

为输出。门控信号G(低电平有效)。

74LS245与8086连接时,作为8086外部总线收发器,8086有16条数据线,需要2片74LS245

。74LS245的输入与8086的地址线AD15----AD0相连,输出即为8086系统的数据总线;74LS245的DIR接8086(或8288)的DT/R,74LS245的G接8086(或8288)的DEN。2.锁存器74LS373(或Intel8282/8283)两个控制端:

输入使能端G

允许输出端OEG=1,直通;G=0,锁存,D端变化不影响输出。

OE=0,Q经三态门反相后,传到输出端O;OE=1,则G控制无效,输出呈高阻态,与总线断开。2.锁存器74LS373(或Intel8282)

P39图2.1374LS373是典型的8位锁存器,8位输入(1D----8D),8位输出(1O----8O),输入使能信号(锁存输入信号)G,输出数据允许信号OE(低电平有效)。8282作为锁存器,其用法与74LS373完全一样。

74LS373与8086连接时,作为8086外部地址锁存器,8086有20条地址线,加上高8位数据允许引脚BHE,共21条线,需要3片74LS373。74LS373的输入与8086的地址线A19----A16、AD15----AD0、BHE相连,输出即为8086系统的地址线和BHE;74LS373的G接8086的ALE,74LS373的OE接地,直接数据输出允许。3.时钟发生器8284

P40

图2.14

(1)输入晶振与复位晶振接8284的X1、X2引脚(F/C接低电平,选择外界晶振产生时钟),外部复位接RST引脚。

(2)输出

CLK(系统时钟);RESET(复位)

READY(准备好);PCLK(辅助时钟)(3)外部复位的接法

常用的有上电复位和按键复位两种方法,如下图所示。

8284低电平复位。

上电复位按键复位8284与8086的连接8086最小模式系统配置8086最小模式下的典型配置

1.MN/MX端接+5V,决定了CPU的工作模式;2.需要一片8284A,作为时钟信号发生器;3.需要三片74LS273或8282,用来作为地址信号的锁存器;4.当系统中所连的存储器和外设端口较多时,需要增加数据总线的驱动能力,这时,需用2片74LS245作为总线收发器。

取指令进入指令队列和访问存储器、I/O端口时均需BIU执行一个总线周期。

1.时钟周期:CPU时钟频率的倒数称为时钟周期,也称T状态,是8086操作的最小时间状态。

2.总线周期:BIU完成一次访问存储器或I/O端口操作所需要的时间称为总线周期。一个基本的总线周期是由4个(或4个以上)时钟周期组成的。

3.指令周期:执行一条指令所需要的时间称为指令周期,不同指令的指令周期的长短是不同的。一个指令周期是由几个总线周期组成的。

时序:时序是计算机操作运行的时间顺序。2.4.3总线操作时序4.一个基本的总线周期的4个T状态:

T1:CPU向多路复用总线发出地址信息,指出要寻址的存储单元或I/O端口。

T2:低16位地址信号从总线上撤销,呈高阻。高4位地址总线输出状态信息

T3:高4位总线仍然输出状态信息,低16位总线上出现的是数据信号。读----存储器或I/O端口的数据送到总线上,写----CPU的数据送到总线上。注:当被写入(或读出)数据的存储器或I/O端口不能及时配合CPU传送数据的情况下,存储器或I/O端口向CPU发出数据未准备好信号(READY),则CPU会在T3之后插入一个或多个附加的时钟周期TW(等待状态),直至存储器或I/O端口准备好传送数据为止。

T4:总线周期结束。8086微机系统的主要操作

8086/8088微机系统,能够完成的操作有下列几种主要类型:系统的复位与启动操作;暂停操作;总线操作(I/O读、I/O写、存储器读、存储器写);中断操作;最小模式下的总线保持;最大模式下的总线请求/允许。

系统的复位和启动操作

8086/8088的复位和启动操作,对最大小模式都一样的,是通过RESET引脚上的触发信号来执行的,当RESET引脚上至少维持有4个时钟周期的高电平时,CPU就结束当前操作,进入初始化(复位)过程。包括把各内部寄存器(除了CS)清0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论