第二章(8086微处理器)2008.ppt_第1页
第二章(8086微处理器)2008.ppt_第2页
第二章(8086微处理器)2008.ppt_第3页
第二章(8086微处理器)2008.ppt_第4页
第二章(8086微处理器)2008.ppt_第5页
已阅读5页,还剩169页未读 继续免费阅读

下载本文档

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

文档简介

8086计算机系统组成,微型计算机系统的硬件,控制总线CB,数据总线DB,地址总线AB,系统总线形成,CPU,I/O设备,I/O接口,主存,系统总线BUS,外设,主机,主存也称为内存。,1.总线,总线是将计算机微处理器与内存芯片以及与之通信的设备连接起来的硬件通道,是传递信息的一组公用导线,是传送信息的公共通道。微型计算机是采用总线结构连接系统功能部件。连接CPU,存储器,I/O接口各个部件以同一形式挂在总线上,结构简单,扩展容易。,总线的信号分为三组:地址总线(AB):传送地址信息数据总线(DB):传送数据信息控制总线(CB):传送控制信息,地址总线(AB):单向的输出:将要访问的内存单元或I/O端口的地址地址线的根数决定了系统直接寻址的存储器的最大范围Eg.16条地址线(A15A0),寻址范围:地址表示为:,21665535,0000HFFFFH,数据总线(DB):双向的CPU读操作时,外部数据通过数据总线送往CPUCPU写操作时,CPU数据通过数据总线送往外部数据线的根数决定了一次传送数据的位数Eg.Intel4004、intel8080、intel8086、intel386、intelitanium,控制总线(CB):(单向/双向)协调系统中各个部件的操作,有输出控制、输入状态等信号控制总线决定了系统总线的特点,例如功能、适应性等,比特b(二进制1位)字节B(二进制8位)字Word(二进制16位)1KB210B=1024B1MB220B=210KB1GB230B=210MB,2.存储容量的表达,位编号为便于描述,对字节,字和双字中的各位进行编号。从低位开始,从右到左依次为0、1、2,3.微型计算机的常用术语,位和字节字长主频MIPS微处理器的生产工艺微处理器的集成度,位和字节,位(bit)是计算机所能表示的最小最基本的数据单位,它指的是取值只能为0或1的一个二进制数值位。位作为单位时记作b。字节(byte)由8个位二进制位组成,通常用作计算存储容量的单位。字节作为单位时记作B。K是kelo的缩写,1K=1024;M是mega的缩写,1M=1024K;G是Giga的缩写,1G=1024M;T是tera的缩写,1T=1024G。,字长,字长是微处理器一次可以直接处理的二进制数码的位数,它通常取决于微处理器内部通用寄存器的位数和数据总线的宽度。微处理器的字长有4位、8位、16位和32位等等。,主频,主频也叫时钟频率,用来表示微处理器的运行速度,主频越高表明微处理器运行越快,其单位是MHz。早期微处理器的主频与外部总线的频率相同,从80486DX2开始,主频=外部总线频率倍频系数外部总线频率通常简称为外频,它的单位也是MHz,外频越高说明微处理器与系统内存数据交换的速度越快,因而微型计算机的运行速度也越快。倍频系数是CPU主频与外频之间的相对比例系数。通过提高外频或倍频系数,可以使微处理器工作在比标称主频更高的时钟频率上,这就是所谓的超频。,MIPS,MIPS是MillionsofInstructionPerSecond的缩写,用来表示微处理器的性能,意思是每秒钟能执行多少百万条指令。由于执行不同类型的指令所需时间长度不同,所以MIPS通常是根据不同指令出现的频度乘上不同的系数求得的统计平均值。,微处理器的生产工艺,微处理器的生产工艺指在硅材料上生产微处理器时内部各元器件间连接线的宽度,一般以m为单位,数值越小,生产工艺越先进微处理器的功耗和发热量越小。目前微处理器的生产工艺已经达到0.13m。,微处理器的集成度,微处理器的集成度指微处理器芯片上集成的晶体管的密度。最早Intel4004的集成度为2250个晶体管,目前PentiumIV的集成度已经达到4200万个晶体管以上。,4.CPU的性能指标,字长是指CPU能同时处理的数据位数,也称为数据宽度。字长越长,计算机能力越高,速度越快,但工艺越复杂。主频是CPU的时钟频率,这和CPU的运算速度密切相关,主频越高,运算速度越快。,摩尔定律,芯片的容量每18-24个月增加一倍,8086计算机系统组成,8086CPU的结构8086CPU的存储器组织和I/O编址8086CPU引脚信号和工作模式8086CPU的操作和时序,第二章8086微处理器,8086CPU内部结构8086计算机系统指令操作过程8086CPU的寄存器结构,一、8086的编程结构,8086微处理器内部结构,8086的内部结构从功能分成两个单元1.总线接口单元BIU管理8086与系统总线的接口,负责CPU对内存和外设传送数据;2.执行单元EU负责指令的译码、执行和数据的运算。两个单元相互独立,分别完成各自操作。两个单元可以并行执行,实现指令取指和执行的流水线操作。,取指令1,执行指令1,取指令2,执行指令2,取指令1,执行指令1,取指令2,执行指令2,取指令3,执行指令3,t0,t1,t2,t3,t4,t,非流水线操作8085,流水线操作8086,在t0t4时间间隔中,8085执行了2条指令。在t0t4时间间隔中,理想情况下,8086可执行3条指令。,总线接口部件(BIU)是8086CPU与存储器,和I/O设备交换数据的接口,它提供了16位双向数据总线和20位地址总线,完成所有的外部操作。BIU具有下列功能:地址形成、取指令、指令队列、读/写操作数和总线控制。主要有下列几部分组成:16位段地址寄存器,包括:CS、DS、SS、ES。,1.总线接口部分BIU,16位指针寄存器IP:存放下一条要执行指令的偏移地址;20位地址加法器:将16位逻辑地址变成内存读/写所需要的20位物理地址,实际上完成地址加法操作;6字节指令队列:预放6字节的指令代码;总线控制电路:发出总线控制信号。,2.指令执行部件EU,执行部件(EU):从BIU的指令队列中取指令,指令译码,向EU各部件发出控制命令完成指令功能,它由以下几个部分组成:算术逻辑运算单元ALU:完成8位或16位的二进制运算,16位暂存器可暂存参加运算的操作数;,2.指令执行部件EU,标志寄存器PSW:存入ALU运算结果特征;通用寄存器组:有AX,BX,CX,DX,SP,BP,SI,DI8个寄存器组成,具体功能后面介绍;6字节指令队列:取指令控制和时序控制部分。,BIU的操作原则,BIU中的指令队列有2个或2个以上字节为空时,BIU自动启动总线周期,从存储单元取出指令。填充指令队列。直至将指令队列填满,BIU才进入空闲状态。当BIU接到EU申请总线的请求,若BIU正忙(正在执行取指令的总线周期),则必须等待BIU执行完当前的总线周期,方能响应EU请求;若BIU空闲,则立即执行EU申请总线的请求。,EU执行转移、调用和返回指令时,若下一条指令不在指令队列中,则队列中的指令被自动清除,BIU根据转移、调用和返回指令指示的目标地址重新取出指令并填充指令队列。,EU的操作原则,EU每执行完一条指令,从BIU指令队列的队首取指令。系统初始化后,指令队列为空,EU需要等待BIU从内存取指填充指令队列。EU从指令队列取得指令后,译码并执行指令。若该指令需要取操作数或存操作结果,也就是说需要访问存储器或者I/O时,EU向BIU发出访问总线的请求。,8086的指令流水线,指令的执行过程:,任何一条指令都是有操作码和操作数组成:例如:MOVAX,2000H;B80020,8086的指令执行过程,首先由代码段寄存器CS中16位段基地址加上指令指针寄存器IP中16位偏移地址,在地址加法器内形成20位物理地址,该20位的物理地址直接送往地址总线,然后通过总线控制电路发出读内存信号RD,启动内存,按给定的地址从存储器中取出指令,送到指令队列中等待执行;,8086的指令执行过程,BIU的指令队列可存储6字节指令代码,它是先进先出的队列寄存器,允许预存6字节指令代码,当指令队列中有2个或2个以上字节为空时,BIU自动启动总线周期,从存储单元取出指令。填充指令队列。直至将指令队列填满,BIU才进入空闲状态;,8086的指令执行过程,EU从BIU的指令队列中取走指令,经指令译码后,向BIU申请从内存读写操作数,此时EU需将操作数的偏移地址通过16位数据总线送给BIU,BIU将通过地址加法器将当前数据段寄存器DS中16位段基地址和该16位的偏移地址形成20位的物理地址,申请访问该20位的物理地址所对应的内存操作单元,取得操作数后送给EU,EU根据指令要求向EU内部各部分发出控制命令来执行指令,最后由BIU将运算结果读出。,已知DS3000H,CS1000H,(32000H)10H,(32001H)20H,下面用动画形式演示如下指令的执行过程1000:100MOVAL,2000H;A000201000:103ADDAL,02H;04021000:105HLT;F4,8086计算机系统指令操作过程,返回,8088的指令执行过程,8086CPU的寄存器结构,通用寄存器组(8个)段寄存器(4个)指令指针寄存器IP(1个)标志寄存器FR(1个),一、通用寄存器组,主要功能:保存CPU分析和执行时产生的中间结果访问内存速度远远低于CPU的运算速度通用寄存器组可分为三组:数据寄存器AX、BX、CX和DX,可用来存放16位或8位数据;变址寄存器SI和DI,只能16位一起使用;指针寄存器BP和SP,只能16位一起使用。,1.数据寄存器,AX称为累加器(Accumulator)使用频度最高。用于算术、逻辑运算以及与外设传送信息等;BX称为基址寄存器(BaseaddressRegister)当计算内存地址时,常用做存放内存的逻辑地址;CX称为计数器(Counter)作为循环和串操作等指令中的隐含计数器;DX称为数据寄存器(Dataregister)常用来存放双字数据的高16位,或当间接寻址时存放外设端口地址。,2变址寄存器,16位变址寄存器SI和DI常用于存储器变址寻址方式时提供地址SI是源地址寄存器(SourceIndex)DI是目的地址寄存器(DestinationIndex)在串操作类指令中,SI、DI还有较特殊的用法,现在不必完全理解,以后会详细展开,3指针寄存器,指针寄存器用于寻址内存堆栈内的数据SP为堆栈指针寄存器(StackPointer),指示堆栈段栈顶的位置(偏移地址)BP为基址指针寄存器(BasePointer),表示数据在堆栈段中的基地址SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址,堆栈(Stack)是主存中一个特殊的区域,采用“先进后出”或“后进先出”存取操作方式、而不是随机存取方式。用8088/8086形成的微机系统中,堆栈区域被称为堆栈段,8086CPU总线接口设有4个16位段寄存器,分别为代码段寄存器CS,数据段寄存器DS,附加段寄存器ES和堆栈段寄存器SS。,二、段寄存器组,8088/8086有4个16位段寄存器CS(代码段)指明代码段的起始地址,存放正在运行的程序段地址SS(堆栈段)指明堆栈段的起始地址,存放堆栈栈顶地址用于堆栈操作,DS(数据段)指明数据段的起始地址,存放正在运行的程序中所用数据段地址(指向源操作数所在段)ES(附加段)指明附加段的起始地址(指向目标操作数所在数据段)每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途。,IP的内容由BIU修改,始终指向下一条要取入指令队列的指令的偏移地址。特殊情况:程序跳转,三、指令指针寄存器IP,指令指针寄存器IP(InstructionPointer)指示代码段中指令的偏移地址;随着指令的执行,IP将自动修改以指示下一条指令所在的存储器位置;它与代码段寄存器CS联用,确定下一条指令的物理地址;计算机通过CS:IP寄存器来取指,从而控制指令序列的执行流程IP寄存器是一个专用寄存器,用户不能直接访问,8086CPU设置了1个16位标志寄存器,其中规定9个为标志位,一类叫状态标志,用来表示运算结果的特征,它们是CF、PF、AF、ZF、SF和OF;另一类叫控制标志,用来控制CPU的操作,它们分别是IF、DF和TF。,四、标志寄存器FR,指令的执行与标志有很大关系。标志分成两类:状态标志用来记录程序运行结果的状态信息,许多指令的执行都将自动地改变它。CFOFAFSFZFPF控制标志可由用户根据需要用指令进行设置,用于控制处理器的具体工作方式。DFIFTF,符号标志SF(SignFlag),运算结果最高位为1,则SF=1;否则SF=0。例如:3AH+7CHB6H最高位D71:SF=184H+7CH00H最高位D70:SF=0有符号数利用最高有效位(MSB)来表示它的符号。所以,运算结果的MSB与符号标志SF相一致。,全零标志ZF(ZeroFlag),若运算结果为全0,则ZF=1,否则ZF=0。例如:3AH+7CHB6H结果不是零:ZF=084H+7CH00H结果是全零:ZF=1注意:ZF为1表示的结果是0,奇偶标志PF(ParityFlag),当运算结果最低字节中“1”的个数为零或偶数时,PF=1;否则PF=0(奇校验)。例如:3AH+7CHB6H10110110B,结果中有5个1,是奇数,则PF=1注意:PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作。,进位标志CF(CarryFlag),当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=0。例如(以8位运算为例,8088/8086中为16位):3AH+7CHB6H没有进位:CF=0AAH+7CH26H有进位:CF=1,辅助进位标志AF(AuxiliaryCarryFlag),运算时D3位(低半字节)有进位或借位时,AF=1;否则AF=0。例如:3AH+7CHB6HD3向前有进位:AF=1这个标志主要由处理器内部使用,用于十进制算术运算的调整,用户一般不必关心。,1,溢出标志OF(OverflowFlag),若算术运算的结果有溢出,则OF=1;否则OF=0。例如:3AH(58)+7CH(124)B6H(182)产生溢出:OF=1AAH(-86)+7CH(124)26H(38)没有溢出:OF=0,什么是溢出,“溢出”针对有符号数处理器内部以补码表示有符号数8位表示范围是:-128+12716位表示范围是:-32768+32767如果运算结果超出了这个范围,就是产生了溢出,溢出发生时,说明有符号数的运算结果不正确以8位运算为例:3AH+7CHB6H即58+124182结果超出-128127故溢出,所以OF=1另一方面,补码B6H表达真值是-74,显然运算结果也不正确。,溢出标志和进位标志的区别,溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。,如何运用溢出和进位,处理器对两个操作数进行运算时,根据无符号运算有无进位来设置进位标志CF;根据有符号运算是否超出表示范围来设置溢出标志OF。应该利用哪个标志,则由程序员来决定。如果参加运算的操作数是无符号数,用户应该关心进位标志如果参加运算的操作数是有符号数,用户应该关心溢出标志。,方向标志DF(DirectionFlag),用于串操作指令中,控制地址的变化方向:设置DF0,串操作后存储器地址自动增量(增址);设置DF1,串操作后存储器地址自动减量(减址)。CLD指令复位方向标志:DF0STD指令置位方向标志:DF1,中断允许标志IF(Interrupt-enableFlag),用于控制外部可屏蔽中断是否可以被处理器响应:设置IF1,则允许中断;设置IF0,则禁止中断。CLI指令复位中断标志:IF0STI指令置位中断标志:IF1,跟踪标志TF(TrapFlag),用于控制处理器是否进入单步执行方式:设置TF0,处理器正常工作;设置TF1,处理器每执行一条指令就中断一次,中断编号为1(称单步中断)TF也被称为单步标志。单步执行和单步调试利用单步中断可对程序进行逐条指令的调试。这种逐条指令调试程序的方法就是单步调试。,习题,1.8086cpu有多少根数据线,多少根地址线?其寻址范围是什么?2.某微机具有32M字的内存空间,其CPU的地址总线至少有_根?3.8086CPU中指令队列有什么作用?其长度是多少个字节?4.8086CPU中有哪些寄存器?各有什么用途?,习题,5.8086cpu有哪些标志位?它们的含义和作用如何?6.下列各种情况下应判定哪个标志位并说明其状态:(1).比较两个无符号是否相等;(2).比较两个无符号相减后比较大小;(3).两个数运算后结果是正数还是负数;(4).两个数相加后是否产生溢出;7.执行5439H+4536H(99A3H)时个状态标志位的变化,二、8086的存储器组织和编址方案,8086的存储器组织8086的I/O编址方案,8086的存储器组织,8086的存储器中数据的存储格式8086的存储器的组成存储器的分段管理存储器的物理地址生成堆栈段的使用,存储器是计算机存储信息的地方。掌握数据存储格式,以及存储器的分段管理对以后的汇编程序设计非常重要。你能区别寄存器、存储器(内存)、外存(包括硬盘、光盘、磁带等存储介质)吗?,寄存器、存储器和外存的区别,寄存器是微处理器(CPU)内部暂存数据的存储单元,以名称表示,例如:AX,BX.等;存储器也就是平时所说的主存,也叫内存,可直接与CPU进行数据交换,主存利用地址区别;,外存主要指用来长久保存数据的外部存储介质,常见的有硬盘、光盘、磁带、U盘等;外存的数据只能通过主存间接地与CPU交换数据。程序及其数据可以长久存放在外存,在运行需要时才进入主存。,1.数据的格式,计算机中信息的单位有:位(bit)、字节(byte)、字(word)、双字(doubleword)、KB、MB、GB等在存储器中,信息的存储单元是:字节80 x86微处理器对多字节数据采用:小端方式(littleendian)存储的数据如果对齐边界,则存取速度较快。,存储单元及其存储内容,每个存储单元都有一个编号存储器地址每个存储单元存放一个字节的内容例如:00002H单元存放有一个数据34H,可以表示成:00002H34H,小端方式,多字节数据在存储器中占据多个连续的存储单元:存放时,低字节存于低地址,高字节存于高地址;多字节数据占据的地址空间用它的低地址来表示。例如:“字”单元:00002H=1234H“双字”单元:00002H=78561234H80 x86处理器的“低对低、高对高”的存储形式,被称为“小端方式”。,数据的地址对齐,同一个存储器地址可以表示为:字节单元地址、字单元地址、双字单元地址等等(视指令的具体情况)。对准字:字的地址是偶数地址,即从偶数地址开始存放;非对准字:字的地址是奇数地址,即从奇数地址开始存放;,数据的地址对齐,将字单元安排在偶地址(xx.xx0B),将双字单元安排在模4地址(xxxx00B)的做法,被称为“地址对齐(Align)”。对于地址不对齐的数据,处理器访问时,需要付出额外的访问时间。要取得较高的存取速度,应该将数据的地址对齐。,习题,8.若已知当前(DS)=7F06H,在偏移地址为0075H开始的存储器中连续存放6个字节的数据,分别为11H,22H,33H,44H,55H和66H。请指出这些数据在存储器中的物理地址。如果要从存储器中读出这些数据,至少需要访问几次存储器?各读出哪些数据?,2.存储器的组成,奇偶存储体示意图,8086系统中,存储器采用分体结构,即1M字节的存储空间分为2个512K字节的存储体,一个包含偶数地址(从FFFF0H、FFFF2H、FFFFEH),另一个包含奇数地址(从FFFF1H、FFFF3H、FFFFFH),两者采用字节交叉编址方式。,其中偶地址存储体固定与低8位数据总线相连,奇地址存储体固定与高8位数据总线相连,BHE和A0相互配合,使CPU可以访问一个存储体中的一个字节或同时访问两个存储体中的一个字。BHE和A0的控制作用如下表所示:,BHE与A0组合对应的控制,3.存储器的分段管理,8088/8086有20条地址线,最大可寻址空间为2201MB,可寻址的地址范围为00000HFFFFFH,该地址称物理地址硬件用20位的物理地址来对存储单元进行寻址。,由于8088/8086中的地址寄存器都是16位最多表示216=64KB个地址编号用户不能直接使用20位的物理地址,编程时需要使用逻辑地址来寻址存储单元。逻辑地址由两个16位数构成,其形式为:段的起始地址:段内的偏移地址(16位段地址):(16位偏移量),存储器中的逻辑地址和物理地址,逻辑地址:采用分段结构的存储器中,任何一个地址都由段基址和偏移地址两部分构成,如CS=9482H,IP=2350H,可以表示为9482:2350,物理地址:存储器的绝对地址(00000HFFFFFH),是CPU访问存储器的实际寻址地址。,将存储器分段管理。即将存储空间分为若干逻辑段,每个逻辑段长度64KB,可以分成至少16个段(015)。各段允许重叠。,1MB空间的分段,1MB空间最多能分成多少个逻辑段?每隔16个存储单元就可以开始一个段,所以1MB最多可以有:2201621664K个段1MB空间最少能分成多少个逻辑段?每隔64K个存储单元开始一个段,所以1MB最少可以有:22021616个段,每段独占64KB,每段重叠分配,请注意重叠的含义:根据实际需要设置每个段区,不一定非占据64K的最大段区间。,要求:每段都从低4位为0的存储单元开始,段首地址的高16位称为段基地址,存放在某个段寄存器中。段内偏移地址,相对于段首地址的偏移量。,4.存储器的物理地址的生成,例:DS=3200H指令中给出的偏移地址:1050H,物理地址=3200H10H+1050H=33050H,物理地址计算中段寄存器的作用:指令物理地址=(CS)10H+(IP)操作数物理地址=(DS)10H+偏移地址=(ES)10H+偏移地址(偏移地址由指令寻址方式确定)堆栈操作物理地址=(SS)10H+(SP),如何分配各个逻辑段,程序的指令序列必须安排在代码段程序使用的堆栈一定在堆栈段程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段数据的存放比较灵活,实际上可以存放在任何一种逻辑段中。,演示,逻辑段的分配,习题,1.简述8086系统中物理地址的形成过程。2.8086系统中的存储器为什么要采用分段结构?有什么好处?3.8086存储器中存放数据字时有“对准字”和“非对准字”之分,请说明它们的差别。4.8086系统分为哪两个存储体?用什么信号来选中存储体?它们如何与地址、数据总线相连接?,习题,5.若CS=A000H,求当前代码段在存储器中的物理地址范围是什么?数据段位于存储器的B4000H到C3FFFH范围内,则段寄存器DS的内容为多少?6.8086系统中,最多可以有_个段地址,任意相邻的两个段地址相距_个存储单元。7.两个逻辑地址分别为2003H:1009H和2101H:0029H,它们对应的物理地址是多少?说明了什么?,习题,8.若已知当前(DS)=7F06H,在偏移地址为0075H开始的存储器中连续存放6个字节的数据,分别为11H,22H,33H,44H,55H和66H。请指出这些数据在存储器中的物理地址。如果要从存储器中读出这些数据,至少需要访问几次存储器?各读出哪些数据?,习题,9.某程序在当前数据段中存有两个数据字0ABCDH和1234H,它们对应的物理地址分别为3FF85H和40AFEH,若已知当前(DS)3FB0H,请说明这两个数据字的偏移地址,并用图说明它们在存储器中的存放格式。,所谓堆栈,是在存储器中开辟的一个区域,用来存放需要暂时保存数据,采用先进后出或者后进先出的方式。8086系统中的堆栈段是由段定义语句在存储器中定义的一个段,和其他逻辑段一样,它可以在存储器1MB空间内任意浮动,堆栈段容量小于等于64KB。段基址由堆栈寄存器SS指定,栈顶由堆栈指针SP指定。堆栈的地址增长方式是向下增长的,即随着堆栈内容的增加,堆栈指针的值是减小的。,5.堆栈段的使用,若已知当前(SS)=1000H,(SP)=2000H,那么堆栈在存储器中的分布情况如图所示:,5.堆栈段的使用,栈顶,三个基本概念:1.堆栈段首地址2.栈顶3.栈底,在8086系统中,堆栈仅以字为单位进行操作,并且堆栈中的数据项必须对准字存储,即低字节在偶地址,高字节在奇地址,以保证每访问一次堆栈就能压入或弹出一个字的信息。,5.堆栈段的使用,POPAXAX-SPSP-SP+2,PUSHAXSP-SP-2SP-AX,1.先进入的内容要后弹出,保证返回寄存器内容不发生错误.,堆栈要注意的问题,2.PUSH和POP的指令要成对使用,若不匹配的话,会造成返回主程序的地址出错.,堆栈要注意的问题,举例,1.在某系统中,已知当前(SS)2360H,(SP)0800H,请说明该堆栈段在存储器中的物理地址范围。若往堆栈中存入20个字节,那么SP的内容为什么值?并指出当前栈底在存储器中位置和用图说明它们在存储器中的存放格式。分析:堆栈的物理地址范围是23600H23E00H。当向堆栈存入20个字节时,SP内容为0800H-14H=07ECH。,举例,2.设(SS)2250H,(SP)0140H,若在堆栈中放入5个字,则栈顶的物理地址为_22636H_,此时SP的内容为:0136H;如果又从堆栈中取出3个,则栈顶的物理地址为22263CH_,此时SP的内容为:013CH;,8086的I/O组织,CPU与外部设备通过I/O接口电路连接外部设备通过地址区分:统一编址,独立编址。一个外部设备具有多个寄存器(数据、状态、控制等),通过不同总线与CPU连接。每个寄存器有一个地址,称为端口地址(端口号)。端口号具有唯一性(类似于内存地址)。,8086/8088I/O寻址直接寻址28=256(用A0A7)间接寻址(用DX)64KB,8086的I/O组织,8086CPU要访问某个端口,BIU只需简单把该端口的端口地址放到地址总线的低16位线上,就可以对该端口地址进行访问。在8086指令系统中,可以有两种方式在I/O指令中指出端口地址,一种是把端口地址规定为在指令中的一个固定值(直接寻址),另一种是预先将端口地址送入DX寄存器(间接寻址)。,8086的输入/输出结构(编址方案),独立编址与统一编址方式专用的I/O指令:IN,OUT例如:a:INAL,0F0H;b:INAX,0F0H;c:MOVDX,0FF0H;INAL,DX;d:MOVDX,0FF0H;INAX,0F0H;,8086的引脚和功能8086的最小和最大模式系统8086最小模式典型配置,三、8086的引脚信号和工作模式,8086CPU的引脚和功能,CPU的外部特性表现在其引脚信号上,学习时请特别关注以下几个方面:引脚的功能信号的流向有效电平三态能力,除高电平1、低电平0外,引脚还有一个高阻状态,信号无效,8086CPU的外部引脚图,8086CPU的引脚信号,a.数据和地址引脚b.读写控制引脚c.中断请求和响应引脚d.总线请求和响应引脚e.其它引脚,1.数据和地址引脚,AD15AD0(Address/Data)地址/数据分时复用引脚,双向、三态在访问存储器或外设的总线操作周期中,这些引脚在第一个时钟周期(T1状态)输出存储器或I/O端口的地址A15A0;其他时间用于传送8或16位数据D15D0,A19/S6A16/S3(Address/Status)地址/状态分时复用引脚,输出、三态这些引脚在访问存储器的第一个时钟周期T1状态输出最高4位地址A19A16,在总线周期的其他时间(即T2、T3、Tw和T4状态)输出状态信号S6S3,S6始终为低。S5是中断允许标志状态位,为1允许中断。S4和S3指定那一个段寄存器正在被使用。S4S3含义00当前正在使用ES01当前正在使用SS10当前正在使用CS或未用11当前正在使用DS,2.读写控制引脚,ALE(AddressLatchEnable)地址锁存允许,输出、三态、高电平有效ALE引脚高电平有效时,表示复用引脚:AD15AD0和A19/S6A16/S3正在传送地址信息由于地址信息在这些复用引脚上出现的时间很短暂,所以系统可以利用ALE引脚将地址锁存起来,IO/M(InputandOutput/Memory)I/O或存储器访问,输出、三态该引脚输出IO有效时,表示CPU将访问I/O端口,这时地址总线A15A0提供16位I/O口地址该引脚输出M有效时,表示CPU将访问存储器,这时地址总线A19A0提供20位存储器地址DMA传送时,IO/M*或IO*/M置为高阻,WR(Write)写控制,输出、三态、低电平有效有效时,表示CPU正在写数据给存储器或I/O端口RD(Read)读控制,输出、三态、低电平有效有效时,表示CPU正在从存储器或I/O端口读入数据,IO/M*、WR*和RD*是最基本的控制信号组合后,控制4种基本的总线周期,READY存储器或I/O口就绪,输入、高电平有效在总线操作周期中,8088/8086CPU会在第3个时钟周期的前沿测试该引脚如果测到高有效,CPU直接进入第4个时钟周期如果测到无效,CPU将插入等待周期TwCPU在等待周期中仍然要监测READY信号,有效则进入第4个时钟周期,否则继续插入等待周期Tw。,DEN*(DataEnable)数据允许,输出、三态、低电平有效有效时,表示当前数据总线上正在传送数据,可利用它来控制对数据总线的驱动DT/R*(DataTransmit/Receive)数据发送/接收,输出、三态该信号表明当前总线上数据的流向高电平时数据自CPU输出(发送)低电平时数据输入CPU(接收),3.中断请求和响应引脚,INTR(InterruptRequest)可屏蔽中断请求,输入、高电平有效,为电平触发信号有效时,表示请求设备向CPU申请可屏蔽中断该请求的优先级别较低,并可通过关中断指令CLI清除标志寄存器中的IF标志、从而对中断请求进行屏蔽,INTA*(InterruptAcknowledge)可屏蔽中断响应,输出、低电平有效有效时,表示来自INTR引脚的中断请求已被CPU响应,CPU进入中断响应周期中断响应周期是连续的两个,每个都发出有效响应信号,以便通知外设他们的中断请求已被响应、并令有关设备将中断向量号送到数据总线,NMI(Non-MaskableInterrupt)不可屏蔽中断请求,边缘触发信号,输入、上升沿有效,有效时,表示外界向CPU申请不可屏蔽中断,该请求的优先级别高于INTR,并且不能在CPU内被屏蔽当系统发生紧急情况时,可通过他向CPU申请不可屏蔽中断服务,主机与外设进行数据交换通常采用可屏蔽中断不可屏蔽中断通常用于处理掉电等系统故障,4.总线请求和响应引脚,HOLD总线保持(即总线请求),输入、高电平有效有效时,表示总线请求设备向CPU申请占有总线该信号从有效回到无效时,表示总线请求设备对总线的使用已经结束,通知CPU收回对总线的控制权,DMA控制器等主控设备通过HOLD申请占用系统总线(通常由CPU控制),HLDA(HOLDAcknowledge)总线保持响应(即总线响应),输出、高电平有效有效时,表示CPU已响应总线请求并已将总线释放此时CPU的地址总线、数据总线及具有三态输出能力的控制总线将全面呈现高阻,使总线请求设备可以顺利接管总线,待到总线请求信号HOLD无效,总线响应信号HLDA也转为无效,CPU重新获得总线控制权,5.其它引脚,RESET复位请求,输入、高电平有效该信号有效,将使CPU回到其初始状态;当他再度返回无效时,CPU将重新开始工作复位时,CPU结束当前操作,对DS,SS,ES,IP及标志寄存器清零,将CS置为FFFFH。8088/8086复位后CSFFFFH、IP0000H,所以程序入口在物理地址FFFF0H。,于是CPU从FFFF0H开始执行程序,FFFF0H处放有一条JMP指令,转到系统程序入口处,进行初始化,引导到监控程序。注意:8088/8086复位后,程序入口的物理地址CLK(Clock)时钟输入系统通过该引脚给CPU提供内部定时信号。8086的标准工作时钟为10MHz,Vcc电源输入,向CPU提供5V电源GND接地,向CPU提供参考地电平MN/MX(Minimum/Maximum)组态选择,输入接高电平时,8088/8086引脚工作在最小组态;反之,8088/8086工作在最大组态,TEST测试,输入、低电平有效该引脚与WAIT指令配合使用当CPU执行WAIT指令时,他将在每个时钟周期对该引脚进行测试:如果无效,则程序踏步并继续测试;如果有效,则程序恢复运行也就是说,WAIT指令使CPU产生等待,直到引脚有效为止在使用协处理器8087时,通过引脚和WAIT指令,可使8088与8087的操作保持同步,8086的最小和最大模式系统,最小模式:系统中只有一片8086/8088,其存储容量不大,所要连的I/O端口也不多,所有的总线控制信号都直接由8086或8088产生。总线控制逻辑电路被减到最小。最大模式:构成的系统较大,可能包含不只一片微处理器,或要求有较强的驱动能力,带有一个总线控制器8288。CPU引脚:由MN/MX*(33)决定,2431功能不同,微型计算机系统的硬件,控制总线CB,数据总线DB,地址总线AB,系统总线形成,CPU,I/O设备,I/O接口,主存,系统总线BUS,外设,主机,8086CPU最小模式系统典型配置,BHE,reset,不难看出,除存储器、I/O芯片和基本时钟发生器(8284),系统还有用于地址的锁存器8282(或8283)、用于数据的的缓冲器8286(或8287)和74LS138译码器。下面我们分别来学习一下数据锁存器8282、数据缓冲器8286:,计算机系统总线生成芯片简介,时钟发生器8284A地址锁存器8282(三片)数据缓冲器8286(两片)控制信号,地址总线,数据总线,控制总线,a.数据缓冲器8286,b.数据锁存器8282,补充:三态门和D触发器,三态门和以D触发器形成的锁存器是微机接口电路中最常使用的两类逻辑电路三态门:功率放大、导通开关器件共用总线时,一般使用三态电路:需要使用总线的时候打开三态门;不使用的时候关闭三态门,使之处于高阻D触发器:信号保持,也可用作导通开关,三态,锁存,三态缓冲器(三态门),具有单向导通和三态的特性,T为低平时:输出为高阻抗(三态)T为高电平时:输出为输入的反相,双向三态缓冲器,具有双向导通和三态的特性,OE*0,导通T1ABT0ABOE*1,不导通,D触发器,电平锁存:高电平通过,低电平锁存上升沿锁存:通常用负脉冲触发锁存,负脉冲的上升沿,三态缓冲锁存器(三态锁存器),T,A,DQC,B,8086的总线周期最小模式系统中8086CPU的读写总线周期,四、8086的时序和操作,总线时序,时序(Timing)是指信号高低电平(有效或无效)变化及相互间的时间顺序关系。总线时序描述CPU引脚如何实现总线操作CPU时序决定系统各部件间的同步和定时,什么是总线操作?,总线操作是指CPU通过总线对外的各种操作,8086的总线操作主要有:存储器读、I/O读操作存储器写、I/O写操作中断响应操作总线请求及响应操作CPU正在进行内部操作、并不进行实

温馨提示

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

评论

0/150

提交评论