资源描述
*1第二章第二章 80868086微型计算机结构微型计算机结构 微型计算机的结构特点微型计算机的结构特点 8086CPU的结构的结构 8086的引脚的引脚 8086的存储器管理的存储器管理*2一,一般结构一,一般结构8086是单片集成电路,含有构成计算机的大多数部件是单片集成电路,含有构成计算机的大多数部件数据总线(数据总线(D0D15)和内部结构都是和内部结构都是16位的位的能处理能处理16位数据,也能处理位数据,也能处理8位数据位数据地址总线(地址总线(A0A19)是是20位的,直接寻址能力达位的,直接寻址能力达1M字节字节系统时钟为系统时钟为5MHzHMOS工艺,工艺,40引脚,引脚,+5V供电供电有有4组寄存器组寄存器第一节第一节 8086 CPU8086 CPU的结构的结构*3指令的执行过程:指令的执行过程:从存储器中取出一条指令(用总线)从存储器中取出一条指令(用总线)译码(分析指令)译码(分析指令)从存储器中读取操作数(用总线)从存储器中读取操作数(用总线)执行指令执行指令将结果存到存储器(用总线)将结果存到存储器(用总线)重复以上过程重复以上过程由此可见,总线是信息传输中最忙的信号线由此可见,总线是信息传输中最忙的信号线二二 8086CPU8086CPU的功能结构的功能结构*4负责从存储器或外部设负责从存储器或外部设备中读取操作码和操作备中读取操作码和操作数,并将结果写入指令数,并将结果写入指令指出的地址指出的地址三,三,8086 CPU8086 CPU的构成的构成 CPUCPU执行单元执行单元EUEU总线接口单元总线接口单元BIUBIU负责执负责执行指令行指令*5比较比较EUTBIUT总线总线T取指取指1忙忙执行执行1取指取指2忙忙执行执行2取指取指3忙忙执行执行38086CPU取指令与执行指令时间表:取指令与执行指令时间表:*6比较比较 CPU CPU的的串行工作方式串行工作方式使总线和使总线和CPUCPU有很多的时间有很多的时间都浪费在等待中了。都浪费在等待中了。CPU CPU的的并行工作方式并行工作方式使总线和使总线和CPUCPU的工作效率的工作效率得到提高,有限的资源也得到充分的利用。得到提高,有限的资源也得到充分的利用。结果结果*7执行部件执行部件控制电路控制电路 1 2 3 4 5 6输入输入/输出输出控制电路控制电路CSDSSSESIPSPAHALBPDISIBLCLDLBHCHDH内部内部暂存器暂存器ALU运算寄存器运算寄存器标志标志外部总线外部总线通用寄存器通用寄存器数据总线数据总线(16位)位)队列总线队列总线(8位)位)地址总线(地址总线(20位)位)地址加法器地址加法器指令队列缓冲器指令队列缓冲器执行部件执行部件(EU)总线接口部件总线接口部件(BIU)8086CPU逻辑结构框图逻辑结构框图数据总线数据总线(16位)位)8086CPU的的结构框图结构框图*81 1,执行单元,执行单元EU执行单元执行单元EUEU算术算术/逻辑单元(逻辑单元(ALU)标志寄存器标志寄存器通用寄存器通用寄存器暂存器暂存器*这些寄存器不与外部总线相连这些寄存器不与外部总线相连*9AH ALBH BLCH CLDH DLSPBPDISI十六位内部总线十六位内部总线通用寄存器通用寄存器ALU暂存器暂存器标志标志执行部件执行部件控制电路控制电路2,执行部件,执行部件EU*10q 完成算术逻辑运算完成算术逻辑运算q 计算出要寻址的操作数地址计算出要寻址的操作数地址EUEU完成两类操作完成两类操作*11总线接口单元总线接口单元BIU总线接口单元总线接口单元BIU段寄存器(段寄存器(CS,DS,SS和和ES)指令指针(指令指针(IP)指令队列(指令队列(6个字节)个字节)地址产生器(产生地址产生器(产生20位地址位地址总线控制器总线控制器*12CSDSSSESIP内部内部暂存器暂存器输入输入/输出输出控制电路控制电路 地址加法器地址加法器十六位十六位外部总线外部总线1 2 3 4 5 6总线接口部件总线接口部件 BIU*13q从存储器中取出指令放在从存储器中取出指令放在指令队列指令队列中(可存放中(可存放最长指令为最长指令为6字节)字节)q 指令执行时所需操作数也由指令执行时所需操作数也由BIU取出,送取出,送EUq取指和执行指令是分开的取指和执行指令是分开的q在执行一条指令的同时,可取下一条指令放在在执行一条指令的同时,可取下一条指令放在指令队列中排队指令队列中排队q减少了减少了CPU取指所需的等待时间取指所需的等待时间BIUBIU完成的操作完成的操作*148086CPU8086CPU寄存器寄存器通用寄存器组通用寄存器组指针与变址寄存器组指针与变址寄存器组段寄存器组段寄存器组标志寄存器标志寄存器指令指针指令指针4 4个个1616位的寄位的寄存器存器(一个一个1616位的寄存器位的寄存器)一个含有一个含有9 9个标志位的寄存器个标志位的寄存器 二二,8086 CPU,8086 CPU 寄存器寄存器:*15AHBHCHDHALBLCLDLAX:BX:CX:DX:用于做乘,用于做乘,除及除及I/O端口端口用于做表的用于做表的起始地址起始地址用于做用于做计数器计数器用于记录用于记录数据等。数据等。1,通用寄存器组,通用寄存器组*16BP SP SI DI2,指针及变址寄存器,指针及变址寄存器这一组有这一组有4 4个个1616位寄存器:位寄存器:基址指基址指针针目的变址目的变址寄存器寄存器源变址源变址寄存器寄存器 SP BP SI DI分别为:分别为:堆栈指堆栈指针针*17CSDSSS ES 3,段寄存器,段寄存器80868086的的BIU单元中有单元中有4 4个个1616位段位段寄存器寄存器代码段代码段寄存器寄存器数据段数据段寄存器寄存器堆栈段堆栈段寄存器寄存器附加段附加段寄存器寄存器*18q 这个寄存器中的值总是指向下一次所这个寄存器中的值总是指向下一次所要取出的指令的地址偏移量要取出的指令的地址偏移量q 程序不能直接对它进行修改程序不能直接对它进行修改q 在程序运行的过程中,在程序运行的过程中,CPUCPU会自动修会自动修改其中的值。改其中的值。4 4,指令指针(,指令指针(IPIP,1616位)位)*19 8086CPU8086CPU中中标志寄存器标志寄存器有有9 9个标志位个标志位,其中其中6 6个状态标志位,个状态标志位,3 3个控制标志位个控制标志位5,标志寄存器,标志寄存器 FR 状态标志有进位标志位状态标志有进位标志位CF,奇偶位,奇偶位PF,辅助进位位,辅助进位位AF,零标志位,零标志位ZF,符,符号标志位号标志位SF,溢出位,溢出位OF等。等。*2015 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0CF 进位标志进位标志CFCF:CF=1CF=1时,表明指令执行后的结果时,表明指令执行后的结果在最高位上产生了一个进位或借位;在最高位上产生了一个进位或借位;CF=0CF=0则无进位则无进位或借位产生。该标志主要用于多字节数的加减法运算。或借位产生。该标志主要用于多字节数的加减法运算。进位标志位(进位标志位(CFCF)*21 奇偶标志位奇偶标志位PF:PF=1表示指令执行的结果中含偶数表示指令执行的结果中含偶数个个1;PF=0表示运算结果中含奇数个表示运算结果中含奇数个1。这个标志位可。这个标志位可用来检查在数据传送过程中是否发生错误。用来检查在数据传送过程中是否发生错误。辅助进位标志位辅助进位标志位AF:对于:对于8位的运算而言,位的运算而言,AF=1表表示在低位数的第示在低位数的第4位上产生了一个进位或借位信号;位上产生了一个进位或借位信号;AF=0时表示此位上无进位或借位产生。时表示此位上无进位或借位产生。15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0CFAF辅助进位标志位(辅助进位标志位(AF)*22 符号标志位符号标志位SF:它的值与运算结果的最高位相同。:它的值与运算结果的最高位相同。SF=1表示运算结果为负数;表示运算结果为负数;SF=0表示运算结果为正数。表示运算结果为正数。溢出标志位溢出标志位OF:当:当OF=1时,表示带符号的数做算术时,表示带符号的数做算术运算时产生了算术溢出。所谓算术溢出是指算术运算的运算时产生了算术溢出。所谓算术溢出是指算术运算的结果超出了机器所能表达的数的范围。结果超出了机器所能表达的数的范围。15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0CFAFOF溢出控制标志位(溢出控制标志位(OF)*23 辅助进位标志位辅助进位标志位AF:对于:对于8位的运算而言,位的运算而言,AF=1表表示在低位数的第示在低位数的第4位上产生了一个进位或借位信号;位上产生了一个进位或借位信号;AF=0时表示此位上无进位或借位产生。时表示此位上无进位或借位产生。15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0CFAF 零标志位零标志位ZF:ZF=1表示运算结果为零;表示运算结果为零;ZF=0表示运表示运算结果不为零。算结果不为零。ZF零标志位(零标志位(ZF)OF*24 零标志位零标志位ZF:ZF=1表示运算结果为零;表示运算结果为零;ZF=0表示运表示运算结果不为零。算结果不为零。符号标志位符号标志位SF:它的值与运算结果的最高位相同。:它的值与运算结果的最高位相同。SF=1表示运算结果为负数;表示运算结果为负数;SF=0表示运算结果为正数。表示运算结果为正数。15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0CFAFZFSF符号标志位(符号标志位(SF)OF*25 进位标志进位标志CF:CF=1时,表明指令执行后的结果时,表明指令执行后的结果在最高位上产生了一个进位或借位;在最高位上产生了一个进位或借位;CF=0则无进位则无进位或借位产生。该标志主要用于多字节数的加减法运算。或借位产生。该标志主要用于多字节数的加减法运算。奇偶标志位奇偶标志位PF:PF=1表示指令执行的结果中含偶数表示指令执行的结果中含偶数个个1;PF=0表示运算结果中含奇数个表示运算结果中含奇数个1。这个标志位可。这个标志位可用来检查在数据传送过程中是否发生错误。用来检查在数据传送过程中是否发生错误。15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0PFCF奇偶标志位(奇偶标志位(PF)AFOFSF ZF*26中断允许标志中断允许标志IF:若将:若将IF=1,则处理器允许接受外部,则处理器允许接受外部可屏蔽中断发来的中断请求;可屏蔽中断发来的中断请求;IF=0时,时,CPU不能接受不能接受外部可屏蔽中断发来的请求外部可屏蔽中断发来的请求.方向标志位方向标志位DF:DF=1时,时,CPU将以数据串递减的将以数据串递减的顺序对数据串中的数据进行处理;若顺序对数据串中的数据进行处理;若DF=0,则将以递,则将以递加的顺序对数据进行处理。加的顺序对数据进行处理。15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0PFCFAFZFSFOFDF方向控制标志位(方向控制标志位(DFDF)*27 中断允许标志中断允许标志IF:若将:若将IF=1,则处理器允许接受,则处理器允许接受外部可屏蔽中断发来的中断请求;外部可屏蔽中断发来的中断请求;IF=0时,时,CPU不能不能接受外部可屏蔽中断发来的请求接受外部可屏蔽中断发来的请求.15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0PFCFAFZFSFOF DFIF中断允许控制标志位(中断允许控制标志位(IFIF)*28 溢出标志位溢出标志位OFOF:当:当OF=1OF=1时,表示带符号的数做算术时,表示带符号的数做算术运算时产生了算术溢出。所谓算术溢出是指算术运算的运算时产生了算术溢出。所谓算术溢出是指算术运算的结果超出了机器所能表达的数的范围。结果超出了机器所能表达的数的范围。跟踪控制标志位(跟踪控制标志位(TFTF)追踪标志位追踪标志位TF:将将TF置成置成1时,处理器处于单步工时,处理器处于单步工作方式作方式;当当TF=0时,时,8086CPU将正常地执行程序。将正常地执行程序。15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0PFCFAFZFSFOFTFDF IF*29三、三、8086CPU的引脚及功能的引脚及功能 8086的的40条引脚包含:条引脚包含:地址线,地址线,数据线,数据线,电源和定时线,电源和定时线,8086工作方式:工作方式:当当MN/MX引脚为引脚为高电平高电平时时当当MN/MX引脚为引脚为低电平低电平时时CPU工作于工作于最小模式最小模式CPU工作于工作于最大模式最大模式控制和状态线,控制和状态线,*30 VCC(5V)AD15 A16/S3 A17/S4 A18/S5 A19/S6 BHE/S7 MN/MX RD HOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TEST READY RESETGND AD14AD1 AD0NMIINTRCLKGND 1 120202121404080868086芯片是芯片是1 1 双列直插式,双列直插式,有有4040个引脚。个引脚。8086CPU的引脚及功能的引脚及功能如右图如右图:1 1202021214040*31CPUAD0AD14AD15时钟周期:时钟周期:地址信号地址信号:在一个总线在一个总线周期的第一个时周期的第一个时钟周期里,它们钟周期里,它们表示低位的表示低位的1616个个地址线。地址线。AD AD0 0-AD-AD1515这这1616条线是多路转换条线是多路转换的引脚。的引脚。1,地址和数据线,地址和数据线 AD0AD15(地址(地址/数据,双向,三态)数据,双向,三态),2,A16/S3,A17/S4,A18/S5,A19/S6(地址(地址/状态,输出,三态状态,输出,三态)*32CPUAD0AD14AD15 S4 S4 和和 S3:S3:当前使用当前使用的段寄存器。的段寄存器。S5:S5:给出给出IFIF的状态的状态.S6:S6:恒为恒为0.0.时钟周期:时钟周期:地址信号:地址信号:数据信号:数据信号:地址和数据线地址和数据线 ADAD0 0-AD-AD1515这这1616条线条线是多路转换的引脚。是多路转换的引脚。AD0AD15(地址(地址/数据,双向,三态)数据,双向,三态),A16/S3,A17/S4,A18/S5,A19/S6(地址(地址/状态,输出,三态状态,输出,三态)*333,BHE/S7(高(高8位数据允许位数据允许/状态,输出,三态)状态,输出,三态)当对当对 M 或或 I/O 进行进行高高8位数据位数据操作时,该信号有效。操作时,该信号有效。BHE保持低电平,这时数据在时钟总线的高保持低电平,这时数据在时钟总线的高8位上传送。该信号与位上传送。该信号与AD0一起,产生存储器的选择一起,产生存储器的选择逻辑信号。逻辑信号。S7为备用状态信号。为备用状态信号。*34控制和状态线控制和状态线控制和状态线包括控制和状态线包括:RD(读,输出,三态)(读,输出,三态)READY(准备好,输入)(准备好,输入)TEST(测试,输入(测试,输入)INTR(可屏蔽中断请求,输入(可屏蔽中断请求,输入)NMI(非屏蔽中断请求,输入(非屏蔽中断请求,输入)RESET(复位,输入(复位,输入)CLK(系统时钟,输入(系统时钟,输入)MN/MX(输入,最小(输入,最小/最大组态最大组态)INTA*358086101821222332INTRNMIRESETREADYTESTRD控制和状态线控制和状态线 至于是读取内存单元至于是读取内存单元中的数据还是中的数据还是I/O端口的端口的数据,决定于数据,决定于M/IO信号信号.RD4,RD信号信号RD信号信号低电平低电平有效有效*36M/IORD操作操作1000读存储器数据读存储器数据读读I/O端口数据端口数据 RD信号信号控制和状态线控制和状态线8086101821222332INTRNMIRESETREADYTESTRDRDM/IO*378086101821222332INTRNMIRESETREADYTESTRDREADY控制和状态线控制和状态线5,READY信号信号READY信号信号高电平高电平有效有效READY信号高电平信号高电平READY信号低电平信号低电平80868086将处于将处于“等待等待”状态状态 已准备就绪去完成已准备就绪去完成数据传送操作数据传送操作*388086101821222332INTRNMIRESETREADYTESTRDTEST控制和状态线控制和状态线6,TEST信号信号TEST信号信号低电平低电平有效有效 它与它与WAIT等待指令结等待指令结合使用,在执行合使用,在执行WAIT指令指令时,时,8086会停止操作,直到会停止操作,直到TEST输入电平变低为止。输入电平变低为止。*398086101821222332INTRNMIRESETREADYTESTRDINTR INTR是中断请求输入信是中断请求输入信号,在每条指令执行的最后号,在每条指令执行的最后一个时钟周期将采样这个信一个时钟周期将采样这个信号。只有标志寄存器中的中号。只有标志寄存器中的中断允许位为断允许位为1,且,且INTR为高为高时才响应中断。时才响应中断。7,INTR信号信号控制和状态线控制和状态线控制和状态线控制和状态线*408086101821222332INTRNMIRESETREADYTESTRDNMI8,NMI信号信号 NMI是不可屏蔽中断的是不可屏蔽中断的请求输入信号,它靠边沿触请求输入信号,它靠边沿触发。如果发。如果NMI从低电平变高从低电平变高电平,则电平,则8086会在完成当前会在完成当前指令后,把控制转移到不可指令后,把控制转移到不可屏蔽中断服务程序。屏蔽中断服务程序。控制和状态线控制和状态线*418086101821222332INTRNMIRESETREADYTESTRDRESET9,RESET信号信号 RESET系统复位信号高系统复位信号高电平有效。电平有效。8086要求该信号要求该信号至少维持至少维持4个时钟周期的高电个时钟周期的高电平,如果是初次加电引起的平,如果是初次加电引起的复位,则要求维持时间不小复位,则要求维持时间不小于于50S的高电平。的高电平。控制和状态线控制和状态线*428086101821222332INTRNMIRESETREADYTESTRDRESETRESET信号信号控制和状态线控制和状态线当当RESET回到回到低电平低电平时时将发生下列情况:将发生下列情况:1、标志寄存器置成、标志寄存器置成0000H,即禁止中断和单步方式即禁止中断和单步方式*431、标志寄存器置成、标志寄存器置成0000H,即禁止中断和单步方式即禁止中断和单步方式8086101821222332INTRNMIRESETREADYTESTRDRESETRESET信号信号控制和状态线控制和状态线当当RESET回到回到低电平低电平时时将发生下列情况:将发生下列情况:2、DS,SS,ES和和PC寄存寄存器复位到器复位到0000H*442、DS,SS,ES和和PC寄存寄存器复位到器复位到0000H8086101821222332INTRNMIRESETREADYTESTRDRESETRESET信号信号控制和状态线控制和状态线当当RESET回到回到低电平低电平时时将发生下列情况:将发生下列情况:3、CS寄存器置成寄存器置成FFFFH。之后的工作将从存储单元之后的工作将从存储单元FFFF0H开始开始*45在在最最小小模模式式下下受受MN/MX引线电平影响的信号引线电平影响的信号1,INTA(中断响应信号,输出)(中断响应信号,输出)在在8086响应外部可屏蔽中断请求之后,便响应外部可屏蔽中断请求之后,便发出低电平有效的中断响应信号,作为对中断发出低电平有效的中断响应信号,作为对中断请求的回答。此信号在每一个中断响应周期的请求的回答。此信号在每一个中断响应周期的T2、T3、TW周期有效,可用作中断矢量的读周期有效,可用作中断矢量的读选通信号。选通信号。第第 24 24 号号 引引 脚脚第第 24 24 号号 引引 脚脚第第 24 24 号号 引引 脚脚第第 24 24 号号 引引 脚脚第第 24 24 号号 引引 脚脚第第 24 24 号号 引引 脚脚*46在在最最小小模模式式下下受受MN/MX引线电平影响的信号引线电平影响的信号2,ALE(地址锁存允许,输出)(地址锁存允许,输出)此信号在一个总线周期的此信号在一个总线周期的T1周期,周期,时钟变为有效,将地址时钟变为有效,将地址/数据线上的地址数据线上的地址信号锁存在地址锁存器中,从而信号锁存在地址锁存器中,从而分开数据分开数据和地址信号和地址信号。高电平高电平有效有效第第 25 25 号号 引引 脚脚第第 25 25 号号 引引 脚脚第第 25 25 号号 引引 脚脚第第 25 25 号号 引引 脚脚第第 25 25 号号 引引 脚脚第第 25 25 号号 引引 脚脚*47第第 26 26 号号 引引 脚脚在在最最小小模模式式下下受受MN/MX引线电平影响的信号引线电平影响的信号3,DEN(数据允许输出信号,输出,三态)(数据允许输出信号,输出,三态)第第 26 26 号号 引引 脚脚第第 26 26 号号 引引 脚脚第第 26 26 号号 引引 脚脚第第 26 26 号号 引引 脚脚1.低电平有效低电平有效2.它用于控制它用于控制8086外接的数据收发器外接的数据收发器为高电平时则禁止收发器传送数据为高电平时则禁止收发器传送数据 为低电平时开启收发器为低电平时开启收发器第第 26 26 号号 引引 脚脚*48第第 27 27 号号 引引 脚脚第第 27 27 号号 引引 脚脚第第 27 27 号号 引引 脚脚在在最最小小模模式式下下受受MN/MX引线电平影响的信号引线电平影响的信号用于控制数据的传送方向用于控制数据的传送方向信号为信号为高电平高电平时时8086输出的数据经收发器送到数据总线输出的数据经收发器送到数据总线第第 27 27 号号 引引 脚脚4,DT/R(数据发送(数据发送/接收,输出,三态)接收,输出,三态)*49用于控制数据的传送方向用于控制数据的传送方向信号为信号为高电平高电平时时8086输出的数据经收发器送到数据总线输出的数据经收发器送到数据总线第第 27 27 号号 引引 脚脚第第 27 27 号号 引引 脚脚第第 27 27 号号 引引 脚脚在在最最小小模模式式下下受受MN/MX引线电平影响的信号引线电平影响的信号第第 27 27 号号 引引 脚脚第第 27 27 号号 引引 脚脚信号为信号为低电平低电平时时收发器把数据总线上的数据传送到收发器把数据总线上的数据传送到80868086工作于工作于DMA方式时方式时该信号为高阻状态该信号为高阻状态DT/R(数据发送(数据发送/接收,输出,三态)接收,输出,三态)*50第第 28 28 号号 引引 脚脚第第 28 28 号号 引引 脚脚在在最最小小模模式式下下受受MN/MX引线电平影响的信号引线电平影响的信号 用于区分用于区分CPU访问存储器访问还是访问输访问存储器访问还是访问输入入/输出接口,输出接口,高选择存储器,低选择高选择存储器,低选择IO。第第 28 28 号号 引引 脚脚第第 28 28 号号 引引 脚脚第第 28 28 号号 引引 脚脚第第 28 28 号号 引引 脚脚5,M/IO(存储器(存储器/IO 选择,输出,三态)选择,输出,三态)它常常与它常常与RD或或WR信号及信号及地址地址组合起来使用。组合起来使用。RD*51M/IOWR操操 作作 CPU对存储器进行写操作对存储器进行写操作CPU对对I/O端口进行写操作端口进行写操作1000在在最最小小模模式式下下受受MN/MX引线电平影响的信号引线电平影响的信号6,WR(写信号,输出,三态)(写信号,输出,三态)低电平有效,对存储器或低电平有效,对存储器或I/O进行写操作进行写操作它与它与M/IO信号组合使用的情况请见下表信号组合使用的情况请见下表:第第 29 29 号号 引引 脚脚第第 29 29 号号 引引 脚脚第第 29 29 号号 引引 脚脚第第 29 29 号号 引引 脚脚第第 29 29 号号 引引 脚脚第第 29 29 号号 引引 脚脚第第 29 29 号号 引引 脚脚第第 29 29 号号 引引 脚脚第第 29 29 号号 引引 脚脚第第 29 29 号号 引引 脚脚*52在在最最小小模模式式下下受受MN/MX引线电平影响的信号引线电平影响的信号7,HOLD(总线请求,输入)(总线请求,输入)高电平高电平有效有效 当系统中有其它的总线主设备需要获得对总线当系统中有其它的总线主设备需要获得对总线的控制权时,便向的控制权时,便向8086发出高电平有效的保持请求发出高电平有效的保持请求信号。信号。8086在每个时钟上升沿对在每个时钟上升沿对HOLD引脚信号进引脚信号进行检测,若发现行检测,若发现HOLD为为高电平高电平则有效,在当前总则有效,在当前总线周期结束时,则予以响应。线周期结束时,则予以响应。第第 31 31 号号 引引 脚脚第第 31 31 号号 引引 脚脚第第 31 31 号号 引引 脚脚第第 31 31 号号 引引 脚脚第第 31 31 号号 引引 脚脚第第 31 31 号号 引引 脚脚*53在在最最小小模模式式下下受受MN/MX引线电平影响的信号引线电平影响的信号8,HLDA(总线响应,输出)(总线响应,输出)高电平高电平有效有效 当当CPU响应保持请求时,便发出响应保持请求时,便发出HLDA高电平有效的应答信号,从而将总线让给发高电平有效的应答信号,从而将总线让给发出总线保持响应请求的设备,直到这个发出出总线保持响应请求的设备,直到这个发出总线保持请求的设备又将总线保持请求的设备又将HLDA信号变为低信号变为低电平,电平,CPU才有收回总线控制权,将才有收回总线控制权,将HLDA信号置为低电平。信号置为低电平。第第 30 30 号号 引引 脚脚第第 30 30 号号 引引 脚脚第第 30 30 号号 引引 脚脚第第 30 30 号号 引引 脚脚第第 30 30 号号 引引 脚脚第第 30 30 号号 引引 脚脚AD0-AD15 A16 A17 A18 A19RD WR M/IO BHE READY ALEINTR INTA NMI RESET8086 CPU 主要引脚主要引脚*55 X1 X2(8284A)ALEBHEA19A16AD15AD0DENDT/RM/IOWRRDHOLDHLDAINTRINTA8086地址地址锁存器锁存器STB(8282*3)(8286*2)OE(选用)(选用)BHEA19A0D15D0地址总线地址总线数据总线数据总线+5VREADYRESETMN/MXCLKRESETREADY8086在最小模式下的典型配置在最小模式下的典型配置在在最最小小模模式式下下*56第二节第二节 8086 的系统结构和配置的系统结构和配置 以字或字节为单位的数据管理以字或字节为单位的数据管理 实际地址的产生实际地址的产生 存储器分段存储器分段*57一,以字节和字为单位的数据处理一,以字节和字为单位的数据处理任何连续存放的两个字节可称为一个任何连续存放的两个字节可称为一个字字(WORD)任何连续存放的两个字可称为一个任何连续存放的两个字可称为一个双字双字(DWORD)。)。在在8086的指令系统的指令系统中,可中,可按字节或字为单位按字节或字为单位进行进行数据处理,如,数据处理,如,8位数据运算和位数据运算和16位数据运算。位数据运算。数据线的宽度称为字长,字长为数据线的宽度称为字长,字长为8位时为一个位时为一个字节字节(BYTE)*581,字节和字,字节和字D7 D0存取低位字节存取低位字节D15 D8存取高位字节存取高位字节D15 D0字处理字处理D15 D8 D7 D0字处理,包括一个字处理,包括一个地址的高地址的高8位和下位和下一个地址的低一个地址的低8位位*59存放字和字节的方式存放字和字节的方式EF38760357H0356H0358H0359H05字字字字CPU从奇数起从奇数起始的地址中一始的地址中一次最多完成一次最多完成一个字节的存取,个字节的存取,而从一个偶数而从一个偶数起始的地址中起始的地址中一次可实现一一次可实现一个字的存取个字的存取*60 地址地址 存储单元存储单元 1AH F71AH F71BH 891BH 891CH 101CH 101DH 451DH 451EH1EH 67 671FH1FH AB AB20H CD20H CD21H21H 34 3422H 22H 57 57指令指令字节变量字节变量(45)(45)字变量字变量 (为(为AB67HAB67H)字节变量字节变量(CD)(CD)F7F78989101045456767ABABCDCD34345757字的存储字的存储*61二,存储器分段二,存储器分段 1,分段的原因,分段的原因 为了实现对为了实现对1M字节存储空间进行管理,字节存储空间进行管理,8086采用了分段的方法。采用了分段的方法。存储器的分段并不唯一,它们之间可以相互存储器的分段并不唯一,它们之间可以相互重叠。所以,对于某一个存储单元来将,可能属重叠。所以,对于某一个存储单元来将,可能属于一个或多个逻辑段。于一个或多个逻辑段。*622,段的排列,段的排列D段段C段段E段段B段段A段段地址地址 段的位置不受任何限制,段的位置不受任何限制,一一个程序所在的存储空间可在一个程序所在的存储空间可在一个段内,也可占有多个段个段内,也可占有多个段 。*63段的排列段的排列q每个段的首址必须能被每个段的首址必须能被16整除,即整除,即16进制的最进制的最低位一定是低位一定是0q段在内存的位置不受限制,数量不受限制段在内存的位置不受限制,数量不受限制q段的类型为段的类型为CS、DS、SS、ES等等 4种种q一个段的最大容量为一个段的最大容量为64K*64高地址高地址高地址高地址代码段代码段存储器存储器存储器存储器低地址低地址低地址低地址代码段寄存器代码段寄存器数据段寄存器数据段寄存器堆栈段寄存器堆栈段寄存器附加段寄存器附加段寄存器附加段附加段堆栈段堆栈段数据段数据段 注意,其中数据段与堆注意,其中数据段与堆栈段是重叠的。栈段是重叠的。3 3,段的产生,段的产生 下图是下图是4 4个段寄存器分别指示着存储器中个段寄存器分别指示着存储器中4 4个当前段的个当前段的例子。例子。CSCS、DSDS、SSSS、ES ES 给出给出给出给出4 4个当前可寻址段的基址。个当前可寻址段的基址。个当前可寻址段的基址。个当前可寻址段的基址。*65三,实际(物理)地址的产生三,实际(物理)地址的产生 1 1,物理地址,物理地址 实际(物理)地址实际(物理)地址就是在就是在1M1M字节的地址空间中字节的地址空间中的每一位存储单元,用一个唯一的的每一位存储单元,用一个唯一的2020位二进制数位二进制数所表示的地址。所表示的地址。实际地址的范围从十六进制的实际地址的范围从十六进制的00000H到到FFFFFH。CPU在与存储器进行数据交换时使用实在与存储器进行数据交换时使用实际地址。际地址。*66基址和偏移地址的范围都是从基址和偏移地址的范围都是从0000H到到FFFFH。2,逻辑地址,逻辑地址 逻辑地址由两部分组成,即段的基址和偏移地址。逻辑地址由两部分组成,即段的基址和偏移地址。其中偏移地址是存储单元所在的位置到段的基址的其中偏移地址是存储单元所在的位置到段的基址的距离。距离。程序一旦设定,段地址不再变化,而随着程程序一旦设定,段地址不再变化,而随着程序的执行或数据操作,偏移量不断变化。序的执行或数据操作,偏移量不断变化。在程序中不能使用实际地址,而要使用逻辑地址。在程序中不能使用实际地址,而要使用逻辑地址。物理地址(物理地址(16进制)进制)=段地址段地址0(16进制)进制)+偏移量(偏移量(16进制)进制)*67 BIU从存储器中存取信息时,都要形成一个20位的存储器实际地址。实际地址的求法是:将段寄存器中的段基址值左移4位,再加上地址偏移量。+实际地址的产生实际地址的产生请看示例:请看示例:*68 例如:某指令所在的存储单元段内偏移量段内偏移量 IP=FE7FH,则当前存储单元的实际地址是则当前存储单元的实际地址是0C018FE7FCSCS:I PI P:+CFFFFC018存存存存 储储储储 器器器器C0180C0180CFFFFCFFFF代码段寄存器代码段寄存器 CS=C018H,左移一位,左移一位CFFFFCFFFF实际地址的产生实际地址的产生CFFFFH即即 C018 0 H+FE7F H=CFFFF H*69实际地址的产生实际地址的产生 值得注意的是,因为在一个段内的最大寻址值得注意的是,因为在一个段内的最大寻址范围是范围是64K,所以,要想对超出当前段范围的存,所以,要想对超出当前段范围的存储单元进行存取操作,必须改变段的基址。储单元进行存取操作,必须改变段的基址。8086CPU中有中有4个段寄存器个段寄存器(CS,DS,SS,ES)用来存放段的基址,还有用来存放段的基址,还有5个个16位的用来存放位的用来存放偏移地址的寄存器偏移地址的寄存器(SP,BP,SI,DI,IP)。*70四,段寄存器的使用范围四,段寄存器的使用范围u程序存放在代码段,CS中为段基址,IP中为偏移量u某些数据存放在数据段,DS中为段基址,偏移量由寻址方式确定。u某些数据存放在附加段,ES中为段基址,偏移量由寻址方式确定。u堆栈用来暂时存放一些特殊的数据存储单元,SS中为段基址(栈底),SP中为偏移量(栈顶)。8086CPU将将1M的存储空间分成两个的存储空间分成两个512K存储体:存储体:奇存储体和偶存储体奇存储体和偶存储体偶数地址存储区的数据线与偶数地址存储区的数据线与CPU的的 D0D7 相连相连奇数地址存储区的数据线与奇数地址存储区的数据线与CPU D8D15 相连相连 BHE A0 功能功能 0 0高低字节同时传送(奇偶地址)高低字节同时传送(奇偶地址)1 0低位字节(偶地址)低位字节(偶地址)0 1高位字节(奇地址)高位字节(奇地址)1 1无效无效8086CPUCPU与存储器与存储器的连接的连接8086CPUCPU与存储器与存储器的连接的连接A0和和BHE的作用的作用由由BHE选通奇存储体选通奇存储体由由A0选通偶存储体选通偶存储体 SELD8D15 SELD0D7D8D15D0D7奇存奇存储体储体偶存偶存储体储体A1A19BHEA0*73SPX MM2M4M6ABAX:BX:设在两个通用寄存器设在两个通用寄存器AXAX和和BXBX中分别存储了内容中分别存储了内容A A和和B B,下面的程序语句:,下面的程序语句:PUSH AXPUSH AX PUSH BX PUSH BX POP AX POP AX POP BX POP BX实现了什么功能呢?实现了什么功能呢?四,堆栈操作四,堆栈操作(后进先出,向下生成)(后进先出,向下生成)*74SP-2X MM2M4M6ABAX:BX:语句语句 PUSH AXPUSH AX 实现了将实现了将A A存入堆栈中,存入堆栈中,堆栈操作堆栈操作首先,首先,SP-2SP然后,进栈(然后,进栈(PUSH)SPA*75SP-2X MM2M4M6ABAX:BX:A语句语句 PUSH BXPUSH BX 则将则将B B存入堆栈中,存入堆栈中,堆栈操作堆栈操作SP-4再次再次 SP-2SP然后,进栈(然后,进栈(PUSH)B*76X MM2M4M6AAX:BX:A 语句语句 POP AXPOP AX将堆栈指针将堆栈指针SPSP当前当前所指处所指处M M4 4里的内容里的内容B B存入存入AXAX中中B堆栈操作堆栈操作SPB首先首先 栈顶内容(栈顶内容(B)AXSP+2B 然后然后 SP+2SP*77X MM2M4M6ABAX:BX:A 语句语句 POP BXPOP BX将堆栈指针将堆栈指针SPSP当前当前所指处所指处M M2 2里的内容里的内容A A存入存入BXBX中中B堆栈操作堆栈操作首先首先 栈顶内容(栈顶内容(A)BXSP+2BSP+2然后然后 SP+2SPASP*78可见原程序的功能是将可见原程序的功能是将AXAX与与BXBX里的里的内容交换内容交换ABAX:BX:BAAX:BX:堆栈操作堆栈操作*79习题习题 P331,4,补充题:补充题:一,已知某指令的逻辑地址为一,已知某指令的逻辑地址为CS=0074H IP=5000H,求其物理,求其物理地址。地址。二,有两个字二,有两个字807FH,5FEFH,它们,它们在存储器中的地址分别是在存储器中的地址分别是00020H和和00023H,请用图示它们在存储器中,请用图示它们在存储器中的存储位置。的存储位置。
展开阅读全文