1、2.1 8086CPU结构一、8086CPU的内部结构EUBIU指令队列EU和BIU的操作原则l lBIU中的指令队列有中的指令队列有2个或个或2个以上个以上字节为空时,字节为空时,BIU自动启动总线周期,取指填充指令队列。直自动启动总线周期,取指填充指令队列。直至队列满,进入空闲状态。至队列满,进入空闲状态。l lEU每执行完一条指令,从指令队列队首取指。每执行完一条指令,从指令队列队首取指。系统初始化后,指令队列为空,系统初始化后,指令队列为空,EU等待等待BIU从内从内存取指,填充指令队列。存取指,填充指令队列。l lEU取得指令,译码并执行指令。若指令需要取得指令,译码并执行指令。若指
2、令需要取操作数或存操作结果,需访问存储器或取操作数或存操作结果,需访问存储器或I/O,EU向向BIU发出访问总线请求。发出访问总线请求。当当BIU接到接到EU的总线请求,若正忙(正在执的总线请求,若正忙(正在执行取指总线周期),则必须等待行取指总线周期),则必须等待BIU执行完当前执行完当前的总线周期,方能响应的总线周期,方能响应EU请求;若请求;若BIU空闲,则空闲,则立即执行立即执行EU申请总线的请求。申请总线的请求。l lEU执行转移、调用和返回指令时,若下一条执行转移、调用和返回指令时,若下一条指令不在指令队列中,则队列被自动清除,指令不在指令队列中,则队列被自动清除,BIU根据本条指
3、令执行情况重新取指和填充指令队列。根据本条指令执行情况重新取指和填充指令队列。l l空闲状态空闲状态8086CPU与一般CPU区别取指执指取指执指取指执指取指执指取指执指取指执指取指二、8086CPU的寄存器结构指令执行部件(EU)设有8个通用寄器AXBXCXDXSPBPSIDIBHBLCHCLDHDLAHALAXBXCXDXSIDIBPSP寄寄存存器器名名特特殊殊用用途途隐隐含含性性质质在在输输入入输输出出指指令令中中作作数数据据寄寄存存器器用用不不能能隐隐含含AX,AL在在乘乘法法指指令令中中存存放放被被乘乘数数或或乘乘积积,在在除除法法指指令令中中存存放放被被除除数数或或商商隐隐含含AH
4、在在LAHF指指令令中中,作作目目标标寄寄存存器器用用隐隐含含在在十十进进制制运运算算指指令令中中作作累累加加器器用用隐隐含含AL在在XLAT指指令令中中作作累累加加器器用用隐隐含含在在间间接接寻寻址址中中作作基基址址寄寄存存器器用用不不能能隐隐含含BX在在XLAT指指令令中中作作基基址址寄寄存存器器用用隐隐含含CX在在串串操操作作指指令令和和LOOP指指令令中中作作计计数数器器用用隐隐含含CL在在移移位位/循循环环移移位位指指令令中中作作移移位位次次数数计计数数器器用用不不能能隐隐含含在在字字乘乘法法/除除法法指指令令中中存存放放乘乘积积高高位位或或被被除除数数高高位位或或余余数数隐隐含含D
5、X在在间间接接寻寻址址的的输输入入输输出出指指令令中中作作地地址址寄寄存存器器用用不不能能隐隐含含在在字字符符串串运运算算指指令令中中作作源源变变址址寄寄存存器器用用隐隐含含SI在在间间接接寻寻址址中中作作变变址址寄寄存存器器用用不不能能隐隐含含在在字字符符串串运运算算指指令令中中作作目目标标变变址址寄寄存存器器用用隐隐含含DI在在间间接接寻寻址址中中作作变变址址寄寄存存器器用用不不能能隐隐含含BP在在间间接接寻寻址址中中作作基基址址指指针针用用不不能能隐隐含含SP在在堆堆栈栈操操作作中中作作堆堆栈栈指指针针用用隐隐含含 标志寄存器FR中共有9个标志位,可分成两类:状态标志状态标志 表示运算结
6、果的特征,它们是 CF、PF、AF、ZF、SF和OF控制标志控制标志 控制CPU的操作,它们是IF、DF和TF。CF(Carry Flag):进位标志位 CFl,表示本次运算中最高位(D15或D7)有进位(加法运算时)或有借位(减法运算时)。CF标志可通过STC指令置位,通过CLC指令复位(清除进位标志),还可通过CMC指令将当前CF标志取反。PF(Parity Flag):奇偶校验标志位 PF1,表示本次运算结果中有偶数个“l”,PF0,表示本次运算结果中有奇数个“1”。AF(Auxiliary Carry Flag):辅助进位标志位。AFl,表示运算结果的8位数据中,低4位向高4位有进位(
7、加法运算时)或有借位(减法运算时),这个标志位只在十进制运算中有用。ZF(Zero Flag):零标志位 ZF1,表示本次运算结果为零,否则即运算结果非零时,ZF0。SF(Sign Flag):符号标志 SF1,表示本次运算结果的最高位(第7位或第15位)为“l”,否则SF0。OF(Overflow F1ag):溢出标志 IF(Interrupt Flag):中断标志位 IF1,表示允许CPU响应可屏蔽中断。IF标志可通过STI指令置位,也可通过CLI指令复位。DF(Direction Flag):方向标志位 在串操作指令中,若DF0,表示串操作指令地址指针自动增量;DF1,表示地址指针自动减
8、量。DF标志位可通过STD指令置位,也可通过CLD指令复位。TF(Trap Flag):单步标志位三三、8086CPU的管脚及功能的管脚及功能8086是16位CPU。它采用高性能的N沟道,耗尽型负载的硅栅工艺(HMOS)制造。由于受当时制造工艺的限制,部分管脚采用了分时复用的方式,构成了40条管脚的双列直插式封装 1、8086的两种工作方式的两种工作方式 最小模式:最小模式:系统中只有8086一个处理器,所有的控制信号都 是由8086CPU产生(MN/MX=1)。最大模式:最大模式:系统中可包含一个以上的处理器,比如包含协处 理器8087。在系统规模比较大的情况下,系统控 制信号不是由8086
9、直接产生,而是通过与8086配 套的总线控制器等形成(MN/MX=0)。最小模式下的引脚说明最小模式下的引脚说明(1)AD15AD0(AddressDataBus):地址/数据复用信号,双向,三态。在T1状态(地址周期)AD15AD0上为地址信号的低16位A15A0;在T2 T3状态(数据周期)AD15AD0 上是数据信号D15D0。(2)A19/S6A16/S3(Address/Status):地址/状态复用信号,输出。在总周期的T1状态A19/S6A16/S3上是地址的高4位。在T2T4状态,A19/S6A16/S3上输出状态信息。BHEBHEBHEBHES4S3当前正在使用的段寄存器当前
10、正在使用的段寄存器00ES01SS10CS或未使用任何段寄存器或未使用任何段寄存器11DS(3)BHE#/S7(BusHighEnable/Status):数据总线高8位使能和状态复用信号,输出。在总线周期T1状态,BHE#有效,表示数据线上高8位数据有效。在T2T4状态BHE#/S7 输出状态信息S7。S7在8086中未定义。BHEBHEBHE(4)RD#(Read)读信号,三态输出,低电平有效,表示当前CPU正在读存储器或IO端口。(5)WR#(Write)写信号,三态输出,低电平有效,表示当前CPU正在写存储器或IO端口。(6)MIO#(MemoryIO)存储器或IO端口访问信号。三态输
11、出,MIO#为高电平时,表示当前CPU正在访问存储器,MIO#为低电平时,表示当前CPU正在访问IO端口。(7)READY 准备就绪信号。由外部输入,高电平有效,表示CPU访问的存储器或IO端口己准备好传送数据。当READY无效时,要求CPU插入一个或多个等待周期Tw,直到READY信号有效为止。(8)INTR(InterruptRequest)中断请求信号,由外部输入,电平触发,高电平有效。INTR有效时,表示外部设备向CPU发出中断请求,CPU在每条指令的最后一个时钟周期对INTR进行测试,一旦测试到有中断请求,并且当中断允许标志IF1时,则暂停执行下条指令转入中断响应周期。BHEBHEB
12、HE(9)INTA#(InterruptAcknowledge)中断响应信号。向外部输出,低电平有效,表示CPU响应了外部发来的INTR信号。(10)NMI(NonMaskableInterruptRequest)不可屏蔽中断请求信号。由外部输入,边沿触发,正跳沿有效。CPU一旦测试到NMI请求信号,待当前指令执行完就自动从中断入口地址表中找到类型2中断服务程序的入口地址,并转去执行。(11)TEST#测试信号。由外部输入,低电平有效。当CPU执行WAIT指令时(WAIT指令是用来使处理器与外部硬件同步),每隔5个时钟周期对TEST进行一次测试,若测试到该信号无效,则CPU继续执行WAIT指令
13、,即处于空闲等待状态;当CPU测到TEST输入为低电平时,则转而执行WAIT的下一条指令。由此可见,TEST对WAIT指令起到了监视的作用。(12)RESET 复位信号。由外部输入,高电平有效。RESET信号至少要保持4个时钟周期,CPU接收到该信号后,停止进行操作,并对标志寄存器(FR)、IP、DS、SS、ES及指令队列清零,而将CS设置为FFFFH。当复位信号变为低电平时,CPU从FFFF0H开始执行程序,由此可见,采用8086CPU计算机系统的启动程序就保持在开始的存储器中。(13)ALE(AddressLatchEnable)地址锁存使能信号,输出,高电平有效。用来作为地址锁存器的锁存
14、控制信号。(14)DEN#(DataEnable)数据使能信号,输出,三态,低电平有效。用于数据总线驱动器的控制信号。(15)DT/R#(DataTransmit/Receive):数据驱动器数据流向控制信号,输出,三态。在8086系统中,通常采用8286或8287作为数据总线的驱动器,用DT/R#信号来控制数据驱动器的数据传送方向。当DT/R#1时,进行数据发送;DT/R#0时,进行数据接收。(16)HOLD(HoldRequest)总线请求信号。由外部输入,高电平有效器向CPU请求使用总线。(17)HLDA(HoldAcknowledge)共享总线的处理总线请求响应信号。向外部输出,高电平
15、有效。(18)MN/MX(Minimum/MaximumModeControl):最大最小模式控制信号,输入。MN/MX1(5V),CPU工作在最小模式。MN/MX0(接地),CPU则工作在最大模式。(19)GND 地。(20)VCC 电源,接5V。最大模式下的引脚说明最大模式下的引脚说明 当8086CPU工作在最大模式系统时,有8个管脚重新定义。(1)S2#、S1#、S0#(BusCycleStatus,最小模式为,最小模式为M/IO#、D/TR#、DEN#):):总线周期状态信号,输出。这三个信号的组合表示当前总线周期的类型。在最大模式下,由这三个信号输入给总线控制器8288,用来产生存储
16、器、I/O的读写等相关控制信号。如下表:(2)LOCK#封锁信号封锁信号。三态输出,低电平有效。LOCK有效时表示CPU不允许其它总线主控者占用总线。这个信号由软件设置。当在指令前加上LOCK前缀时,则在执行这条指令期间LOCK保持有效,即在此指令执行期间,CPU封锁其它主控者使用总线。(3)QS1、QS0(InstructionQueueStatus,最小,最小模式为模式为ALE、INTA#):指令队列状态信号,输出。QS1,QS0组合起来表示前一个时钟周期中指令队列的状态,以便从外部对芯片的测试。(4)RQ#/GT0#,RQ#/GT1#(RequestGrant)总线请求信号请求同意信号。
17、双向,低电平有效,当该信号为输入时表示其它主控者向CPU请求使用总线;当为输出时表示CPU对总线请求的响应信号。两条线可同时与两个主控者相连,同时,RQ#/GT0#优先级高于RQ#/GT1#。(5)QS1、QS0(InstructionQueueStatus):指令队列状态信号,输出。QS1,QS0组合起来表示前一个时钟周期中指令队列的状态,以便从外部对芯片的测试。QS1QS0编码含义00无操作01从队列中取第一个字节10队列已空11从队列中取后续字节2.2 8086系统的储存器组织系统的储存器组织一、一、8086存储器结构存储器结构8086系统中有系统中有20根地根地址线,存储器可寻址的址线
18、,存储器可寻址的存储空间为存储空间为1M字节,系字节,系统为每个字节分配一个统为每个字节分配一个20位的物理地址位的物理地址(对应对应16进 制 的 地 址 范 围 从进 制 的 地 址 范 围 从00000HFFFFFH)。00000H00001H0000FHFFFFFHn(一)、数据在内存的位置(一)、数据在内存的位置字节、字、双字及其地址字节、字、双字及其地址n(二)、(二)、8086CPU对字对字/字节的读操作字节的读操作u16位读位读u从偶地址读从偶地址读二、二、8086存储器的分体结构存储器的分体结构 8086系统中,存储器是分体结构,1M字节的存储空间分成两个512K字节的存储体
19、。一个是偶数地址存储体,一个是奇数地址存储体,两个存储体采用字节交叉编址方式 D0D7D8D1500000H00002H00004HFFFFEH00001H00003H00004HFFFFFHn三、存储器的分段三、存储器的分段u为什么分段为什么分段u8086存储器分存储器分4个段个段u段基地址与段寄存器段基地址与段寄存器u偏移地址的产生偏移地址的产生u逻辑地址、物理地址逻辑地址、物理地址 n段基地址和偏移地址组成了逻辑地址段基地址和偏移地址组成了逻辑地址 格式为:段基地址格式为:段基地址:偏移地址偏移地址 60002H00H12H60000H0000段基地址(段基地址(16位)位)段首地址段首地址 物理地址物理地址=段基地址段基地址16+偏移地址偏移地址物理地址的形成物理地址的形成015段内偏移地址段内偏移地址段寄存器段寄存器19400000 段地址左移段地址左移4位位20位物理地址位物理地址1905u段寄存器使用约定段寄存器使用约定存储器操作类型 隐含段超越段偏移量取指令CS无IP堆栈SS无SP数据变量DSCS,ES,SS 有效地址源串变量DSCS,ES,SSSI目的串变量ES无DI基址BP指针SSCS,ES,DS 有效地址