微处理器课件_第1页
微处理器课件_第2页
微处理器课件_第3页
微处理器课件_第4页
微处理器课件_第5页
已阅读5页,还剩153页未读 继续免费阅读

下载本文档

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

文档简介

微处理器

2.18086/8088微处理器2.1.18086CPU的内部结构

8086CPU内部结构如图2.1所示。按功能可分为两大部分:总线接口单元BIU(BusInterfaceUnit)和执行单元EU(ExecutionUnit)。。2.18086/8088微处理器图2.18086CPU内部结构示意图2.18086/8088微处理器1.总线接口单元BIU总线接口单元BIU是8086CPU同存储器和I/O设备之间的接口部件,负责对全部引脚的操作,即8086所有对存储器和I/O设备的操作都是由BIU完成的。所有对外部总线的操作都必须有正确的地址和适当的控制信号,BIU中的各部件主要是围绕这个目标设计的。它提供了16位双向数据总线、20位地址总线和若干条控制总线。其具体任务是:负责从内存单元中预取指令,并将它们送到指令队列缓冲器暂存。CPU执行指令时,总线接口单元要配合执行单元,从指定的内存单元或者I/O端口中取数据传送给执行单元,或者把执行单元的处理结果传送到指定的内存单元或I/O端口中。总线接口单元BIU由20位地址加法器、4个段寄存器、16位指令指针IP、指令队列缓冲器和总线控制逻辑电路等组成。2.18086/8088微处理器1) 地址加法器和段寄存器

8086CPU的20条地址线,可直接寻址1MB存储器物理空间。但CPU内部寄存器均为16位的寄存器。那么,16位的寄存器如何实现20位地址寻址呢?它是由专门地址加法器将有关段寄存器内容(段的起始地址)左移4位后,与16位偏移地址相加,形成了一个20位的物理地址,以对存储单元寻址。比如在取指令时,由16位指令指针(IP)提供一个有效地址(逻辑地址),在地址加法器中与代码段寄存器(CS)内容相加,形成实际的20位物理地址,送到总线上实现取指令的寻址。图2.2表示出了这一物理地址的形成过程。例如:假定代码段寄存器(CS)=2000H,指令码单元的偏移地址(IP)=1000H,则此指令的物理地址为21000H。2.18086/8088微处理器图2.220位地址加法器2.18086/8088微处理器2) 16位指令指针IP(InstructionPointer)指令指针IP用来存放下一条要执行指令在代码段中的偏移地址。它只有和CS相结合,才能形成指向指令存放单元的物理地址。在程序运行中,IP的内容由BIU自动修改,使它总是指向下一条要取的指令在现行代码段中的偏移地址。程序没有直接访问IP的指令,但通过某些指令可以修改它的内容。例如:转移指令可将转移目标的偏移地址送入IP来实现程序的转移。2.18086/8088微处理器3) 指令队列缓冲器当EU正在执行指令中,且不需占用总线时,BIU会自动地进行预取指令操作,将所取得的指令按先后次序存入一个6字节的指令队列缓冲器,该队列缓冲器按“先进先出”的方式工作,并按顺序取到EU中执行。其操作遵循下列原则:

(1) 每当指令队列缓冲器中存满一条指令后,EU就立即开始执行。

(2) 每当BIU发现队列中空了两个字节时,都会自动地寻找空闲的总线周期进行预取指令操作,直到填满为止。2.18086/8088微处理器

(3)每当EU执行一条转移、调用或返回指令后,则要清除指令队列缓冲器,并要求BIU从新的地址开始取指令,新取的第一条指令将直接经指令队列缓冲器送到EU去执行,并在新地址基础上再做预取指令操作,实现程序段的转移。2.18086/8088微处理器4) 总线控制逻辑电路总线控制逻辑电路将8086CPU的内部总线和外部总线相连,是8086CPU与内存单元或I/O端口进行数据交换的必经之路。它包括16条数据总线、20条地址总线和若干条控制总线,CPU通过这些总线与外部取得联系,从而构成各种规模的8086微型计算机系统。2.18086/8088微处理器

2.执行单元EU执行单元中包含1个16位的运算器ALU,8个16位的寄存器,1个16位标志寄存器FLAGS,一个数据暂存寄存器和执行单元的控制电路,也就是说它已经包含了微处理机的3个基本部件。这个单元进行所有指令的解释和执行,同时管理上述有关的寄存器。2.18086/8088微处理器

1) 算术逻辑运算单元(ALU)它是1个16位的运算器,可用于8/16位二进制算术和逻辑运算,也可按指令的寻址方式计算寻址存储器所需的16位偏移量。

2) 标志寄存器(FLAGS)它是1个16位的运算器,用来反映CPU运算的状态特征和存放某些控制标志。

3) 数据暂存寄存器它协助ALU完成运算,暂存参加运算的数据。2.18086/8088微处理器

4) 通用寄存器组它包括4个16位的数据寄存器AX、BX、CX、DX和4个16位指针与变址寄存器SP、BP与SI、DI。

5) EU控制电路它负责从BIU的指令队列缓冲器中取指令,并对指令译码,根据指令要求向EU内部各部件发出控制命令,以完成各条指令规定的功能。2.18086/8088微处理器执行单元中的各部件通过一个16位的ALU总线连接在一起,在内部实现快速数据传输。值得注意的是这个内部总线与CPU外接的总线之间是隔离的,即这两个总线可以同时工作而互不干扰。EU对指令的执行是从取指令操作码开始的,它从总线接口单元的指令队列缓冲器中每次取一个字节。如果指令队列缓冲器中是空的,那么EU就要等待BIU通过外部总线从存储器中取得指令并送到EU,通过译码电路分析,2.18086/8088微处理器

发出相应控制命令,控制“ALU数据总线”中数据的流向。如果是运算操作,操作数据经过暂存寄存器送入ALU,运算结果经过“ALU数据总线”送到相应寄存器,同时标志寄存器FLAGS根据运算结果改变状态。在指令执行过程中常会发生从存储器中读或写数据的事件,这时就由EU单元提供寻址用的16位有效地址,在BIU单元中经运算形成一个20位的物理地址,送到外部总线进行寻址。2.18086/8088微处理器2.1.28086CPU寄存器组织

