版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章8086系统结构
2.18086CPU结构
2.28086CPU的引脚及其功能
2.38086存储器组织
2.48086系统配置
8086是Intel系列的16位微处理器。使用HMOS工艺制造,芯片上集成了2.9万个晶体管,用单一的+5V电源供电,封装在标准的40引脚双列直插式管壳内,时钟频率5MHz
10MHz。
8086有16条数据总线,可以处理8位或16位数据。有20条地址总线,可以直接寻址1M(220)字节的存储单元和64K个I/O端口。在8086推出后不久,为方便原8位机用户,Intel公司很快推出了8088微处理器,其指令系统与8086完全兼容,CPU内部结构仍为16位,但外部数据总线是8位的,这样设计的目的主要是为了与原有的8位外围接口芯片兼容。并以8088为CPU组成了IBMPC、PC/XT等准16位微型计算机,由于其性能价格比高,很快占领了市场。8086微处理器
8086/8088微处理器是Intel公司推出的第三代CPU芯片,它们的内部结构基本相同,都采用16位结构进行操作及存储器寻址,但外部性能有所差异,两种处理器都封装在相同的40脚双列直插组件中。
Intel公司同期推出的Intel8088微处理器是一种准16位微处理器,其内部寄存器,内部操作等均按16位处理器设计,与Intel8086微处理器基本上相同,不同的是其对外的数据线只有8位,目的是为了方便地与8位I/O接口芯片相兼容。8088微处理器2.18086CPU结构2.1.18086CPU的内部结构2.1.2寄存器结构8086CPU可分为两部分,即总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)。8086微处理器的组成:总线接口部件(BIU):组成:①段寄存器(DS、CS、ES、SS);
②16位指令指针寄存器IP(指向下一条要取出的指令代码);
③20位地址加法器(用来产生20位地址);
④6字节(8088为4字节)指令队列缓冲器;
⑤总线控制逻辑。功能:负责从内存中取指令,送入指令队列,实现CPU与存储器和I/O接口之间的数据传送。执行部件(EU)组成:①ALU(算术逻辑单元);
②通用寄存器(AX、BX、CX、DX);
③专用寄存器(BP、SP、SI、DI);
④标志寄存器(PSW);
⑤EU控制系统。功能:负责分析指令和执行指令。1.总线接口部件BIU
总线接口部件BIU的功能是负责完成CPU与存储器或I/O设备之间的数据传送。具体任务是:①指令队列出现空字节(8088CPU1个空字节,8086CPU2个空字节)时,从内存取出后续指令。BIU取指令时,并不影响EU的执行,两者并行工作,大大提高了CPU的执行速度。②EU需要从内存或外设端口读取操作数时,根据EU给出的地址从内存或外设端口读取数据供EU使用。③EU的运算结果、数据或控制命令等由BIU送往指定的内存单元或外设端口。
总线接口部件BIU
总线接口部件BIU内包括:
4个16位段寄存器:代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加数据段寄存器ES;
1个16位的指令指针寄存器IP(InstructionPointer);
1个20位地址加法器;
1个6字节指令队列缓冲器;
1个与EU通讯的内部寄存器以及总线控制电路等。8086CPU内部结构框图
BIU和EU按以下流水线技术原则协调工作,共同完成所要求的任务:①每当8086的指令队列中有两个空字节,BIU就会自动把指令取到指令队列中。其取指的顺序是按指令在程序中出现的前后顺序。②每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者I/O端口的操作;如果此时BIU正好处于空闲状态,会立即响应EU的总线请求。如BIU正将某个指令字节取到指令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应EU发出的访问总线的请求。③当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。④在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码。BIU和EU的动作协调原则BIU和EU的动作协调原则
将8086CPU分成两个独立的功能部件使二者能够并行工作,把取指令工作和分析指令、执行指令工作重叠进行,从而提高CPU的工作效力,加快指令的执行速度。指令队列可以被看成是一个特殊的RAM,它的工作原理是"先进先出",写入的指令只能存放在队列尾,读出的指令是队列头存放的指令。EU和BIU之间就是通过指令队列联系起来,多数情况下,BIU在不停地向队列写入指令,而EU每执行完一条指令后,就向队列读取下一条指令。二者的动作既独立,又协调。段寄存器8086CPU的地址引脚有20根,能提供20位的地址信息,可直接对1M个存储单元进行访问,但CPU内部可用来提供地址信息的寄存器都是16位的,那么如何用16位寄存器实现20位地址的寻址呢?8086/8088采用了段结构的内存管理的方法。将指令代码和数据分别存储在代码段、数据段、堆栈段、附加数据段中,这些段的段地址分别由段寄存器CS、DS、SS、ES提供,而代码或数据在段内的偏移地址则由有关寄存器或立即数给出。指令指针寄存器
指令指针寄存器IP用来存放下一条要读取的指令在代码段中的偏移地址。IP在程序运行中能自动加1修正,从而使其始终存放的是下一条要读取的指令在代码段的偏移地址。由于CS和IP的内容决定了程序的执行顺序,因此程序员不能直接用赋值指令对其内容进行修改。20位地址加法器8086/8088CPU在对存储单元进行访问以读取指令或读/写操作数时,必须在地址总线上提供20位的地址信息,以便选中对应的存储单元。CPU提供的用来对存储单元进行访问的20位地址是由BIU中的地址加法器产生的。存储器中每个存储单元的地址可有以下两种表示方式:逻辑地址和物理地址。逻辑地址其表达形式为“段地址:段内偏移地址”。段内偏移地址又称为“有效地址EA(EffectiveAddress)。在读指令时,段地址由代码段寄存器CS提供,当前要读取指令在代码段中的偏移地址由指令指针寄存器IP提供;在读取或存储操作数时,根据具体操作,段地址由DS、ES或SS提供,段内偏移地址由指令给出。物理地址CPU与存储器进行数据交换时在地址总线上提供的20位地址信息称为物理地址。当由IP提供或由EU根据指令所提供寻址方式计算出寻址单元的16位段内偏移地址后,把该偏移地址和段寄存器内容左移四位后(相当于乘以10H)得到的段基址(段内第一个存储单元的物理地址)同时送到BIU中的地址加法器,形成一个20位的物理地址,从而实现对存储单元的访问。由逻辑地址求物理地址的公式为:
物理地址=段地址
10H+段内偏移地址
物理地址的形成指令队列缓冲器8086的指令队列有6个字节,8088的指令队列有4个字节。对8086而言,当指令队列出现2个空字节,对8088而言,指令队列出现1个空字节时,BIU就自动执行一次取指令周期,将下一条要执行的指令从内存单元读入指令队列。它们采用“先进先出”原则,按顺序存放,并按顺序取到EU中去执行。指令队列缓冲器当EU执行一条需要到存储器或I/O端口读取操作数的指令时,BIU将在执行完现行取指令的存储器周期后的下一个存储周期,对指令所指定的存储单元或I/O端口进行访问,读取的操作数经BIU送EU进行处理。当EU执行跳转、子程序调用或返回指令时,BIU就使指令队列复位,并从指令给出的新地址开始取指令,新取的第1条指令直接经指令队列送EU执行,随后取来的指令将填入指令队列缓冲器。指令队列的引入使得EU和BIU可并行工作,即BIU在读指令时,并不影响EU单元执行指令,EU单元可以连续不断地直接从指令队列中取到要执行的指令代码,从而减少了CPU为取指令而等待的时间,提高了CPU的利用率,加快了整机的运行速度。2.执行单元EU执行单元EU不与系统外部直接相连,它的功能只是负责执行指令。执行的指令从BIU的指令队列缓冲器中直接得到,执行指令时若需要从存储器或I/O端口读取操作数时,由EU向BIU发出请求,再由BIU对存储器或I/O端口进行访问。EU由下列部件组成:1.16位算术逻辑单元(ALU):用于进行算术和逻辑运算。2.16位标志寄存器FLAGS:用来存放CPU运算的状态特征和控制标志。3.数据暂存寄存器:协助ALU完成运算,暂存参加运算的数据。4.
通用寄存器:包括4个16位数据寄存器AX、BX、CX、DX和4个16位指针与变址寄存器SP、BP与SI、DI。5.EU控制电路:它是控制、定时与状态逻辑电路,接收从BIU中指令队列取来的指令,经过指令译码形成各种定时控制信号,对EU的各个部件实现特定的定时操作。2.18086CPU结构2.1.18086CPU的内部结构2.1.2寄存器结构寄存器结构位于CPU芯片内部的寄存器的存取速度比存储器快得多。寄存器可以用来存放运算过程中所需要的操作数地址、操作数及中间结果。8086微处理器内部包含有4组16位寄存器,它们分别是通用寄存器组、指针和变址寄存器、段寄存器、指令指针寄存器和标志位寄存器。寄存器结构通用寄存器
每一个数据寄存器都是16位寄存器可将高8位和低8位分别作为两个独立的8位寄存器用。注意:8086/8088CPU的14个寄存器除了这4个16位寄存器能分别当作两个8位寄存器来用之外,其它寄存器都不能如此使用。上述4个寄存器一般用来存放数据,但它们各自都有自己的特定用途:AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的I/O指令都使用该寄存器与外设端口交换信息。
BX(Base)称为基址寄存器。8086/8088CPU中有两个基址寄存器BX和BP。BX用来存放操作数在内存中数据段内的偏移地址,BP用来存放操作数在堆栈段内的偏移地址。CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。DX(Data)称为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。指针和变址寄存器
SP:在堆栈操作中用来存放栈顶的偏移地址,指向堆栈的栈顶。BP:基地址指针寄存器。一般用来存放访问内存时的基地址。通常是与SS寄存器配对使用。
BX通常是与DS寄存器配对使用。SI、DI:变址寄存器
常常在变址寻址方式中作为索引指针。在字符串操作指令中,要求用SI作为源变址寄存器,存放源操作数的偏移地址;DI作为目标变址寄存器,存放目标操作数的偏移地址。段寄存器CS:代码段的段基地址。它和指令指针IP一起决定下一条所要执行指令的物理存储地址。代码段存放的是当前执行程序的指令代码。DS:数据段的段基地址。数据段通常用来存放数据和字符。ES:附加段的段基地址。附加段主要用在字符串操作时作为目标地址使用。SS:堆栈段的段基地址。堆栈用于存放当前暂时不用但又需要保存的数据和地址。堆栈是存储器中开辟的按先进后出原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程序时保护断点和现场。指令指针寄存器IP
用来存放下一条要执行指令的偏移地址。
CPU取指令时总是以CS的内容为段基地址,以IP为段内偏移地址。
当CPU从CS段偏移地址为(IP)的内存单元中取出指令代码的一个字节后,IP自动加1,指向指令代码的下一个字节。
遇到过程调用、转移及返回等指令时,系统将根据程序确定新的IP的内容,使其不再加1。用户程序不能直接访问IP(指令的操作数不能是IP)。FLAGS:标志寄存器,也称程序状态字,是一个16位寄存器,但只使用了其中的9位,包括6个状态标志位和3个控制标志位。(1)状态标志:反映指令执行后运算结果特征.CF(进位标志):CF=D7CY或D15CY
执行算术运算指令后,结果的最高位(字节时为D7CY,字时为D15CY)向更高位产生进位,则CF=1,否则CF=0。该标志主要用于多字节加、减运算。
例:3FH+0B4H0BFH+0B4H0011111110111111+10110100+1011010011110011;CF=0101110011;CF=1例:
38H+49H
00111000
+01001001
10000001;
AF=1;若视为BCD运算,则应调整.
PF(奇偶校验标志):PF=D7
…
D0
运算结果的低8位中“1”的个数为偶数,则PF=1,否则PF=0。主要用于检测数据通信中是否发生错误。
AF(辅助进位标志):AF=D3CY
字节运算中,低4位向高4位有进位或借位时,则AF=1,否则AF=0。用于BCD码运算的调整指令中。ZF(零标志):运算结果为0,则ZF=1,否则ZF=0。SF(符号标志)SF=D7或D15
运算结果为正数,则SF=0,为负数,则SF=1。
如:3FH+0B4H=0F3H的SF=1
而:0BFH+B4H=173H的SF=0
OF(溢出标志):OF=D7CY
D6CY或D15CY
D14CY当运算结果超出了机器所能表示的范围时,则OF=1,否则OF=0。如:3FH+0B4H=0F3H中OF=0而:0BFH+0B4H=173H中OF=1注意:实际上机器把所有数都当无符号数运算,把结果都当符号数来设置标志。以上6个标志为指令执行后的结果标志,可作为控制转移的条件。例:假设执行一条加法指令,计算5439H+476AH后各状态标志位的状态为何?解:
0101010000111001+010001110110l0101001101110100011则执行这条加法指令后标志寄存器的状态为:CF=0,PF=1,AF=1,ZF=0,SF=1,OF=1。(2)控制标志----控制CPU的状态。DF(方向标志):控制字符串操作中地址的步进方向.DF=0,地址增址;DF=1,地址减址.专门用于DF的指令:CLDDF=0;STDDF=1IF(中断允许标志):控制CPU是否开中断。IF=1,允许CPU响应外部可屏蔽中断。IF=0,禁止CPU响应外部可屏蔽中断。两条关于IF的专用指令:CLIIF=0;STIIF=1
TF(跟踪标志):TF=1,CPU处于单步工作方式,即CPU每执行一条指令就自动地发生一个内部中断,CPU转去执行一个中断程序,常用于程序调试,又称为陷阱标志。TF=0,CPU正常执行程序。第2章8086系统结构
2.18086CPU结构
2.28086CPU的引脚及其功能
2.38086存储器组织
2.48086系统配置
8086/8088CPU在与存储器或I/O端口交换数据时需要启动一个总线周期。按照数据的传送方向来分,总线周期可分为“读”总线周期(CPU从存储器或I/O端口读取数据)和“写”总线周期(CPU将数据写入存储器或I/O端口)。
8086/8088CPU基本的总线周期由4个时钟周期组成。
时钟周期是CPU的基本时间计量单位,由CPU主频决定,如8086的主频为5MHz,1个时钟周期就是200ns。一个时钟周期又称为一个T状态,因此基本总线周期用T1、T2、T3、T4表示。总线周期8086/8088基本总线周期
图(a)在T1状态CPU把要读/写的存储单元的地址或I/O端口的地址放到地址总线上。若是“写”总线周期,CPU从T2起到T4,把数据送到总线上,并写入存储器单元或I/O端口;若是“读”总线周期,CPU则从T3起到T4从总线上接收数据;T2状态时总线浮空,允许CPU有个缓冲时间把输出地址的写方式转换成输入数据的读方式。图a
图(b)是具有空闲状态的总线周期。如果在一个总线周期之后不立即执行下一个总线周期,即CPU此时执行的指令不需要对存储器或I/O端口进行访问,且目前指令队列满而不需要到内存中读指令,那么系统总线就处于空闲状态,即执行空闲周期。在空闲周期,尽管CPU对总线进行空操作,但在CPU内部,仍然进行着有效的操作,如执行某个运算、在内部寄存器之间传送数据等。图b
图(c)是具有等待状态的总线周期。在T3状态结束之前,CPU测试READY信号线:若READY为有效的高电平,则说明数据已准备好,可进入T4状态;若READY为低电平,则说明数据没有准备好,CPU在T3之后插入1个或多个等待周期TW,直到检测到READY为有效高电平后,CPU会自动脱离TW而进入T4状态。这种延长总线周期的措施允许系统使用低速的存储器芯片。图c
8086/8088芯片的引脚应包括20根地址线,16根(8086)或8根(8088)数据线以及控制线、状态线、电源线和地线等,若每个引脚只传送一种信息,那么芯片的引脚将会太多,不利于芯片的封装,因此,8086/8088CPU的部分引脚定义了双重功能,采用了分时复用的方式,即在不同的时刻分别传送地址或数据信息等。此外,8086/8088CPU可以工作在两种模式(最小模式和最大模式),最小模式用于单机系统,系统中所需要的控制信号由8086直接提供;最大模式用于多处理机系统,系统中所需要的控制信号由总线控制器8288提供。这样,24脚~31脚的8条引脚在两种工作模式中具有不同的功能。8086CPU的引脚及其功能8086/8088CPU引脚
8086CPU引脚
8086CPU引脚按功能可分为三大类:电源线和地线,地址/数据引脚以及控制引脚。
1.电源线和地线电源线VCC(第40引脚):输入,接入
10%单一+5V电源。地线GND(引脚1和20):输入,两条地线均应接地。
2.地址/数据(状态)引脚
地址/数据分时复用引脚AD15
AD0(AddressData,三态):引脚39及引脚2
16,分时输出低16位地址信号及进行数据信号的输入/输出,传送地址时单向输出,传送数据时双向输入或输出。
地址状态分时复用引脚A19/S6
A16/S3(Address/Status,三态):引脚35
38,输出、三态总线,分时输出地址的高4位及状态信息,其中S6为0用以指示8086/8088CPU当前与总线连通;S5为1表明8086/8088CPU可以响应可屏蔽中断;S4、S3共有四个组合状态,用以指明当前使用的段寄存器,00—ES,01—SS,10—CS,11—DS。
CPU部分引脚的三态性所谓三态是指总线输出可以有三个状态:高电平、低电平和高阻状态。当处于高阻状态时,该总线在逻辑上与所有连接负载断开。
3.控制引脚
(1)NMI(Non-MaskableInterrupt):引脚17,非屏蔽中断请求信号,输入,上升沿触发。此请求不受标志寄存器FLAGS中中断允许标志位IF状态的影响,只要此信号一出现,在当前指令执行结束后立即进行中断处理。
(2)INTR(InterruptRequest)
:引脚18,可屏蔽中断请求信号,输入,高电平有效。CPU在每个指令周期的最后一个时钟周期检测该信号是否有效,若此信号有效,表明有外设提出了中断请求,这时若IF=1,则当前指令执行完后立即响应中断;若IF=0,则中断被屏蔽,外设发出的中断请求将不被响应。程序员可通过指令STI或CLI将IF标志位置1或清零。
(3)CLK(Clock):引脚19,系统时钟,输入。它通常与8284A时钟发生器的时钟输出端相连。该时钟信号有效高电平与时钟周期的比为1∶3。
(4) RESET:引脚21,复位信号,输入,高电平有效。复位信号使处理器马上结束现行操作,对处理器内部寄存器进行初始化。8086/8088要求复位脉冲宽度不得小于4个时钟周期。复位后,内部寄存器的状态如下表所示。系统正常运行时,RESET保持低电平。复位后内部寄存器的状态
内部寄存器状态标志寄存器IPCSDSSSES指令队列缓冲器其余寄存器0000H0000HFFFFH0000H0000H0000H空0000H
(5) READY:引脚22,数据“准备好”信号线,输入。它实际上是所寻址的存储器或I/O端口发来的数据准备就绪信号,高电平有效。
CPU在每个总线周期的T3状态对READY引脚采样,若为高电平,说明数据已准备好;若为低电平,说明数据还没有准备好,CPU在T3状态之后自动插入一个或几个等待状态TW,直到READY变为高电平,才能进入T4状态,完成数据传送过程,从而结束当前总线周期。
(6)
:引脚23,等待测试信号,输入。当CPU执行WAIT指令时,每隔5个时钟周期对引脚进行一次测试。若为高电平,CPU就仍处于空转状态进行等待,直到引脚变为低电平,CPU结束等待状态,执行下一条指令,以使CPU与外部硬件同步。
(7)(Read):引脚32,读控制信号,输出。当=0时,表示将要执行一个对存储器或I/O端口的读操作。到底是从存储单元还是从I/O端口读取数据,取决于M/(8086)或IO/(8088)信号。
(8)BHE/S7(BusHighEnable/Status):引脚34,高8位数据总线允许/状态复用引脚,输出。BHE在总线周期的T1状态时输出,当该引脚输出为低电平时,表示当前数据总线上高8位数据有效。该引脚和地址引脚A0配合表示当前数据总线的使用情况,如下表所示,S7
在8086中未被定义,暂作备用状态信号线。BHE与地址引脚A0编码的含义A0数据总线的使用情况0011010116位字传送(偶地址开始的两个存储器单元的内容)在数据总线高8位(D15
D8)和奇地址单元间进行字节传送在数据总线低8位(D7
D0)和偶地址单元间进行字节传送无效
(9)MN/MX(Minimum/Maximummodecontrol):引脚33,最小/最大方式控制信号,输入。MN/MX引脚接高电平时,8086/8088CPU工作在最小方式,在此方式下,全部控制信号由CPU提供;MN/MX引脚接低电平时,8086/8088工作在最大方式,这时,CPU发出的控制信号经8288总线控制器进行变换和组合,从而使总线的控制功能更加完善。
8086最小工作方式及引脚24
31的定义在最小方式下,第24
31引脚的功能如下:
(1)INTA(InterruptAcknowledge):引脚24,中断响应信号,输出。该信号用于对外设的中断请求(经INTR引脚送入CPU)作出响应。INTA实际上是两个连续的负脉冲信号,第一个负脉冲通知外设接口,它发出的中断请求已被允许;外设接口接到第2个负脉冲后,将中断类型号放到数据总线上,以便CPU根据中断类型号到内存的中断向量表中找出对应中断的中断服务程序入口地址,从而转去执行中断服务程序。
(2) ALE(AddressLatchEnable):引脚25,地址锁存允许信号,输出。它是8086/8088提供给地址锁存器的控制信号,高电平有效。在任何一个总线周期的T1状态,ALE均为高电平,以表示当前地址/数据复用总线上输出的是地址信息,ALE由高到低的下降沿把地址装入地址锁存器中。
(3)DEN(DataEnable):引脚26,数据允许信号,输出。当使用数据总线收发器时,该信号为收发器的OE端提供了一个控制信号,该信号决定是否允许数据通过数据总线收发器。DEN为高电平时,收发器在收或发两个方向上都不能传送数据,当DEN为低电平时,允许数据通过数据总线收发器。
(4) DT/R(DataTransmit/Receive):引脚27,数据发送/接收信号,输出。该信号用来控制数据的传送方向。当其为高电平时,8086CPU通过数据总线收发器进行数据发送;当其为低电平时,则进行数据接收。在DMA方式,它被浮置为高阻状态。
(5) M/IO(Memory/InputandOutput):引脚28,存储器I/O端口控制信号,输出。该信号用来区分CPU是进行存储器访问还是I/O端口访问。当该信号为高电平时,表示CPU正在和存储器进行数据传送;如为低电平,表明CPU正在和输入/输出设备进行数据传送。在DMA方式,该引脚被浮置为高阻状态。
(6) WR(Write):引脚29,写信号,输出。WR有效时,表示CPU当前正在进行存储器或I/O写操作,到底是哪一种写操作,取决于M/IO信号。在DMA方式,该引脚被浮置为高阻状态。
(7) HOLD(Holdrequest):引脚31,总线保持请求信号,输入。当8086/8088CPU之外的总线主设备要求占用总线时,通过该引脚向CPU发一个高电平的总线保持请求信号。
(8) HLDA(HoldAcknowledge):引脚30,总线保持响应信号,输出。当CPU接收到HOLD信号后,这时如果CPU允许让出总线,就在当前总线周期完成时,在T4状态发出高电平有效的HLDA信号给以响应。此时,CPU让出总线使用权,发出HOLD请求的总线主设备获得总线的控制权。
8086最大工作方式及引脚24
31的定义
当MN/MX接低电平时,系统工作于最大方式,即多处理器方式。比较最大方式和最小方式系统结构图可以看出,最大方式和最小方式有关地址总线和数据总线的电路部分基本相同,即都需要地址锁存器及数据总线收发器。而控制总线的电路部分有很大差别。在最小工作方式下,控制信号可直接从8086/8088CPU得到,不需要外加电路。最大方式是多处理器工作方式,需要协调主处理器和协处理器的工作。因此,8086/8088的部分引脚需要重新定义,控制信号不能直接从8086/8088CPU引脚得到,需要外加8288总线控制器,通过它对CPU发出的控制信号(S0,S1,S2)进行变换和组合,以得到对存储器和I/O端口的读写控制信号和对地址锁存器8282及对总线收发器8286的控制信号,使总线的控制功能更加完善。
在最大方式下,第24
31引脚的功能如下:
(1) QS1、QS0(InstructionQueueStatus):引脚24、25,指令队列状态信号,输出。QS1、QS0两个信号电平的不同组合指明了8086/8088内部指令队列的状态,其代码组合对应的含义如下表所示。表3.6QS1、QS0的代码组合对应的含义QS1QS0含义00无操作01从指令队列的第一字节中取走代码10队列为空11除第一字节外,还取走了后续字节中的代码
(2) S2、S1、S0(BusCycleStatus):引脚26、27、28,总线周期状态信号,输出。低电平有效的三个状态信号连接到总线控制器8288的输入端,8288对这些信号进行译码后产生内存及I/O端口的读写控制信号。下表给出了这三个状态信号的代码组合使8288产生的控制信号及其对应的操作。
S2、S1、S0的代码组合对应的操作
8288产生的控制信号对应操作000
发中断响应信号
001
读I/O端口
010
写I/O端口01
1
无
暂停
10
0
取指令
101
读内存110
写内存11
1无
无源状态
(3) LOCK(Lock):引脚29,总线封锁信号,输出。当LOCK为低电平时,系统中其他总线主设备就不能获得总线的控制权而占用总线。LOCK信号由指令前缀LOCK产生,LOCK指令后面的一条指令执行完后,便撤消了LOCK信号。另外,在DMA期间,LOCK被浮空而处于高阻状态。
(4)RQ/GT1、RQ/GT0(Request/Grant):引脚30、31,总线请求信号(输入)/总线请求允许信号(输出)。这两个信号可供8086/8088以外的2个总线主设备向8086/8088发出使用总线的请求信号RQ(相当于最小方式时的HOLD信号)。而8086/8088在现行总线周期结束后让出总线,发出总线请求允许信号GT(相当于最小方式的HLDA信号),此时,外部总线主设备便获得了总线的控制权。其中RQ/GT0比RQ/GT1的优先级高。
8288总线控制器还提供了其他一些控制信号:MRDC(MemoryReadCommand)、MWTC(MemoryWriteCommand)、IORC(I/OReadCommand)、IOWC(I/OWriteCommand)以及INTA等,它们分别是存储器与I/O的读写命令以及中断响应信号。另外,还有AMWC与AIOWC两个信号,它们分别表示提前写内存命令和提前写I/O命令,其功能分别与MWTC和IOWC一样,只是它们由8288提前一个时钟周期发出信号,这样,一些较慢的存储器和外设将得到一个额外的时钟周期去执行写入操作。8086和8088CPU的不同(1)8088的指令队列长度是4个字节,指令队列中只要出现一个空闲字节时,BIU就会自动访问存储器,取指令来补充指令队列;(2)8088CPU中,BIU的总线控制电路与外部交换数据的总线宽度是8位,总线控制电路与专用寄存器组之间的数据总线宽度也是8位,而EU的内部总线是16位,这样,对16位数的存储器读/写操作需要两个读/写周期才可以完成;(3)8088外部数据总线只有8条,所以分时复用的地址/数据总线为AD7~AD0;而AD15~AD8成为仅传递地址信息的A15~A8。.(4)8088和8086的第28引脚的功能是相同的,但有效电平的高低定义不同。8088的第28引脚为IO/M,当该引脚为低电平时,表明8088正在进行存储器操作;当该引脚为高电平时,表明8088正在进行I/O操作。8086的第28引脚为M/IO,电平与8088正好相反,此举是为了与8085总线结构兼容。(5)8088中,只能进行8位数据传输,BHE信号不需要了,改为SS0,与DT/R和IO/M一起决定最小模式中的总线周期操作。第2章8086系统结构
2.18086CPU结构
2.28086CPU的引脚及其功能
2.38086存储器和I/O组织
2.48086系统配置
2.38086存储器和I/O组织
2.3.18086/8088存储空间
2.3.2存储器的段结构
2.3.3逻辑地址与物理地址
2.3.4堆栈操作
2.3.58086/8088存储器结构
2.3.68086/8088的I/O组织1.8086/8088存储空间
8086/8088有20条地址线,可直接对1M个存储单元进行访问。每个存储单元存放一个字节型数据,且每个存储单元都有一个20位的地址,这1M个存储单元对应的地址为00000H~FFFFFH,如下图所示。
一个存储单元中存放的信息称为该存储单元的内容。如图所示,00001H单元的内容为9FH,记为:(00001H)=9FH。数据在存储器中的存放若存放的是字型数据(16位二进制数),则将字的低位字节存放在低地址单元,高位字节存放在高地址单元。如从地址0011FH开始的两个连续单元中存放一个字型数据,则该数据为DF46H,记为:(0011FH)=DF46H。若存放的是双字型数据(32位二进制数,这种数一般作为地址指针,其低位字是被寻址地址的偏移量,高位字是被寻址地址所在段的段地址),这种类型的数据要占用连续的4个存储单元,同样,低字节存放在低地址单元,高字节存放在高地址单元。如从地址E800AH开始的连续4个存储单元中存放了一个双字型数据,则该数据为66A65E65H,记为:(E800AH)=66A65E65H。
2.存储器的段结构
8086/8088CPU中有关可用来存放地址的寄存器如IP、SP等都是16位的,故只能直接寻址64KB。为了对1M个存储单元进行管理,8086/8088采用了段结构的存储器管理方法。
8086/8088将整个存储器分为许多逻辑段,每个逻辑段的容量小于或等于64KB,允许它们在整个存储空间中浮动,各个逻辑段之间可以紧密相连,也可以互相重叠。用户编写的程序(包括指令代码和数据)被分别存储在代码段、数据段、堆栈段和附加数据段中,这些段的段地址分别存储在段寄存器CS、DS、SS和ES中,而指令或数据在段内偏移地址可由对应的地址寄存器或立即数给出,如下表所示。序号内存访问类型默认段寄存器可指定段寄存器段内偏移地址来源1取指令CS无IP2堆栈操作SS无SP3源串DSCS、ES、SSSI4目的串ES无DI5BP用作基址寻址SSCS、ES、DS按寻址方式计算得到的有效地址6一般数据存取DSCS、ES、SS按寻址方式计算得到的有效地址8086对段地址与偏移地址的指定如果从存储器中读取指令,则段地址来源于代码段寄存器CS,偏移地址来源于指令指针寄存器IP。如果从存储器读/写操作数,则段地址通常由数据段寄存器DS提供(必要时可通过指令前缀实现段超越,将段地址指定为由CS、ES或SS提供),偏移地址则要根据指令中所给出的寻址方式确定,这时,偏移地址通常由寄存器BX、SI、DI以及立即数等提供,这类偏移地址也被称为“有效地址”(EA)。如果操作数是通过基址寄存器BP寻址的,则此时操作数所在段的段地址由堆栈段段寄存器SS提供(必要时也可指定为CS、SS或ES)。如果使用堆栈操作指令(PUSH或POP)进行进栈或出栈操作,以保护断点或现场,则段地址来源于堆栈段寄存器SS,偏移地址来源于堆栈指针寄存器SP
。如果执行的是字符串操作指令,则源字符串所在段的段地址由数据段寄存器DS提供(必要时可指定为CS、ES或SS),偏移地址由源变址寄存器SI提供;目的字符串所在段的段地址由附加数据段寄存器ES提供,偏移地址由目的变址寄存器DI提供。以上这些存储器操作时段地址和偏移地址的约定是由系统设计时事先已规定好的,编写程序时必须遵守这些约定。
3.逻辑地址与物理地址由于采用了存储器分段管理方式,8086/8088CPU在对存储器进行访问时,根据当前的操作类型(取指令或存取操作数)以及读取操作数时指令所给出的寻址方式,CPU就可确定要访问的存储单元所在段的段地址以及该单元在本段内的偏移地址。我们把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址。
CPU在对存储单元进行访问时,必须在20位的地址总线上提供一个20位的地址信息,以便选中所要访问的存储单元。我们把CPU对存储器进行访问时实际寻址所使用的20位地址称为物理地址。
物理地址是由CPU内部总线接口单元BIU中的地址加法器根据逻辑地址产生的。由逻辑地址形成20位物理地址的方法为:
段地址
10H+偏移地址。下图给出了存储器分段示意。如果当前的(IP)=1000H,那么,下一条要读取的指令所在存储单元的物理地址为:
(CS)
10H+(IP)=1000H
10H+1000H=11000H
如果某操作数在数据段内的偏移地址为8000H,则该操作数所在存储单元的物理地址为
(DS)
10H+8000H=2A0FH
10H+8000H=320F0H存储器分段示意图例:某可执行程序为2KB,已知CS=1063H,IP=0000H,求该程序的末地址(物理地址)。末地址=长度-1=2K-1=211-1=0800H-1=07FFH
解:程序存放在
1063:0000
:
1063:07FF所以末地址为:10630H+07FFH=10E2FH
4.堆栈操作
堆栈是在存储器中开辟的一个特定区域。堆栈在存储器中所处的段称为堆栈段,和其他逻辑段一样,它可在1MB的存储空间中浮动,其容量可达64KB。开辟堆栈的目的主要有以下两点:
(1)存放指令操作数(变量)。此时,由于操作数在堆栈段中,对操作数进行访问时,段地址自然由堆栈段寄存器SS来提供,操作数在该段内的偏移地址由基址寄存器BP来提供。
(2)保护断点和现场。此为堆栈的主要功能。所谓保护断点,是指主程序在调用子程序或执行中断服务程序时,为了使执行完子程序或中断服务程序后能顺利返回主程序,必须把断点处的有关信息(如代码段寄存器CS的内容(需要时)、指令指针寄存器IP的内容以及标志寄存器FLAGS的内容等)压入堆栈,执行完子程序或中断服务程序后按“先进后出”的原则将其弹出堆栈,以恢复有关寄存器的内容,从而使主程序能从断点处继续往下执行。
保护现场是指将在子程序或中断服务程序中用到的寄存器的内容压入堆栈,在返回主程序之前再将其弹出堆栈,以恢复寄存器原有的内容,从而使其返回后主程序能继续正确执行。保护现场的工作要求程序员在编写子程序或中断服务程序时使用进栈指令PUSH和出栈指令POP完成。
进栈和出栈操作的过程在执行进栈和出栈操作时,段地址由堆栈段寄存器SS提供,段内偏移地址由堆栈指针寄存器SP提供,SP始终指向栈顶,当堆栈空时,SP指向栈底。如下图,设在存储器中开辟了100H个存储单元的堆栈段,当前(SS)=2000H,堆栈空时(SP)=0100H,即此时SP指向栈底。由于PUSH和POP指令要求操作数为字型数据,因此,每进行一次进栈操作,SP值减2,每进行一次出栈操作,SP值加2。在进栈和出栈操作过程中,SP始终指向栈顶。进栈与出栈操作示意图堆栈的概念由若干个连续存储单元组成的一个存储器区操作时遵循先进后出原则主要用于暂存中断和子程序调用时的现场数据及返回地址。堆栈操作的特点
①操作只能在栈顶进行,入栈和出栈都必须是双字节数据。进行一次入栈操作,SP减2;进行一次出栈操作,SP加2;
②操作遵循“先进后出(FILO)”的原则。最后压人堆栈的数据会最先被弹出。
5.8086/8088存储器结构
8086的1MB存储空间实际上分为两个512KB的存储体,又称存储库,分别叫高位库和低位库。
低位库与数据总线D7
D0相连,该库中每个存储单元的地址为偶数地址;高位库与数据总线D15
D8相连,该库中每个存储单元的地址为奇数地址。地址总线A19
A1可同时对高、低位库的存储单元寻址,A0和BHE用于对库的选择,分别连接到库选择端SEL上。当A0=0时,选择偶数地址的低位库;当BHE=0时,选择奇数地址的高位库;当两者均为0时,则同时选中高低位库。利用A0和BHE这两个控制信号,既可实现对两个库进行读/写(即16位数据),也可单独对其中一个库进行读/写(8位数据)。8086存储器高低位库的连接8086存储器高低位库选择
A0
对应操作
0
0
同时访问两个存储体,读/写一个字的信息
0
1
只访问奇地址存储体,读/写高字节的信息
1
0
只访问偶地址存储体,读/写低字节的信息
1
1
无操作
在8086系统中,存储器这种分体结构对用户来说是透明的。当用户需要访问存储器中某个存储单元,以便进行字节型数据的读/写操作时,指令中的地址码经变换后得到20位的物理地址,该地址可能是偶地址,也可能是奇地址。如果是偶地址(A0=0),BHE=1,这时由A0选定偶地址存储体,通过A19
A1从偶地址存储体中选中某个单元,并启动该存储体,读/写该存储单元中一个字节信息,通过数据总线的低8位传送数据,如下图(a)所示;如果是奇地址(A0)=1,则偶地址存储体不会被选中,也就不会启动它。为了启动奇地址存储体,系统将自动产生BHE=0,作为奇地址存储体的选体信号,与A19
A1一起选定奇地址存储体中的某个存储单元,并读/写该单元中的一个字节信息,通过数据总线的高8位传送数据,如下图(b)所示。可以看出,对于字节型数据,不论它存放在偶地址的低位库,还是奇地址的高位库,都可通过一个总线周期完成数据的读/写操作。
如果用户需要访问存储器中某两个存储单元,以便进行字型数据的读/写时,可分两种情况来讨论。一种情况是用户要访问的是从偶地址开始的两个连续存储单元(即字的低字节在偶地址单元,高字节在奇地址单元),这种存放称为规则存放,这样存放的字称为规则字。对于规则存放的字可通过一个总线周期完成读/写操作,这时A0=0,BHE=0;另一种情况是用户要访问的是从奇地址开始的两个存储单元(即字的低字节在奇地址单元,高字节在偶地址单元),这种存放称为非规则存放,这样存放的字称为非规则字,对于非规则存放的字需要通过两个总线周期才能完成读/写操作,即第一次访问存储器时读/写奇地址单元中的字节,第二次访问存储器时读/写偶地址单元中的字节。显然,为了加快程序的运行速度,希望字型数据在存储器中规则存放。从8086存储器的偶数和奇数地址读字节和字读偶地址单元中的字节;(b)读奇地址单元中的字节;(c)读偶地址单元中的字;(d)读奇地址单元中的字在8088系统中,可直接寻址的存储空间同样也是1MB,但其存储器的结构与8086有所不同,它的1 MB存储空间同属于一个单一的存储体,即存储体为1M
8位。它与总线之间的连接方式很简单,其20根地址线A19
A0与8根数据线分别与8088CPU对应的地址线和数据线相连。
8088CPU每访问一次存储器只能读/写一个字节信息,因此在8088系统的存储器中,字型数据需要两次访问存储器才能完成读/写操作。68086/8088的I/O组织
8086/8088系统和外部设备之间是通过I/O接口电路来联系的。每个I/O接口都有一个或几个端口。在微机系统中每个端口分配一个地址号,称为端口地址。一个端口通常为I/O接口电路内部的一个寄存器或一组寄存器。
8086/8088CPU用地址总线的低16位作为对8位I/O端口的寻址线,所以8086/8088系统可访问的8位I/O端口有65536(64K)个。两个编号相邻的8位端口可以组成一个16位的端口。一个8位的I/O设备既可以连接在数据总线的高8位上,也可以连接到数据总线的低8位上。一般为了使数据/地址总线的负载平衡,希望接在数据/地址总线高8位和低8位的设备数目最好相等。当一个I/O设备接在数据总线的低8位(AD7
AD0)上时,这个I/O设备所包括的所有端口地址都将是偶数地址(A0=0);若一个I/O设备接在数据总线的高8位(AD15
AD8)上时,那么该设备包含的所有端口地址都是奇数地址(A0=1)。如果某种特殊I/O设备既可使用偶地址又可使用奇地址时,此时必须将A0和BHE两个信号结合起来作为I/O设备的选择线。
8086CPU对I/O设备的读/写操作与对存储器的读/写操作类似。
当CPU与偶地址的I/O设备实现16位数据的存取操作时,可在一个总线周期内完成。
当CPU与奇地址的I/O设备实现16位数据的存取操作时,要占用两个总线周期才能完成。
第2章8086系统结构
2.18086CPU结构
2.28086CPU的引脚及其功能
2.38086存储器组织
2.48086系统配置2.48086系统配置
2.4.1最小模式系统
2.4.2最大模式系统
2.4.38086CPU时序8086具有两种工作模式最小模式:CPU仅支持由少量设备组成的单微处理器系统而不支持多处理器结构,小系统所需要的全部控制信号都由CPU直接提供。最大模式:CPU不直接提供读/写命令等控制信号,而是将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 盛虹集团招聘面试题目及答案
- 胜达集团校招面试题及答案
- 2023年随州职业技术学院单招职业适应性考试题库附答案解析
- 2024年四川艺术职业学院单招职业倾向性考试题库附答案解析
- 2024年山东铝业职业学院单招职业适应性测试模拟测试卷附答案解析
- 2024年商丘学院单招职业适应性考试题库附答案解析
- 神州数码集团校招笔试题目及答案
- 2024年福建电力职业技术学院单招职业适应性测试模拟测试卷附答案解析
- 2024年浙江省宁波市单招职业倾向性测试模拟测试卷附答案解析
- 2023年福建电力职业技术学院单招职业技能考试题库附答案解析
- 车间医药箱管理制度
- 食叶草种植可行性报告
- 落叶清扫压缩机设计答辩
- 珍爱生命活在当下-高一上学期生命教育主题班会课件
- 湖北省武汉市洪山区2023-2024学年八年级上学期期末数学试题
- 应用写作-终结性考核-国开(SC)-参考资料
- 场地租凭转让合同协议书
- 口腔科科室建设规划
- 动物活体成像技术
- 新教科版科学四年级上册分组实验报告单
- 雷达截面与隐身技术课件
评论
0/150
提交评论