《(精品)《微机原理与汇编语言》第3章.ppt》由会员分享,可在线阅读,更多相关《(精品)《微机原理与汇编语言》第3章.ppt(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 西安邮电学院计算机系系统结构教研室2008.7教材及参考书微机原理与汇编语言微机原理与汇编语言王钰王钰 李育贤李育贤 王晓婕王晓婕 编著编著微机原理与汇编语言微机原理与汇编语言实验指导实验指导 王钰王钰 编著编著Monday,April 10,2023 1 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 第第3 3章章 80 x8680 x86系列微型计算机的系列微型计算机的体系结构体系结构 主要内容:8086/80888086/8088微处理器微处理器8086/80888086/8088系统总线构成系统总线
2、构成8086808680888088存储器和存储器和I/OI/O组织组织80 x8680 x86系统的操作和总线周期系统的操作和总线周期Monday,April 10,2023 2 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 8086是Intel系列的16位微处理器,它是采用HMOS工艺技术制造的,内部包含约29000个晶体管。8086有16根数据线和20根地址线,因为可用20位地址,所以可寻址的地址空间达220即1M。8086工作时,只要单一的5V电源和单相时钟,时钟频率为5MHz。后来,Intel公司推出的8086-1型微处理器时钟频率高达10MHz,8086-2型微
3、处理器时钟频率达8MHz。几乎在推出8086微处理器的同时,Intel公司还推出了一种准16位微处理器8088。推出8088的主要目的是为了与当时已有的一整套Intel外围接口芯片直接兼容使用。8088的内部寄存器、内部运算部件以及内部操作都是按16位设计的,但对外的数据总线只有8条。3.1 8086/8088 CPU3.1 8086/8088 CPU Monday,April 10,2023 3 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 3.1.1 3.1.1 8086/8088CPU8086/8088CPU的编程结构的编程结构 1、功能结构 从功能上讲,从功能上讲,
4、8086CPU内部结构可分为两部分:内部结构可分为两部分:(1 1)总总总总线线线线接接接接口口口口单单单单元元元元BIU(Bus BIU(Bus Interface Interface Unit)Unit)负负负负责责责责完成完成完成完成CPUCPU与存储器或与存储器或与存储器或与存储器或I/OI/O设备之间的数据传送。设备之间的数据传送。设备之间的数据传送。设备之间的数据传送。(2 2)执执执执行行行行单单单单元元元元EU(Execution EU(Execution Unit)Unit)不不不不与与与与系系系系统统统统外外外外部部部部直接相连,它的功能只是负责执行指令。直接相连,它的功能
5、只是负责执行指令。直接相连,它的功能只是负责执行指令。直接相连,它的功能只是负责执行指令。Monday,April 10,2023 4 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 图3.1 8086CPU基本结构框图 Monday,April 10,2023 5 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 2、8086/8088的内部寄存器 Monday,April 10,2023 6 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 (1)通用寄存器 通用寄存器(8个):包括四个数据寄存器AX(AH/AL),BX(BH/BL),CX
6、(CH/CL),DX(DH/DL),两个地址指针寄存器(SP,BP)和两个变址寄存器(SI,DI)。1.数据寄存器数据寄存器AXAX、BXBX、CXCX、DXDX 数据寄存器一般用于存放参与运算的操作数或运算结果。每个数据寄存器都是16位的,但又可将高、低8位分别作为两个独立的8位寄存器来用。高8位分别记作AH、BH、CH、DH,低8位分别记作AL,BL,CL,DL。Monday,April 10,2023 7 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的I/O指
7、令都使用该寄存器与外设端口交换信息。BX(Base)称为基址寄存器。8086/8088CPU中有两个基址寄存器BX和BP。BX用来存放操作数在内存中数据段内的偏移地址,BP用来存放操作数在堆栈段内的偏移地址。CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。DX(Data)称为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。寄存器寄存器AX,BX,CX,DXAX,BX,CX,DX的特定用法的特定用法Monday,April 10
8、,2023 8 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 1.1.地址指针寄存器地址指针寄存器SPSP、BPBP SP(StackSP(Stack Pointer)Pointer)称称为为堆堆栈栈指指针针寄寄存存器器。在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。BP(BaseBP(Base Pointer)Pointer)称称为为基基址址寄寄存存器器。作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。Monday,April 10,2023
9、 9 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 1.1.1.1.变址寄存器变址寄存器变址寄存器变址寄存器SISISISI、DIDIDIDI SI(SourceSI(Source Index)Index)称为源变址寄存器。称为源变址寄存器。DI(Destination DI(Destination Index)Index)称为目的变址寄存器。称为目的变址寄存器。这两个寄存器通常用在字符串操作时存放操作数的偏移地址,其中SI存放源串在数据段内的偏移地址,DI存放目的串在附加数据段内的偏移地址。Monday,April 10,2023 10 微机原理与汇编语言 第3章 80
10、x86系列微型计算机的体系结构 (2 2)段寄存器段寄存器 为了对1M个存储单元进行管理,8086/8088对存储器进行分段管理,即将程序代码或数据分别放在代码段、数据段、堆栈段或附加数据段中,每个段最多可达64K个存储单元。段地址分别放在对应的段寄存器中,代码或数据在段内的偏移地址由有关寄存器或立即数给出。Monday,April 10,2023 11 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 8086/80888086/80888086/80888086/8088的四个段寄存器的四个段寄存器的四个段寄存器的四个段寄存器 CS(CodeCS(Code Segment)
11、Segment)代码段寄存器。代码段寄存器。用来存储程序当前使用的代码段的段地址。CS的内容左移四位再加上指令指针寄存器IP的内容就是下一条要读取的指令在存储器中的物理地址。DS(DataDS(Data Segment)Segment)数据段寄存器。数据段寄存器。用来存放程序当前使用的数据段的段地址。DS的内容左移四位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。SS(StackSS(Stack Segment)Segment)堆栈段寄存器。堆栈段寄存器。用来存放程序当前所使用的堆栈段的段地址。堆栈是存储器中开辟的按先进后出原则组织的一个特殊存储区,主要用
12、于调用子程序或执行中断服务程序时保护断点和现场。ES(ExtraES(Extra Segment)Segment)附加数据段寄存器。附加数据段寄存器。用来存放程序当前使用的附加数据段的段地址。附加数据段用来存放字符串操作时的目的字符串。Monday,April 10,2023 12 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 (3)控制寄存器 IP(InstructionIP(Instruction Pointer)Pointer)指指令令指指针针寄寄存存器器。用来存放下一条要读取的指令在代码段内的偏移地址。用户程序不能直接访问IP。FLAGSFLAGS标标志志寄寄存存器
13、器。它是一个16位的寄存器,但只用了其中9位,这9位包括6个状态标志位,3个控制标志位,如图3.5所示。Monday,April 10,2023 13 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 图3.5 8086/8088的标志寄存器 Monday,April 10,2023 14 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 状态标志位:状态标志位:状态标志位:状态标志位:6 6 6 6位位位位 状态标志位用来反映算术和逻辑运算结果的一些特征。下面分别介绍这6个状态标志位的功能。CF(CarryCF(CarryCF(CarryCF(Carry Fl
14、ag)Flag)Flag)Flag)进进进进位位位位标标标标志志志志。当进行加减运算时,若最高位发生进位或借位则CF为1,否则为0。通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围。PF(ParityPF(ParityPF(ParityPF(Parity Flag)Flag)Flag)Flag)奇偶标志位。奇偶标志位。奇偶标志位。奇偶标志位。当指令执行结果的低8位中含有偶数个1时,PF为1,否则为0。Monday,April 10,2023 15 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 AF(Auxiliary AF(Auxiliary AF(Au
15、xiliary AF(Auxiliary Flag)Flag)Flag)Flag)辅辅辅辅助助助助进进进进位位位位标标标标志志志志位位位位。当执行一条加法或减法运算指令时,若结果的低字节的低4位向高4位有进位或借位,则AF为1,否则为0。ZF(Zero ZF(Zero ZF(Zero ZF(Zero Flag)Flag)Flag)Flag)零零零零标标标标志志志志位位位位。若当前的运算结果为0,则ZF为1,否则为0。SF(Sign SF(Sign SF(Sign SF(Sign Flag)Flag)Flag)Flag)符符符符号号号号标标标标志志志志位位位位。当运算结果的最高位为1时,SF=1
16、,否则为0。OF(Overflow OF(Overflow OF(Overflow OF(Overflow Flag)Flag)Flag)Flag)溢溢溢溢出出出出标标标标志志志志位位位位。当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1,否则为0。用来判断带符号数运算结果是否溢出。Monday,April 10,2023 16 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 控制标志位:控制标志位:3 3位位位位 用来控制CPU的操作,由程序设置或清除。它们是:TF(Trap TF(Trap Flag)Flag)跟跟踪踪(陷陷阱阱)标标志志位位。是为测试程序的
17、方便而设置。若将TF置1,CPU处于单步工作方式。IF(Interrupt IF(Interrupt Flag)Flag)中中断断允允许许标标志志位位。是用来控制可屏蔽中断的控制标志位。若将IF置1,表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求;若用CLI指令将IF清0,则禁止CPU接受可屏蔽中断请求信号。DF(Direction DF(Direction Flag)Flag)方方向向标标志志位位。若将DF置1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;否则按增地址方式进行。Monday,April 10,2023 17 微机原理与汇编语言 第3章
18、80 x86系列微型计算机的体系结构 3.1.2 8086/8088CPU的引脚及其功能 图3.7 8086/8088CPU引脚 Monday,April 10,2023 18 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 8086/8088 CPU均属高性能微处理器,根据它的基本性能至少包含16条数据线和20条地址线,再加上其他一些必要的控制信号。由于芯片引脚线数量不能太多,因此对部分引脚采用了分时复用方式,构成40条引脚的双列直插式封装。8086 CPU封装外形与内部各功能部件之间相互连接如图3-4所示。由于8086/8088 CPU具有两种工作模式:最小模式和最大模式
19、,8条引脚(2431脚)在两种工作模式中具有不同的功能。图3-4(a)括号中所示为最大模式下被重新定义的控制信号。Monday,April 10,2023 19 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 1.各引脚功能 (1)AD15AD0(Address Data Bus)分时复用的地址数据线传输地址时三态输出,传输数据时可双向三态输入/输出。(2)A19/S6A16/S3(Address/Status)分时复用的地址状态线作为地址线用时,A19A16与AD15AD0一起构成访问存储器的20位物理地址,当CPU访问I/O端口时,A19A16,保持为“0”;作为状态线用
20、时,S6S3用来输出状态信息,其中S3和S4可用于表示当前使用的段寄存器号,如表3.1所示。当S4S310时,表示当前正使用CS对存储器寻址。而当前正对I/O端口或中断矢量寻址时,不需要使用段寄存器。S5用来表示中断标志位状态。当IF1时,S5置“1”;S6恒保持为“0”。Monday,April 10,2023 20 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 表表3.1 S3.1 S4 4与与S S3 3组合代表的正在使用的寄存器组合代表的正在使用的寄存器 S4S3当前正在使用的段寄存器00110101 ES SS CS 或未使用任何段寄存器 DSMonday,Apr
21、il 10,2023 21 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 (3)/S7(Bus High Enable/Status)总线高字节有效信号是三态输出,低电平有效,用来表示当前高8位数据总线上的数据有效。读/写存储器或I/O端口以及中断响应时,作为选体信号,与最低位地址码A0配合表示当前总线使用情况,如表3.2所示。非地址传输期间,输出S7状态信息,S7未赋给实际意义,在CPU处于保持响应期间被设置为高阻状态。(4)(Read)读信号为三态输出,低电平有效,表示当前CPU正在读存储器或I/O端口。Monday,April 10,2023 22 微机原理与汇编语言
22、 第3章 80 x86系列微型计算机的体系结构 (5)(Write)写信号为三态输出,低电平有效,表示当前CPU正在写存储器或I/O端口。(6)M/IO(Memory/Input Output)存储器或I/O端口访问信号为三态输出。M/为高电平时,表示当前CPU正在访问存储器;为低电平时,表示CPU正在访问I/O端口。(7)READY 准备就绪信号由外部输入,高电平有效,表示CPU访问的存储器或I/O端口已为传输做好准备。当READY无效时,要求CPU插入一个或几个等待周期Tw,直到READY信号有效为止。Monday,April 10,2023 23 微机原理与汇编语言 第3章 80 x86
23、系列微型计算机的体系结构 (8)INTR(Interrupt Request)中断请求信号由外部输入,电平触发,高电平有效。INTR有效时,表示外部向CPU发出中断请求。CPU在每条指令的最后一个时钟周期对INTR进行测试,一旦测试到有中断请求,并且当前中断允许标志IF1时,则暂停执行下条指令转入中断响应周期。(9)(Interrupt Acknowledge)中断响应信号向外部输出,低电平有效,表示CPU响应了外部发来的INTR信号,在中断响应周期,可用来作为读选通信号。(10)NMI(Non-Maskable Interrupt Reguest)不可屏蔽中断请求信号由外部输入,边沿触发,正
24、跳沿有效,不受中断允许标志的限制。CPU一旦测试到NMI请求有效,待当前指令执行完就自动从中断入口地址表中找到类型2中断服务程序的入口地址,并转去执行。显然,这是一种比INTR高级的请求。Monday,April 10,2023 24 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 (11)测试信号,由外部输入,低电平有效。当CPU执行WAIT指令时,每隔5个时钟周期对进行一次测试。若测试到无效,则CPU处于踏步等待状态,直到TEST有效,CPU才继续执行下一条指令。(12)RESET 复位信号,由外部输入,高电平有效。RESET信号至少保持4个时钟周期。CPU接收到RESE
25、T信号后,停止进行操作,并将标志寄存器、段寄存器、指令指针IP和指令队列等复位到初始状态。(13)ALE(Address Latch Enable)地址锁存允许信号向外部输出,高电平有效,在最小模式系统中用来作为地址锁存器8282/8283的选通信号。Monday,April 10,2023 25 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 (14)DT/(DataTransmit/Receive)数据发送/接收控制信号三态输出,在最小模式系统中用来控制数据收发器8286/8287的数据传输方向。当DT/为高电平时,表示数据从CPU向外部输出,即完成写操作;DT/为低电平
26、时,表示数据从外部向CPU输入,即完成读操作。(15)(Data Enable)数据允许信号三态输出,低电平有效,在最小模式系统中用来作为数据收发器8286/8287的选通信号。(16)HOLD(Hold Request)总线请求信号由外部输入,高电平有效,在最小模式系统中表示有其他共享总线的主控者向CPU请求使用总线。Monday,April 10,2023 26 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 (17)HLDA(Hold Acknowlege)总线响应信号向外部输出,高电平有效。CPU一旦测试到有HOLD请求时,就在当前总线周期结束时,使HLDA有效,表示
27、响应这一总线请求,并立即让出总线使用权。CPU中的EU可继续工作到下一次要求使用总线为止,一直到HOLD无效,CPU才将HLDA置成无效,并收回对总线的使用权,继续操作。(18)MN/(Minimun/Maximun)工作模式选择信号由外部输入。MN/为高电平,表示CPU工作在最小模式系统中;低电平时,表示CPU工作在最大模式系统中。(19)CLK(Clock)主时钟信号由8284时钟发生器输入。8086 CPU可使用的时钟频率随芯片型号不同而不同,8086为5MHz,8086-1为10MHz,8086-2为8MHz。(20)VCC(电源)8086 CPU只需要单一的+5V电源,由VCC输入。
28、Monday,April 10,2023 27 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 (1)S2、S1、S0(Bus Cycle Status):引脚26、27、28,总线周期状态信号,输出。低电平有效的三个状态信号连接到总线控制器8288的输入端,8288对这些信号进行译码后产生内存及I/O端口的读写控制信号。表3.3给出了这三个状态信号的代码组合使8288产生的控制信号及其对应的操作。2.8086 CPU工作在最大模式系统中几个重新定义的引脚Monday,April 10,2023 28 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构(2)LO
29、CK(Lock):引脚29,总线封锁信号,输出。当LOCK为低电平时,系统中其他总线主设备就不能获得总线的控制权而占用总线。LOCK信号由指令前缀LOCK产生,LOCK指令后面的一条指令执行完后,便撤消了LOCK信号。另外,在DMA期间,LOCK被浮空而处于高阻状态。Monday,April 10,2023 29 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 (3)RQ/GT1、RQ/GT0(Request/Grant):引脚30、31,总线请求信号(输入)/总线请求允许信号(输出)。这两个信号可供8086/8088以外的2个总线主设备向8086/8088发出使用总线的请求
30、信号RQ(相当于最小方式时的HOLD信号)。而8086/8088在现行总线周期结束后让出总线,发出总线请求允许信号GT(相当于最小方式的HLDA信号),此时,外部总线主设备便获得了总线的控制权。其中RQ/GT0比RQ/GT1的优先级高。Monday,April 10,2023 30 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 (4)QS1、QS0(Instruction Queue Status):引脚24、25,指令队列状态信号,输出。QS1、QS0两个信号电平的不同组合指明了指令队列的状态,其代码组合对应的含义如表所示。QS1QS0含 义00无操作01从指令队列的第一
31、字节中取走代码10队列为空11除第一字节外,还取走了后续字节中的代码Monday,April 10,2023 31 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 3.1.3 80883.1.3 8088与与80868086引脚的区别引脚的区别 准16位的8088 CPU是继8086之后推出的,被畅销全球的IBM-PC机选为CPU。它与8086 CPU具有类似体系结构,两者的执行部件(EU)完全相同,其指令系统、寻址能力及程序设计方法都相同,所以两种CPU完全兼容。这两种CPU的区别仅在于BIU,归纳起来有以下几个方面。外部数据总线位数的差别:8086 CPU的外部数据总线有
32、16位,在一个总线周期内可以输入/输出一个字(16位数据),使系统处理数据和对中断响应的速度加快,而8088 CPU的外部数据总线为8位,在一个总线周期内只能输入/输出一个字节(8位数据)。Monday,April 10,2023 32 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 指令队列的差别:8086 CPU的指令队列可容纳6个字节,且在每一个总线周期中从存储器中取出2个字节的指令代码填入指令队列;而8088 CPU的指令队列只能容纳4个字节,且在每个总线周期内只能取一个字节的指令代码,从而增长了总线取指令的时间,在一定条件下可能影响取指令操作和其他操作的并行性。引脚
33、的差别。两种CPU的引脚功能是相同的,但有以下几点不同:Monday,April 10,2023 33 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 AD15AD0的定义不同。在8086中都定义为地址/数据分时复用引脚;而在8088中,由于只需要8条数据线,因此,对应于8086的AD15AD8这8根引脚在8088中定义为A15A8,它们在8088中只做地址线用。引脚34的定义不同。在最大方式下,8088的第34引脚保持高电平,而8086在最大方式下34引脚的定义与最小方式下相同。引脚28的有效电平高低定义不同。8088和8086的第28引脚的功能是相同的,但有效电平的高低定
34、义不同。8088的第28引脚为IO/M,当该引脚为低电平时,表明8088正在进行存储器操作;当该引脚为高电平时,表明8088正在进行I/O操作。8086的第28引脚为M/IO,电平与8088正好相反。Monday,April 10,2023 34 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 3.2 3.2 8086/80888086/8088系统总线的构成系统总线的构成 3.2.1 最小模式下系统总线的构成 在实际使用8086/8088微处理器时,还必须配有时钟发生器(8284A)、地址锁存器(8282/8283)和总线驱动器(8286/8287),才能构成系统总线。1时
35、钟发生器8284A8284A除为CPU和系统提供时钟信号外,还提供经时钟同步的复位信号RESET和就绪信号READY。8284A能为CPU提供的最高时钟信号频率为8MHz。而8284A-1可提供10MHz时钟信号。为使8284A正常工作,只要外接一块晶体即可。Monday,April 10,2023 35 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 28282/8283地址锁存器由于8086/8088 CPU的地址/数据和地址/状态总线是分时复用的,而存储器或I/O接口电路通常要求在与CPU进行数据传输时,在整个总线周期内须保持稳定的地址信息,因而必须在总线周期的第一个时
36、钟周期内将地址锁存起来。8282(不反相)和8283(反相)是适用于8086/8088以及MCS-85等系列微型计算机的8位双极型具有三态输出的锁存缓冲器,可用于缓冲或多路传输。38286/8287数据收发器为提高8086/8088系统数据总线的驱动能力,并提供一种在多主控器系统应用环境下的控制手段,在8086/8088 CPU和系统数据总线之间必须接入数据双向缓冲器,Intel公司提供的8286(不反相)和8287(反相)就是一种具有三态输出的8位双极型数据收发器,具有很强的总线驱动能力。Monday,April 10,2023 36 微机原理与汇编语言 第3章 80 x86系列微型计算机的
37、体系结构 8286/8287具有8路双向缓冲电路,以便实现8位数据的双向传输。4最小模式系统总线构成 当处理器的引脚接在+5V电源上时,便工作于最小模式。图3-12为一种典型的最小模式系统配置。Monday,April 10,2023 37 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 Monday,April 10,2023 38 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 3.2.2 最大模式下系统总线的构成 18288总线控制器 前面已指出,当8086/8088 CPU工作于最大模式时,不直接产生总线控制信号,而是在每个总线周期开始之前输出状态信
38、息、和,用于指示该总线周期的操作类型。8288总线控制器被用来对、和译码,产生具有适当定时的总线命令和总线控制信号。Monday,April 10,2023 39 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 由8288总线控制器参与构成的工作于最大方式的单处理器总线如图3-15所示。Monday,April 10,2023 40 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 如果希望在一个系统中能包含多个共享总线的主控者,那么必须在系统中增设总线仲裁器8289。2总线仲裁器8289 总线仲裁器8289与总线控制器8288配合,将8086/8088 CP
39、U与8089IOP、8087NDP等主控者连接到总线上,构成多主控的微机系统。每一个主控者必须配备一个8288总线控制器和一个8289总线仲裁器。8289对主控者是透明的,对于任何一个主控者来说,都好像自己独占总线一样。当有多个主控者同时要求使用总线时,由8289总线仲裁器进行仲裁将使用权赋给优先级别高的主控者。8289封装外型与内部结构框图如图3-16所示。此处不再详述。Monday,April 10,2023 41 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 3.3 存储器和I/O的组织 80 x86系统为了向上兼容,必须能按字节进行操作,因此系统中存储器和I/O端口
40、是按字节编址的。3.3.1 存储器的组织 1存储空间与存储器结构8086/8088有20根地址线,因此具有2201M字节的存储器地址空间。这1M字节的内存单元按照00000FFFFFH来编址。(1)8086系统中存储器的结构8086系统中,将1M字节的存储空间分成两个512K字节的存储体,一个存储体中包含偶数地址,另一个存储体中包含奇数地址,两个存储体之间采用字节交叉编址方式,如图3-20所示。Monday,April 10,2023 42 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 图3-20 字节交叉编址方式Monday,April 10,2023 43 微机原理与汇
41、编语言 第3章 80 x86系列微型计算机的体系结构 A0操 作00同时访问两个存储体,读/写一个字的信息01只访问奇地址存储体,读/写高字节的信息10只访问偶地址存储体,读/写低字节的信息11无操作表表3.9 3.9 和A0的控制作用Monday,April 10,2023 44 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 图3-21 存储体与总线的连接Monday,April 10,2023 45 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构(2)8088系统中存储器的结构 8088系统中,可直接寻址的存储器空间同样为1M字节,但是整个1M字节的存
42、储空间同属一个单一的存储体,它与总线之间的连接方式如图3-22所示。8088 CPU每访问一次存储器只能读/写一个字节信息,因此8088系统的存储器中不存在对准存放的概念,任何数据字都需要两次访问存储器才能完成读/写操作。因此,在8088系统中,程序运行速度会比在8086系统中慢些。Monday,April 10,2023 46 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 2存储器的分段 8086/8088系统中,可寻址的存储器空间达1M字节,要对整个存储器空间寻址,需要20位长的地址码,而机内所有的寄存器都只有16位,只能寻址64K字节。因此在8086/8088系统中,
43、把整个存储空间分成许多逻辑段,这些逻辑段容量最多可为64K字节。8086/8088系统中,对1M字节的存储器采用了一种巧妙的分段办法。将整个存储器分成许多逻辑段,每个逻辑段的容量64K字节,允许它们在整个存储空间中浮动,各个逻辑段之间可以紧密相连,也可以相互重叠(完全重叠或部分重叠),那么在整个存储空间中可设置若干个逻辑段,如图3-23所示。Monday,April 10,2023 47 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 图3-23 存储器分段示意图Monday,April 10,2023 48 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构
44、任何一个物理地址可以唯一地被包含在一个逻辑段中,也可包含在多个相互重叠的逻辑段中,只要能得到它所在段的首地址和段内的相对地址,就可对它进行访问。在8086/8088存储空间中,把16字节的存储空间称为一节(Paragraph)。为了简化操作,要求各个逻辑段从节的整数边界开始,也就是说,保证段首地址的低4位地址码总是为“0”。于是将段首地址的高16位地址码称为“段地址”,把它存放在相应的段寄存器中;而段内的相对地址可以用系统中的16位通用寄存器来存放,被称为“偏移地址”。Monday,April 10,2023 49 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 使用段寄存器
45、的优点是:虽然各条指令使用的地址只有16位,但整个CPU的存储器寻址范围可达1M字节。如果使用多个代码、数据或堆栈段,可使一个程序的指令、数据或堆栈部分的长度超过64K字节。为一个程序及其数据和堆栈使用独立的存储区提供了方便。能够将某个程序及其数据在每次执行时放入不同的存储区域中。Monday,April 10,2023 50 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 3存储器中的逻辑地址和物理地址 采用分段结构的存储器中,任何一个逻辑地址由段地址和偏移地址两个部分构成,它们都是无符号的16位二进制数。任何一个存储单元对应一个20位的物理地址,也可称为绝对地址,它是由逻
46、辑地址变换得来的。当CPU需要访问存储器时,必须完成如下的地址运算:物理地址段地址16偏移地址这是在CPU的总线接口部件BIU的地址加法器中完成的,其操作如图3-24所示。Monday,April 10,2023 51 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 图3-24 物理地址的形成过程Monday,April 10,2023 52 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 表3.10 逻辑地址来源操作类型段地址偏移地址正常来源其他来源取指令CS无IP堆栈操作SS无SP存/取变量DSCS,ES,SS有效地址EA取源串DSCS,ES,SSSI存
47、/取目标串ES无DI通过BP间接寻址SSCS,ES,SS有效址址EAMonday,April 10,2023 53 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 4堆栈段的使用 8086/8088系统中的堆栈是用段定义语句在存储器中定义的一个堆栈段,与其他逻辑段一样,它可在1M字节的存储空间中浮动,其容量可达到64KB,这是一个向下生长的堆栈,由堆栈段寄存器SS给定堆栈段的段地址,由堆栈指针SP给定当前栈顶,当堆栈置空时,SP指向堆栈栈底。为了加快堆栈操作的速度,堆栈以字为单位进行操作,并且堆栈中的数据项必须对准存储(低字节在偶地址、高字节在奇地址),以保证每访问一次堆栈,
48、能压入/弹出一个字信息。对堆栈的操作主要是入栈操作(PUSH)和弹出操作(POP)。进行入栈操作时,总是先修改指针SP2SP,后将信息入栈。进行弹出操作时,总是先将信息弹出后修改指针SP+2SP。Monday,April 10,2023 54 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 5段寄存器初始化 如果运行一个与操作系统相联系的程序,则该操作系统一般先进行段寄存器的初始化,继而当需要时修改它们的内容。如果进行一个没有利用操作系统的程序,那么段寄存器必须初始化。方法一是通过立即数对段寄存器进行初始化,程序如下:MOV AX,IMM$DATA$FOR$DS ;立即数装入
49、AXMOV DS,AXMOV AX,IMM$DATA$FOR$ES ;立即数装入AXMOV ES,AXMOV AX,IMM$DATA$FOR$SS ;立即数装入AXMOV SS,AXMonday,April 10,2023 55 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 初始化段寄存器的另一方法是直接从存储器传送数据到段寄存储器中,程序如下:MOV DS,CS:DATA$FOR$DSMOV ES,CS:DATA$FOR$ESMOV SS,CS:DATA$FOR$SS如果段寄存器ES和SS初始化的数据是包含在由DS寻址的段中,则上面这段程序中的第二条及第三条指令中段的前缀
50、可以省去。对于特殊的初始化程序,8086提供了专门的保护措施。当SS和SP寄存器由连续的MOV指令初始化时,在两条MOV指令之间8086不允许中断发生,则MOV SS,CS:DATA$FOR$SSMOV SP,DATA$FOR$SP是一个不可中断的指令序列。Monday,April 10,2023 56 微机原理与汇编语言 第3章 80 x86系列微型计算机的体系结构 3.3.2 8086/8088的I/O组织 8086/8088系统和外部设备之间都是由I/O接口电路来联系的。每个I/O接口都有一个端口或几个端口。在微机系统中,每个端口分配一个地址号,称为端口地址。一个端口通常为I/O接口电路