8086微处理器内部共有14个16位寄存器,包括:通用寄存器、地址指针和变址寄存器、段寄存器、指令指针和标志寄存器。8086CPU内部寄存器如图2.3所示。2.18086/8088微处理器图2.38086CPU内部寄存器2.18086/8088微处理器1.通用寄存器通用寄存器又称为数据寄存器,既可作为16位数据寄存器使用,也可作为两个8位数据寄存器使用。当用作16位时,称为AX、BX、CX、DX。当用作8位时,AH、BH、CH、DH存放高字节,AL、BL、CL、DL存放低字节,并且可独立寻址,这样,4个16位寄存器就可当作8个8位寄存器来使用。2.18086/8088微处理器作为通用寄存器,多数情况下,通用寄存器是用在算术和逻辑运算指令中,用来存放算术逻辑运算的源/目的操作数。除了“通用”这个一般用途外,这几个寄存器还有一些特殊的用途,比如在8086中有一种字符串处理指令,它可以对指定长度的字符串连续作同一种处理,这时CX中就应存入字符串长度值,每处理一个字符,就作一次减法计数,直到CX值为0,所以CX又叫计数寄存器。出于各自的特殊使用场合,AX又叫累加器,BX叫基址寄存器,而DX叫数据寄存器。2.18086/8088微处理器2.段寄存器8086CPU有20条地址线,它可寻址的存储空间为1MB。而8086指令给出的地址编码只有16位,指令指针和变址寄存器也都是16位的,所以CPU不能直接寻址1MB空间。为此采用分段寄存器,即8086用一组段寄存器将这1MB存储空间分成若干个逻辑段,每个逻辑段长度≤64KB,用4个16位的段寄存器分别存放各个段的起始地址(又称段基址),8086的指令能直接访问这4个段寄存器。不管是指令还是数据的寻址,都只能在划定的64KB范围内进行。寻址时还必须给出一个相对于分段2.18086/8088微处理器

寄存器值所指定的起始地址的偏移值(也称为有效地址),以确定段内的确切地址。对物理地址的计算是在BIU中进行的,它先将段地址左移4位,然后与16位的偏移值相加。段寄存器共有4个。代码段寄存器CS表示当前使用的指令代码可以从该段寄存器指定的存储器段中取得,相应的偏移值则由IP提供。堆栈段寄存器SS指定当前堆栈的底部地址。数据段寄存器DS指示当前程序使用的数据所存区段的最低地址。而附加段寄存器ES则指出当前程序使用附加段地址的位置,该段一般用来存放原始数据或运算结果。2.18086/8088微处理器

3.地址指针和变址寄存器根据在段内寻址的方法,除了确定段地址外,还必须有相应的偏移量。偏移量有的已在指令中直接给出,但更多的情况下是由指令指定某些寄存器的内容并经运算后得出。参与地址运算的主要是地址指针与变址寄存器组中的4个寄存器,地址指针和变址寄存器都是16位寄存器,一般用来存放地址的偏移量(即相对于段起始地址的距离)。在BIU的地址加法器中,与左移4位后的段寄存器内容相加产生20位的物理地址。2.18086/8088微处理器这4个寄存器的作用还是有区别的。堆栈指针SP用以指出在堆栈段中当前栈顶的地址,入栈(PUSH)和出栈(POP)指令是由SP给出栈顶的偏移地址。基址指针BP指出要处理的数据在堆栈段中的基地址,故称为基址指针寄存器。这里要注意两点:一是BP并非确切的偏移量,它只是全部偏移量中的一个基本值;二是BP所指的物理地址必须用堆栈寄存器SS来计算。变址寄存器SI和DI用来存放当前数据段中某个单元的偏移量。在字符串处理中,被处理的数据称为源操作数据,它们存放在源变址寄存器SI给出的偏移地址上。而处理后的字符串则放在由目的变址寄存器DI给出的偏移地址上。这时SI和DI不能颠倒过来用。2.18086/8088微处理器4.指令指针和标志寄存器指令指针IP的功能跟Z80CPU中的程序计数器PC的功能类似。正常运行时,IP中存放的是BIU要取的下一条指令的偏移地址。它具有自动加1功能,每当执行一次取指操作,它将自动加1,使它指向要取的下一内存单元,虽每取一个字节后IP内容加1,但取一个字后IP内容加2。某些指令可使IP值改变,某些指令还可使IP值压入堆栈,或从堆栈中弹出。2.18086/8088微处理器标志寄存器FLAGS是1个16位的寄存器,8086共使用了9个有效位,标志寄存器格式如图2.4所示。其中6位是状态标志位,3位为控制标志位。状态标志位是当一些指令执行后,所产生数据的一些特征的表征。而控制标志位则可以由程序写入,以达到控制处理机状态或程序执行方式的表征。下面指出6个状态标志位的功能。它们是:2.18086/8088微处理器CF(CarryFlag)进行标志位:当执行1个加法(或减法)运算使最高位产生进位(或借位)时,CF为1,否则为0。PF(PrityFlag)奇偶标志位:该标志位反映运算结果中1的个数是偶数个还是奇数个。当指令执行结果的低8位中含有偶数个1时,PF为1,否则为0。2.18086/8088微处理器图2.4标志寄存器格式2.18086/8088微处理器AF(AuxiliarycarryFlag)辅助进位标志位:当执行一个加法(或减法)运算使结果的低4位向高4位有进位(或借位)时,AF为1,否则为0。ZF(ZeroFlag)零标志位:若当前的运算结果为零,ZF为1,否则为0。SF(SignFlag)符号标志位:它和运算结果的最高位相同。OF(OverflowFlag)溢出标志位:当补码运算有溢出时,OF为1,否则为0。3个控制标志位用来控制CPU的操作,由指令进行置位和复位。它们是:2.18086/8088微处理器DF(DirectionFlag)方向标志位:用以指定字符串处理时的方向,当该位置“1”时,字符串以递减顺序处理,即地址以从高到低顺序递减;反之,则以递增顺序处理。IF(InterruptenableFlag)中断允许标志位:用来控制8086是否允许接收外部中断请求。若IF=1,8086能响应外部中断,反之则不响应外部中断。注意:IF的状态不影响非屏蔽中断请求(NMI)和CPU内部中断请求。TF(TrapFlag)跟踪标志位:是为调试程序而设定的陷阱控制位。当该位置“1”时,8086CPU处于单步状态,此时CPU每执行完一条指令就自动产生一次内部中断。当该位复位后,CPU恢复正常工作。2.18086/8088微处理器2.1.38086CPU引脚功能8086CPU具有40条引脚,采用双列直插式封装形式,如图2.5所示。为了减少芯片上的引脚数目,8086CPU采用了分时复用的地址/数据总线。为了适应各种使用场合,8086CPU可在两种模式下工作(最小模式和最大模式)。所谓最小模式,是指系统中只有一个8086CPU,在这种系统中,8086CPU直接产生所有的总线控制信号,系统所需的外加其他总线控制逻辑部件最少。所谓最大模式,是指系统中常含有两个或多个微处理器,其中一个为主处理器8086CPU,其他的处理器称为协处理器,它们是协助主处理器工作的。在最大模式工作时,控制信号是通过8288总线控制器提供的。因此,在不同方式下工作时,部分引脚(第24~31引脚)会具有不同的功能。如图2.5括号中为最大模式时的引脚名称。本节主要讨论最小模式下的引脚功能。2.18086/8088微处理器图2.58086引脚2.18086/8088微处理器1.地址/数据复用总线AD0~AD15分时复用的地址/数据总线,具有双向、三态功能。用于输出低16位地址A0~A15和输入/输出数据D0~D15。在总线周期的第一个时钟周期T1用来输出要访问的存储器单元或I/O的低16位地址A0~A15。而在总线周期的其他(T2~T3)时钟周期,对于读周期来说是处于悬浮(高阻)状态;对于写周期来说则是传送数据。在此顺便指出,8088CPU的地址线同8086CPU一样,内部数据总线也为16位,而外部数据总线宽度只有8位,8088CPU是一种准16位微处理器。2.18086/8088微处理器2.地址/状态复用总线A19/S6~A16/S3分时复用的地址/状态线,三态输出。在总线周期的第一个时钟周期T1用来输出访问存储器的20位物理地址的最高4位地址(A19~A16),与AD15~AD0一起构成访问存储器的20位物理地址。当CPU访问I/O端口时,A19~A16保持为“0”。而在其他时钟周期,则用来输出状态信息。其中:S6为0,用来指示8086CPU当前正与总线相连。S5状态用来指示中断允许标志位IF的当前设置:若IF=1,表明当前允许可屏蔽中断请求;若IF=0,则禁止可屏蔽中断请求。S4、S3组合起来用来指示CPU当前正在使用哪个段寄存器,S4、S3的代码组合与对应的状态如表2.1所示。2.18086/8088微处理器S4S3当前使用的段寄存器00当前正在使用ES01当前正在使用SS10当前正在使用CS(访问I/O端口时,不使用任何段寄存器)11当前正在使用DS表2.1S4、S3状态编码表2.18086/8088微处理器3.控制总线

(1)(BusHighEnable/Status):高8位数据总线允许/状态复用引脚。三态输出,低电平有效,在总线周期的第一个时钟周期T1用来表示总线高8位AD15~AD8上的数据有效。若=1,表示仅在数据总线AD7~AD0上传送数据。读/写存储器或I/O端口以及中断响应时,用作选体信号,与最低位地址码A0配合,表示当前总线使用情况如表2.2所示。S7用来输出状态信息,在当前的8086芯片设计中未被赋予定义,暂作备用。2.18086/8088微处理器A0总线使用情况0016位数据总线上进行字传送01高8位数据总线上进行字节传送(访问奇地址存储单元)10低8位数据总线上进行字节传送(访问偶地址存储单元)11无效表2.2和A0编码对数据访问的影响2.18086/8088微处理器(2)(Read):读信号,三态输出。当=0低电平有效时,表示当前CPU正在对存储器或I/O端口进行读操作。RD=0与M/信号高电平配合,表示读存储器操作;与M/信号低电平配合,表示读I/O端口操作。

(3)(Write):写信号,三态输出。当=0低电平有效时,表示当前CPU正在对存储器或I/O端口进行写操作。跟信号一样由M/信号区分对存储器或I/O端口的访问。2.18086/8088微处理器(4)M/(Memory/InputOuput):存储器或I/O端口选择控制信号,三态输出。M/=1,表示当前CPU正在访问存储器;M/=0,表示CPU当前正在访问I/O端口。一般在前一个总线周期的T4时钟周期,就使M/端产生有效电平,然后开始一个新的总线周期。在此新的总线周期中,M/一直保持有效电平,直至本总线周期的T4时钟周期为止。在DMA方式时,M/被悬空为高阻状态。2.18086/8088微处理器(5)READY:准备就绪信号,输入,高电平有效。READY=1时,表示CPU访问的存储器或I/O端口已准备好传送数据,马上可以进行读/写操作。若CPU在总线周期T3状态检测到READY信号为低电平,表示存储器或I/O设备尚未准备就绪,CPU自动插入一个或多个等待状态TW,直到READY信号变为高电平为止。2.18086/8088微处理器(6)INTR(InterruptRequest):可屏蔽中断请求信号,输入,电平触发,高电平有效。当INTR=1时,表示外设向CPU发出中断请求,CPU在每个指令周期的最后一个T状态去采样该信号,若INTR=1且IF=1时,则CPU就会在结束当前指令后去响应中断,转去执行中断服务程序。2.18086/8088微处理器(7)(InterruptAcknowledge):中断响应信号,输出,低电平有效。表示CPU响应了外设发来的信号。在中断响应周期的T2、T3、TW时钟周期内使引脚变为低电平,通知外设端口可向数据总线上放置中断类型号,以便获取相应中断服务程序的入口地址。2.18086/8088微处理器

(8)NMI(NO-MaskableInterrupt):不可屏蔽中断请求信号,输入,上升沿触发。此请求不受IF状态的影响,也不能用软件屏蔽,一旦该信号有效,就在现行指令结束后引起中断。

(9):测试信号输入,低电平有效。当CPU执行WAIT指令时,每隔5个时钟周期对进行一次测试,若测试到为高电平状态,则CPU处于空闲等待状态,直到低电平有效,CPU才结束等待状态继续执行后续指令。引脚信号用于多处理器系统中,实现8086CPU与协处理器间的同步协调功能。2.18086/8088微处理器(10)RESET:复位信号,输入,高电平有效。RESET信号至少要保持4个时钟周期。CPU检测到RESET为高电平信号后,停止进行操作,并将标志寄存器、段寄存器、指令指针IP和指令队列等复位到初始状态。CPU复位后,从FFFF0H单元开始读取指令。2.18086/8088微处理器(11)ALE(AddressLatchEnable):地址锁存允许信号,输出,高电平有效。由于8086CPUAD0~AD15是地址/数据复用的总线,CPU与内存、I/O电路交换信息时,先利用此总线传送地址信息,后传送数据信息。为此,在任何一个总线周期的T1时钟ALE端产生正脉冲,利用它的下降沿将地址信息锁存,达到地址信息与数据信息复用分时传送的目的2.18086/8088微处理器

(12)DT/(DataTransmit/Receive):数据发送/接收控制信号,三态输出。在最小模式系统中使用8286/8287作为数据总线收发器时,DT/信号用来控制8286/8287的数据传送方向。当DT/=1时,则进行数据发送,即完成写操作;当DT/=0时,则进行数据接收,即完成读操作。

(13)DEN(DataENable):数据允许信号,三态输出,低电平有效。在最小模式系统中,用作数据收发器8286/8287的选通控制信号。在DMA方式时,为悬空状态。2.18086/8088微处理器(14)HOLD(HoldRequest):总线请求信号,输入,高电平有效。通常我们把具有对总线控制能力的部件称为主控设备,显然CPU是一种主控设备。如果在一个总线上有两个主控设备时,它们对总线的控制就需要进行协调,即同一时间中只能由一个主控设备起作用。在较简单的系统中通常以CPU的控制为主,平时对总线的控制权总是在CPU的手上。当另一个主控设备需要使用总线(即获得总线控制权)时,就向CPU的HOLD引脚送出一个高电平的请求信号。2.18086/8088微处理器

(15)HLDA(HoldAcknowledge):总线请求响应信号,输出,高电平有效。HLDA输出高电平有效时,表示CPU已响应其他部件的总线请求,通知提出请求的设备可以使用总线。与此同时,CPU的有关引脚呈现高阻状态,从而让出系统总线,这种状态将一直延续到HOLD端的请求撤销,即输入电平降为低电平为止,CPU恢复对总线的控制权。

(16)MN/(Minimun/Maximun):工作方式选择信号,输入。MN/=1,表示CPU工作在最小方式系统;MN/=0,表示CPU工作在最大方式系统。2.18086/8088微处理器(17)CLK(Clock):主时钟信号,输入。CLK时钟输入端为微处理器提供基本的定时脉冲,通常与8284时钟发生器的时钟输出端CLK相连。时钟引脚CLK要求输入一个符合处理机芯片工作频率要求的时钟,这个时钟表最好具有33%的占空度,使处理器内获得一个最佳的工作定时。8086CPU可使用的时钟频率随芯片型号不同而异,8086为5MHz,8086-2为8MHz,8086-1为10MHz。2.18086/8088微处理器4.最大模式下的有关引脚功能下面对8086CPU工作在最大模式系统中几个重新定义的引脚作简要说明。

(1)(BusCycleStatus):总线周期状态信号,三态输出。在最大方式系统中,它用来作为总线控制器8288的输入,经译码后产生如表2.3所示的7个控制信号及状态线的组合情况。此外,最大模式时锁存地址所需的ALE,控制数据接收器用的和DT/信号也由8288提供。2.18086/8088微处理器状态CPU总线周期8288控制信号S2S1S0000中断响应001读I/O端口010写I/O端口、011暂停无100访问代码101读存储器110写存储器、111无效无表2.3S2、S1、S0编码的功能与8288控制信号表2.18086/8088微处理器(2) 总线请求信号输入/总线请求允许信号输出,双向、低电平有效。它可以用来协调8086CPU与外部处理机对局部总线的使用权,且总是与协处理机8087和I/O处理机8089的相应端/连接在一起。当某个外部处理机要占用总线时,就从/引脚向8086输出一个负脉冲,提出使用总线的申请。如果8086正好完成一个总线周期,就会让出总线控制权,并从同一条引脚向该处理机送出一个负脉冲,以示对方可以使用总线。该处理机用完总线后,再以一个负脉冲向8086CPU报告。两个信号分别在同一引线上传输,但方向相反,其中/优先级高。2.18086/8088微处理器(3):总线封锁信号三态输出,低电平有效。有效时,表示CPU不允许其他总线控制器占用总线。信号是由软件设置的,为了保证8086CPU在一条指令的执行中,总线使用权不会为其他主设备所打断。如果在某一条指令的前面加一个前缀,这条指令执行时,就会使CPU产生一个信号,直到这条指令结束为止,即它只在一条指令执行的周期内有效。2.18086/8088微处理器(4)QS1,QS0(InstructionQueueStatus):指令队列状态,输出。作为指令队列状态标志,当8086的EU在指令队列中取指令时,队列中的变化情况就以这两个输出位的状态编码表示出来,以便于外部其他处理机对8086内部指令队列进行跟踪。QS1、QS0的编码含义如表2.4所示。

5.电源线Vcc和地线GND8086只需单一的+5V电源,由Vcc端输入,GND是接地端。2.18086/8088微处理器QS1QS2指令队列状态00无操作01从队列中取指令第一字节10队列为空11从队列中取指令后续字节表2.4QS1、QS2编码含义2.18086/8088微处理器2.1.48086/8088CPU的存储器组织和I/O组织

1.存储组织及其寻址8086/8088CPU能寻址1MB的存储单元。在此存储空间中是以8位为1个字节顺序排序存放的。每一字节用惟一的1个地址码标识。地址码是1个不带符号的整数,其地址范围从0到220-1。但习惯使用十六进制表示,即00000H~0FFFFFH。将存储器空间按字节地址号顺序排列的方式称“字节编址”。尽管存储器是按字节编址的,但在实际操作时,一个变量可以是字节、字、双字。下面分别予以说明。2.18086/8088微处理器

1) 字节数据数据位数8位,对应的字节地址可以是偶地址(地址的最低位A0=0),也可以是奇地址(A0=1)。当存取此字节数据时,只需给出对应的实际地址即可。

2) 字数据它是将连续存放的两个字节数据构成1个16位的字数据。规定字的高8位字节存放在高地址,字的低8位字节存放在低地址。同时规定将低位字节的地址作为这个字的地址。通常,一个字数据总是位于偶数地址,即偶数地址对应低位字节,奇数地址对应高位字节,符合这种规则存放的字数据称为“规则字”。2.18086/8088微处理器

8086的有些指令仅用来访问(读/写)1个字节数据,该字节数据可能存放于偶地址单元,也可能存放于奇地址单元;而有些指令用来访问一个字(16位)的数据。16位的数据(字数据)总是存放在相邻的两个单元内,而且低位字节(低8位)总是存放在低地址的那个单元,并把此单元地址称为字的存放地址。显然,字地址可以是偶数,也可以是奇数。我们把存放在偶地址的字称为“规则字”。若字的地址是奇地址,则称这种排列的字为“非规则字”。8086CPU的BIU是这样设计的:若存取一个字节的数据,总是用一个总线周期来完成字节操作;若存取一个字,则根据此字是“规则字”还是“非规则字”分别需用一个或两个总线周期来完成此存取操作。2.18086/8088微处理器

3) 双字数据此数据要占用4个字节,用以存连续的两个字。通常此类数据用于地址指针,指示一个当前可段外寻址的某段数据。以指针的高位字存放该数据所在段的基地址,而低位字存放该数据所在段内的偏移量。在存放低位字或高位字时,高位字位于高地址,低位字位于低地址。例如,在00200H地址中存放一个双字数据,若它指示了某数所存放的逻辑地址,即段基址:偏移量=1122H:3344H,则表示该数据的存放地址是由00200H至00203H连续4个字节依次存放的内容为44H、33H、22H、11H。该数据实际的存放地址为11220H+3344H=14564H。2.18086/8088微处理器双字数据是以字为单位的,因此,它的地址也符合字数据的规定,即以最低位字节地址作为它的地址。如图2.6所示为8086系统的存储器结构。1MB字节存储器分为两个库,每个库的容量都是512KB。其中和数据总线D15~D8相连的库全部由奇地址单元组成,称为高位字节库或奇地址库,利用信号低电平作为此库的选择信号;另一个库和数据总线D7~D0相连接,由偶地址单元组成,称为低位字节库或偶地址库,利用地址线A0=0(低电平)作为此库的选择信号。所以只有A19~A119个地址线用来作为两个库内的存储单元的寻址信号。2.18086/8088微处理器图2.68086系统存储器结构2.18086/8088微处理器当在偶数地址中存取一个数据字节时,CPU从低位库中经数据线AD7~AD0存取数据。由于被寻址的是偶数地址,所以地址位A0=0,由于A0是低电平所以才能在低位库中实现数据的存取。而指令中给出的是在偶地址中存取一个字节,信号应为高电平,故不能从高位库中读出数据。相反,当在奇数地址中存取一个字节数据时,应经数据线的高8位(AD15~AD8)传送。此时,指令应指出是从高位地址(奇数地址)寻址,信号为低电平有效状态,故高位库能被选中,即能对高位库中的存储单元进行存取操作。由于是高位地址寻址,故A0=1,低位库存储单元不会被选中,8086CPU也可以一次在两个库中同时各存取1个字节,完成1个字的存取操作。2.18086/8088微处理器规则字的存取操作可以在一个总线周期中完成。由于地址线A19~A1是同时连接在两个库上的,只要和A0信号同时有效,就可以一次实现在两个库中对1个字(高低两字节)完成存取操作。对字的存取操作所需的及A0信号是由字操作指令给出的。对非规则字的存取操作就需要两个总线周期才能完成:在第一个总线周期中,CPU存取数据(低位字节)时是在高位库中,此时A0=1,=0。然后再将存储器地址加1,使A0=0,选中低位库。在第二个总线周期中,存取数据(高位字节)时是在低位库中,此时A0=0,=1。2.18086/8088微处理器对于8088CPU,由于数据总线是8位,无论是字,还是字节数据的存取操作,也不管是“规则字”还是“非规则字”,每个总线周期只能完成1个字节的数据存取操作。对于字数据的存取操作则由两个连续的总线周期组成,并由CPU自动完成。但应指出8088CPU的20位地址线A0~A19中的A0也应和其他地址线一起参加寻址操作。2.18086/8088微处理器2.存储器的分段结构和物理地址的形成8086CPU有20条地址线,能直接访问1MB(220)的存储空间,其物理地址范围是00000H~0FFFFFH。

1) 存储器的段结构前面提到,8086CPU为了寻址1MB的存储空间,采用了分段的概念,即将1MB的存储空间分成若干个逻辑段,而4个当前逻辑的基地址设置在CPU内的4个寄存器中,即代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES。逻辑段和段之间可以是连续的、分开的、部分重叠或完全重叠的。一个程序可使用一个逻辑段或多个逻辑段。2.18086/8088微处理器2) 物理地址的形成物理地址是指CPU和存储器进行数据交换时实际所使用的地址,而逻辑地址是程序使用的地址。它由两部分组成:段基值(段起始地址高16位)和偏移地址。前者是由段寄存器给出;后者是指存储单元所在的位置离段起始地址的偏移距离。当CPU寻址某个存储单元时,先将段寄存器的内容左移4位,然后加上指令中提供的16位偏移地址而形成20位物理地址。在取指令时,CPU自动选择代码段寄存器CS,左移4位后,加上指令提供的16位偏移地址,计算出要取的指令的物理地址。堆栈操作时,CPU自动选择堆栈段寄存器SS,将其内容左移4位后,加上指令提供的16位偏移地址,计算出栈顶单元的物理地址。每当存取操作数时,CPU会自动选择数据段寄存器(或附加段寄存器ES),将段基值左移4位后加上16位偏移地址,得到操作数在内存的物理地址。2.18086/8088微处理器3.8086/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位上的设备数目最好相等。2.18086/8088微处理器

当一个I/O设备连接在数据地址总线低8位(AD7~AD0)上的时候,这个I/O设备所包括的所有端口地址都将是偶数地址(即A0=0);若一个I/O设备是接在数据地址总线的高8位(AD15~AD8)时,那么此设备包含的所有端口地址都是奇数地址(即A0=1)。如果某种特殊I/O设备既可使用偶数地址又可使用奇数地址时,那么A0就不能作为这个I/O设备内部端口的地址选择线使用,此时A0和这两个信号必须结合起来作为I/O设备选择线,用以防止对I/O设备的错误操作。2.18086/8088微处理器8086CPU对I/O设备的读/写操作与对存储器的读/写操作相似。CPU的读/写命令、对存储器和I/O设备是公用的。如果存储器和I/O设备所占用的地址空间是相互重叠的,那么可以通过M/信号来区分是对存储器读/写操作还是对I/O读/写操作。如果系统中存储器和I/O设备所占用的地址空间没有重叠,或者当I/O设备与存储器放在一起统一编址时,可以不受M/信号的控制。这样就可以用对存储器的访问指令来实现对I/O端口的读/写,由于存储器的读/写指令的寻址方式有很多,功能很强,故使用起来较灵活。2.18086/8088微处理器2.1.5最小方式和最大方式下的基本配置当8086/8088CPU的引脚MN/接+5V电源时,8086/8088CPU工作方式为最小方式。如图2.7所示为一种典型的最小方式系统的基本配置。它除了8086/8088CPU外,还包括8284A时钟发生器,3片8282及两片8286总线收发器。2.18086/8088微处理器图2.78086最小方式系统的基本配置2.18086/8088微处理器由于要锁存20位地址信息及信号,故需要3片8282地址锁存器。8282的选通端(STB)同8086/8088CPU的ALE引脚相连。在不使用DMA(存储器直接存取)控制器的系统中,输出允许引脚接地,否则将同DMA控制器8237的地址允许输出端相连。当DMA控制器占有总线控制权时,输出信号为高电平,因而锁存器输出为高阻状态。当系统具有较多的存储器芯片和较多的I/O接口电路芯片,那么系统的数据线上就需使用8286总线收发器。而在小型的单板系统中也可不使用8286总线收发器。2.18086/8088微处理器对于8086系统,需要2片8286;对于8088系统,则只需1片8286。8286的T端同8086/8088CPU的DT/引脚相连,以控制传送方向。8286的端与8086/8088的引脚相连,使得只有在CPU访问存储器或I/O端口时,才能允许数据通过8286,否则8286在两个方向都处于高阻状态。2.18086/8088微处理器在最小方式下,总线控制信号DT/、、ALE、M/以及读/写控制信号、,中断响应信号都由CPU直接产生。在这种方式下,可以控制总线的其他总线主控者(如8237DMA控制器)可通过HOLD线向CPU请求使用系统总线。当CPU响应HOLD请求时,发出响应信号HLDA(高电平),并使上述总线控制信号、读/写信号引脚处于高阻状态,这时8286的A0~A7,B0~B7和8282的输出均处于高阻状态,即CPU不再控制总线(交出总线控制权),这种状态将持续到HOLD线变为无效状态(低电平)时为止。8284A为CPU提供的时钟信号和经过同步的就绪信号READY和系统复位信号RESET。2.18086/8088微处理器当8086/8088CPU的MN/引脚接地时,为最大方式工作情况。如图2.8所示为8086/8088最大方式系统的基本配置。图2.88086最大方式系统的基本配置2.18086/8088微处理器最大方式与最小方式系统的主要区别是需要增加用于转换总线控制信号的总线控制器8288。8288将CPU的状态信号转换成总线命令及控制信号以及控制8282锁存器、8286总线收发器以及优先级中断控制器8259A的总线控制信号。有关8259A的作用及工作原理将在以后章节中讨论。值得一提的是DEN信号和8086的含义相同,但控制极性相反。2.18086/8088微处理器最小方式下的HOLD和HLDA引脚在最大方式下成为

0和

1信号。这些引脚通常同协处理器8087或I/O协处理器8089的相应引脚相连。用于在它们之间传送总线请求与授予信号,其功能和HOLD及HLDA相同。2.18086/8088微处理器图2.8中的8282的输出允许端接地,8288的引脚也接地,表示此时系统为单一的主控制者(只有一个主CPU8086/8088)。如果系统中有两个以上的CPU的多处理器系统,则必须再配上8289总线仲裁器,这时8289的输出信号将同8288的AEN端及8282的引脚相连。只有获得总线控制器的CPU,才允许该CPU的地址信息通过8282、8288产生相应的总线命令和控制信号,实现对总线上的存储器或I/O器件的读/写操作。这时8289的输出为有效状态(低电平)。2.18086/8088微处理器2.1.68086CPU内部时序8086CPU的操作是在单向时钟脉冲CLK的统一控制下进行的。若8086CPU的时钟频率为5MHz,故时钟周期(或T状态)为200ns。8086CPU执行一条指令需要的时间,称为一个指令周期。一个指令周期是由若干个总线周期(或机器周期)所组成。一个总线周期又是由若干个时钟周期所组成。一个总线周期是指CPU通过总线与外部逻辑(存储器或外部设备)进行一次访问所需要的时间,8086的基本总线周期由4个时钟周期(T1~T4)组成。典型的总线周期有存储器读周期、存储器写周期、I/O设备的输入周期、I/O设备的输出周期、中断响应周期、空闲周期等。在下面讨论总线周期时,假定8086工作在最小方式系统(若8086工作在最大方式系统,控制信号和时序安排有所不同)。2.18086/8088微处理器

1.读周期时序8086读总线周期的时序如图2.9所示。图中画了4个T周期即1个总线周期,且每个T周期都是一个占空度约33%的时钟周期,全部时序图都以这个时钟作为基准。2.18086/8088微处理器图2.9存储器读总线周期时序2.18086/8088微处理器在T1周期时,A19/S6~A16/S3和AD15~AD0构成20位地址,输出变得有效,且ALE有效,在T1状态的后半部,ALE信号变为低电平,利用ALE的下降沿将20位地址信息锁入8282地址锁存器中。M/与DT/则在一个总线周期结束前就变得有效,前者决定地址是对存储器还是I/O寻址,而后者是当使用数据收发器时用来控制数据传输方向的。若DT/端输出为低电平,表示本总线周期为读周期,即数据收发器是从数据总线上接收数据。另外,

/S7端输出低电平,用它作为奇数存储器的选择信号。

2.18086/8088微处理器在T2周期时,/S7和A19/S6~A16/S3开始输出状态信息S7~S3,直到读周期结束,其中S7未赋予任何实际意义。而AD0~AD15总线地址信息也消失,处于悬浮高阻状态,使CPU有足够的时间将AD0~AD15总线由输出地址方式变为输入数据方式。在T2中央时刻,变成有效,使数据能够从总线通过数据收发器8286,同时,CPU还应该发出读信号,将总线上的数据读入到CPU。2.18086/8088微处理器

在T3周期时,CPU继续提供状态信息和数据,并且继续维持、M/及DT/、信号为有效电平。若存储器或I/O接口存取数据较快,CPU在T3时刻检测READY引脚为高电平,则在T3与T4时钟状态间不需要插入等待状态Tw。若存储器或I/O接口存取数据较慢,T3时钟检测READY引脚为低电平,则需要在T3和T4间插入一个或几个Tw状态,来解决CPU与存储器或外设间的速度匹配问题。在每个Tw的中间也进行同样的检测READY引脚,一直到READY引脚电平变为高电平才进入T4周期。2.18086/8088微处理器在T4周期时,T4状态和前一个状态交界的下降沿处,CPU将数据总线上出现的稳定数据送入CPU中。总线周期在T4状态中结束,故其他各控制信号和状态信号也进入无效状态。也变为无效,从而关闭了总线收发器8286。下一个总线周期可能在T4状态结束后立即开始,也可能在T4结束后出现若干个空闲状态TI,这取决于BIU何时需要进入下一个总线周期。2.18086/8088微处理器

2.写周期时序写周期由4个状态周期组成,如图2.10所示。它与读周期很类似,首先,由M/信号来区分是访问存储器还是访问I/O外设,若为高电平表示进行存储器操作,为低电平表示进行I/O操作。而DT/应为高电平,表示本总线周期为写周期。其次是写入单元的地址以及ALE信号有效,但写入存储器的数据是在T2状态中放至数据线AD15~AD0上的。原因是CPU不需要将AD0~AD15总线由输出方式转变为输入方式的过程,信号也在T2状态有效。8086在T4状态后使控制信号变为无效,表示对存储器的写入过程已经完成。若有的存储器或外设来不及在指定的时间内完成写操作,可以利用READY信号使CPU插入Tw状态,以保证时间上的配合。具体Tw状态的写入时序与Tw状态的读出时序类似,不再赘述。2.18086/8088微处理器图2.10存储器写周期时序2.18086/8088微处理器3.中断响应周期当外部中断源通过INTR引线向CPU发出为中断请求信号时,如果中断标志位IF=1(即CPU处在开中断),则CPU在完成当前指令操作之后,响应外部中断源的中断请求,进入中断响应周期。中断响应周期时序如图2.11所示。中断响应周期包括两个总线周期,在每个总线周期中都从端输出一个负脉冲,其宽度是从T2状态开始持续到T4状态的开始。在第一个中断响应周期中,负脉冲用来通知中断源,CPU准备响应中断,中断源应准备好中断类型号,并且使AD7~AD0浮空。在第二个中断响应周期的负脉冲期间,被响应的外设(或接口芯片)应立即把中断源的中断类型号送到数据总线的低8位AD7~AD0上。CPU把它读入后,则可从中断向量表中找到该设备的中断服务程序的入口地址,从而转入中断服务。2.18086/8088微处理器图2.11中断响应周期时序2.18086/8088微处理器应注意,8086要求中断请求信号是一个高电平信号,而且必须维持2个时钟周期的宽度。否则,在CPU执行完一条指令后,若BIU正在执行总线周期,则会使中断请求得不到响应而去执行其他的总线周期。另外,8086CPU还有软件中断和非屏蔽NMI中断,CPU响应这两种的总线时序和CPU响应可屏蔽中断的总线时序基本相同,仅有一点差别,那就是响应该两种中断时,并不从外部设备读取中断类型号。2.18086/8088微处理器4.I/O总线周期8086与外设通信,即从外设输入数据或把数据输出到外设的时序,与CPU同存储器通信的时序几乎完全相同,要注意其中几个具体信号的差别:一是M/线在规定有效的4个T周期中将呈低电平;另外,由于I/O的寻址空间为64KB,所以高四位地址线输出为“0”。同时在处理字节与字读写时,也与存储器一样,要利用和A0的状态组合。最后还要指出,I/O设备对数据的读写有时比较慢,可能要在总线周期中加入适量的Tw周期,以满足这种要求。

5.空闲周期(IdleCycles)8086只有在CPU与存储器或外设传送指令或操作数时,才执行上述的有关总线周期。若CPU不执行总线周期,则总线接口执行空闲周期(即一系列的TI状态)。

2.280386微处理器2.2.180386CPU的内部结构

1.工作模式和特点80386有三种工作模式:实模式(realaddressmode)、保护模式(protectedvirtualaddressmode)和虚拟8086模式(virtual8086mode)。

1) 实模式(实地址模式)实模式下的工作原理和8086相同。寻址空间为1MB,段最大为64KB,逻辑地址就是物理地址,无须转换。实模式对8086的增强表现在可以处理32位数据,如进行32位的寄存器运算及32位的数据传送。2.280386微处理器

2) 保护模式在保护模式下,80386可以访问232B(即4GB)物理空间。段的长度在启动页功能时为232B,不启动页功能时为220B。在这种模式下,可以引入虚拟存储器的概念,以扩大编程的地址空间。该模式具有保护功能。

3) 虚拟8086模式此模式既有保护功能又能执行8086代码。采用和保护模式相同的工作原理,但在程序中指定的逻辑地址可以和8086一样进行解释。在这种模式下,运行程序就像在8086CPU上运行一样。2.280386微处理器

和8086相比,80386有以下4个主要特点:

(1) 支持多任务。80386能同时运行2个或2个以上的程序。用1条指令可以进行任务转换,转换时间为17µs(机器时钟为16MHz)。

(2) 支持存储器的段式管理和页式管理,易于实现虚拟存储系统。

(3) 具有保护功能,包括存储器保护、任务特权级保护和任务之间的保护。80386将任务分成4个等级,称为特权级,分别是0、1、2、3级,其中0级最高,3级最低。一般0级用于操作系统,3级用于应用程序,而1、2级保留或用于对操作系统的扩充。

(4) 硬件支持调试功能。80386内部含有调试寄存器,调试起来比较方便。

(5) 采用了流水线技术。这一技术大大加快了指令重叠执行速度,加大了信息流量。80386在16MHz时钟下,每秒可执行3×106~4×106条指令,总线接口的信息流量可达每秒32MB。2.280386微处理器2.80386CPU的内部结构

80386CPU主要由下面6个部件组成:

(1) 总线接口部件(BIU)。

(2) 指令预取部件(CPU,CodePrefetchUnit)。

(3) 指令译码部件(IDU)。

(4) 执行部件(EU),它可进一步分为控制部件、保护测试部件和数据处理部件三部分。

(5) 段管理部件(SU)。

(6) 页管理部件(PU)。为了分析方便,图2.12用虚线把它分成总线接口(BIU)、中央处理部件(CPU)和存储管理部件(MMU)三大部分。2.280386微处理器图2.1280386的内部结构图2.280386微处理器指令预取部件将存储器中的指令按顺序取到长度为16B的预取指令队列中,以便在CPU执行当前指令时,指令译码部件对下一条指令进行译码。只要指令队列向指令译码部件输送一条指令,从而使指令队列有部分空字节,指令预取部件就会向总线接口部件发出总线请求,如总线接口部件此时处于空闲状态,则会响应此请求,从存储器取指令填充指令预取队列。指令译码部件中除了指令译码器外,还有译码指令队列,此队列能容纳3条译好码的指令。只要译码指令队列有剩余空间,译码部件就会从指令预取队列取下一条指令进行译码。2.280386微处理器在Intel80386中,为了加快CPU的速度,采用指令重叠执行技术。具体讲,就是将一条访问存储器的指令和前一条指令的执行重叠起来,使两条指令并行执行,指令预取队列和译码指令队列为这种功能的实现提供了前提。执行部件包括运算ALU、8个32位的通用寄存器和1个64位的多位移位器加法器,它们共同执行各种数据处理和运算。此外,执行部件中还包括ALU控制部分和保护测试部分,前者实现有效地址的计算、乘除法的加速等功能,后者检验指令执行中是否符合涉及的存储器分段规则。2.280386微处理器80386系统中允许使用虚拟存储器。所谓虚拟存储器就是系统中有一个较快的、容量比较小的内部主存储器,还有一个速度较慢但容量很大的外部存储器通过存储管理机制,使后者和前者有机地、灵活地结合在一起,这样从程序员的角度看,系统中似乎有一个容量非常大的、速度也相当快的主存储器,但它并不是真正的物理上的主存,故称为虚拟存储器。80386的虚拟存储器容量可高达64TB,这样,就可以运行要求存储器容量比实际主存储容量大得多的程序。2.280386微处理器在Intel80386系统中,存储器仍按段划分,但每段的容量可变,最大可达4GB。每个段又划分为多个页面,一个页固定为4KB。分页的作用是便于实现虚拟存储管理,通常在内存和磁盘进行映像时,都以页为单位把CPU的地址空间映像到磁盘。MMU的功能就是实现存储器的管理,它由分段部件SU和分页部件PU组成。前者管理面向程序员的逻辑地址空间,并且将逻辑地址转换为线性地址;后者管理物理地址,将分段部件或指令译码部件产生的线性地址转换为物理地址。有了物理地址后,总线接口部件就可以据此进行存储器访问和输入输出操作。2.280386微处理器总线接口部件BIU是80386和外界之间的高速接口。在80386内部,指令预取部件从存储器取指令时,执行部件在执行指令过程中访问存储器和外设以读写数据时,都会发出总线周期请求,总线接口部件会根据优先级对这些请求进行仲裁,从而有条不紊地服务于多个请求,并产生相应总线操作所需要的信号,包括地址信号、读写控制信号等。此外,总线接口部件也实现80386和协处理器之间的协调控制。2.280386微处理器2.2.280386CPU的寄存器结构

1.通用寄存器80386有8个32位的通用寄存器,它们都是8086中16位通用寄存器的扩展,故命名为EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP,用来存放数据或地址。如图2.13所示。为了和8086兼容,每个通用寄存器的低16位可以独立存取,此时,它们的名称分别为AX、BX、CX、DX、SI、DI、BP、SP。此外,为了和8位CPU兼容,前4个寄存器的低8位和高8位也可独立存取,分别称为AL、BL、CL、DL和AH、BH、CH、DH。2.280386微处理器图2.1380386的通用寄存器2.280386微处理器2.指令指针寄存器和标志寄存器32位的指令指针寄存器EIP用来存放下一条要执行的指令的地址偏移量,寻址范围为4GB。为了和8086兼容,EIP的低16位可作为独立指针,称为IP。32位的标志寄存EFLAGS是在8086标志寄存器基础上扩展的,如图2.14所示。其中,CF、PF、AF、ZF、SF、TF、IF、DF和OF这9个标志的含义、作用和8086中的一样。2.280386微处理器图2.1480386的标志寄存器2.280386微处理器其中几个标志是新扩展的,含义如下。(1) IOPL:I/O特权级别标志,仅用于保护方式,它用来限制I/O指令的作用特权级。(2) NT:任务嵌套标志,指出当前执行的任务是否嵌套于另一任务中。(3) RF:恢复标志,它用于调试失败后,强迫程序恢复执行,当指令顺利执行时,RF自动清0。(4) VM:虚拟8086方式标志,当VM为1时,使80386工作于虚拟8086方式,在保护方式下,可以通过指令使VM置1,进入虚拟8086方式。上述标志中,CF、PF、AF、ZF、SF、OF、NT为状态标志,DF、IF、TF、IOPL为控制标志,VM、RF为系统方式标志。2.280386微处理器3.段寄存器和段描述符寄存器和8086类似,80386中存储单元的地址也是由段基地址和段内偏移量构成的。为此,80386内部设置了6个16位的段寄存CS、SS、DS、ES、FS、GS。不过,为了得到更大的存储空间,80386采用了比8086更加巧妙的办法来得到段基址和段内偏移量。在这里,段寄存器作为进入存储器中的一张表的变址寄存器根据段寄存器的值可以从这表中找到一个项。这张表是由操作系统建立的,称为描述符表,表内每一项称为描述符,每个描述符对应一个段。描述符中含有对应段的起始地址即段基地址,另外还含有一些其他信息。段寄存器如图2.15所示。2.280386微处理器图2.1580386的段寄存器2.280386微处理器

在80386微机系统中编程,必须在存储器中建立4种系统表:GDT(GlobalDescriptorTable,全局描述符表),1个;LDT(LocalDescriptorTable,局部描述符表),若干个;IDT(InterruptDescriptorTable,中断描述符表),1个;TSS(TaskStateSegment,任务状态段),若干个。在全局描述符表GDT和局部描述符表LDT中,存有若干种描述符。其中一种叫做段描述符,由8个字节组成,用来描述段的基地址、大小和属性。GDT和LDT最大可达64KB,因此最多可存放64K÷8=8192个描述符。2.280386微处理器段寄存器的段选择字段是程序可访问的,其第二位称为表指示器(TI),用来指示选择GDT还是LDT(TI=0表示选择GDT,TI=1表示选择LDT)。段选择器的高13位称为索引号,用来指示段描述符在描述符表中的位置。当用指令将一个16位的值赋给段选择器时,CPU将其索引号部分所对应的段描述符自动加载到描述符寄存器中。每个段描述符由3个部分组成:基地址字段用来描述所对应的段在物理存储器中的起始地址;边界字段用来描述所对应段的大小;属性字段用来描述所对应的段的属性。段选择器和描述符寄存器的功能如图2.16所示。2.280386微处理器图2.16段选择器和描述符寄存器的功能2.280386微处理器4.控制寄存器80386内部有3个32位的控制寄存器CR0、CR2和CR3,用来保存机器的各种全局性状态,这些状态影响系统所有任务的运行。它们主要是供操作系统使用的,因此操作系统设计人员需要熟悉这些寄存器。CR0的低15位称为机器状态字MSW(MachineStatusWord)。如图2.17所示是CR0的结构。CR1是未定义的控制寄存器。CR2和CR3实际上是两个专用于存储管理的地址寄存器。CR2用来放故障地址,称为页面故障线性地址寄存器。CR3用来放一个表的起始地址,称为页组目录表基址寄存器。2.280386微处理器图2.1780386的控制寄存器CR02.28

温馨提示

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

评论

0/150

提交评论