仁爱学院微机原理复习2_第1页
仁爱学院微机原理复习2_第2页
仁爱学院微机原理复习2_第3页
仁爱学院微机原理复习2_第4页
仁爱学院微机原理复习2_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

2.38086中的标志寄存器和堆栈

1一、标志寄存器(FlagRegister)8086CPU中有一个16位的标志寄存器(FR),共设有9个标志位,用以反映算术、逻辑运算结果的特征及反映CPU的控制,有7位无用。

不同的指令对标志的影响是不同的(如传送类、转移类等指令不影响标志位,而算术逻辑运算大部分都影响标志位);反之,不同的标志也影响着指令执行的结果。

2一、标志寄存器(FlagRegister)(续)

其中6个状态标志:CF、PF、AF、ZF、SF、OF

3个控制标志:IF、DF、TF。

有7位空的未用。OFDFIFTFSFZFAFPFCF15141312111098765432103一、标志寄存器(FlagRegister)(续)CF:进位标志(CarryFlag)

当运算的结果在最高位(8位,16位)上产生一个进位或借位时,CF=1;反之,CF=0。PF:奇偶标志(ParityFlag)

当运算结果低8位中“1”的个数为偶数时,PF=1;为奇数时,PF=0。4一、标志寄存器(FlagRegister)(续)AF:辅助进位标志(AuxiliaryCarryFlag)

在算术运算中,当一个8位(或16位)数的低4位向高4位(即b3位向b4位)有进位或借位时,AF=1;反之,AF=0。此标志用于BCD码运算指令中。ZF:零标志(ZeroFlag)

当运算结果为全“0”时,ZF=1;反之,ZF=0。5SF:符号标志(SignFlag)

当运算结果的最高位为“1”时,SF=1;反之,SF=0。OF:溢出标志(OverflowFlag)

在算术运算中,符号数的运算结果超出8位或(16位)符号数表达的范围,OF=1;反之,OF=0。(8位:-128~+127;16位:-32768~+32767)溢出与进位是两个不同性质的标志,一个反映符号数,一个反映纯数值。6此外还设有3个控制标志:DF:方向标志(DirectionFlag)

用于控制字符串操作指令的步进方向。当DF=0时,表示从低址向高址以递增顺序进行串处理;当DF=1时,表示从高址向低址以递减顺序进行串处理。7IF:中断允许标志(InterruptenableFlag)

当IF=1时,允许中断;当IF=0时,禁止中断。该标志可用指令STI或CLI使其置1或0。

IF标志对NMI信号或由内部中断(INTn)无作用。8TF:陷阱或跟踪标志(TrapFlag)

当TF=1时,CPU进入单步工作方式,每执行完一条指令就自动产生一个内部中断,以便进行程序调试。当TF=0时,连续执行程序。(没有专门的指令使TF置1或0)9二、堆栈什么是堆栈?堆栈是一个按照后进先出(LIFO—LastInFirstOut)的原则存取数据的部件或区域。硬件堆栈:内部寄存器作为堆栈,工作速度快,容量不大:软件堆栈:用内存作为堆栈,工作速度慢,容量大,内存有多大,堆栈就有多大,堆栈由一个堆栈指针SP和一个栈区组成。10为什么要用堆栈?主程序与子程序,主程序调用子程序,或者子程序调用子程序,或者处理中断服务程序,CPU必须把主程序调用子程序指令的下一条指令的地址(或中断时的断点)即PC值保留下来,才能保证子程序(或中断服务程序)执行完之后正确返回到主程序继续执行。另外,调用子程序之前的有关REG、标志位也要及时正确的保存下来。11堆栈如何操作?

堆栈必须设有一个区域(栈区),还需一个指针(SP),指示栈在什么位置。8086与栈有关的寄存器是SS和SP。SS:标识现行堆栈的基地址;

SP:标识现行堆栈的段内偏移量。

8086中的栈是“向下生成”的栈,即随着入栈数据增加,SP值减小。有些处理器或单片机还有“向上生成”的栈。12

SP值由指令MOVSP,data设定初值。空栈时,栈顶与栈底是重合的,随着压入栈中数据增加,堆栈扩展,SP减小,SP始终指向栈顶。堆栈操作有专门的指令PUSH××与POP××。8086的入栈与出栈弹出操作每次是一个字,而不是一个字节。13举例:若SS=1200H,SP=1000H,执行PUSHAX(设AX=1234H),看栈针与栈中的内容。

先修改栈针,再压入数据,先压入高字节,后压入低字节。分两步:1.先SP-1→SP,压入高位字节(即AH内容);2.再SP-1→SP,压入低位字节(即AL内容)。14

压入堆栈操作如图:SS×16+SP12000H+1000H13000H3412××低址高址SP=1000HSP-1→0FFFHSP-1→0FFEHM12FFEH12FFFH13000HAX=1234(2)(1)15出栈操作与入栈操作相反:1.先弹出低位内容,修改SP→SP+1;2.再弹出高位内容,再修改SP→SP+1;注:CALL与RET中保护断点与恢复断点是由指令自动完成的。16举例:若SS=1500H,SP=1000H,执行POPBX(设栈中数据=5678H),看栈针与栈中的内容如何变化。弹出也分为两步:

•先弹出低8位(78H→BL),修改栈针,SP+1→SP;

•再弹出高8位(56H→BH),再修改栈针,SP+1→SP;

执行POPBX

指令后,BX=5678H,SP=1002H,SS=1500H,

堆栈中的数据仍然不变。17弹出操作如下图:SS×16+SP15000H+1000H16000H7856××低址高址SP=1000HSP+1→1002HSP+1→1001HM16000H16001H16002HBX=BHBL5678(1)(2)18第四节8086系统的组成19一、存储器的组织与分段存储器组织

8086有20位地址线,寻址范围1M字节(从00000H~FFFFFH),每一单元都有一个唯一的物理地址,每个单元存储一个字节,任何两个相邻单元可存放一个字(word)。80386~Pentium处理器都是32位的地址,寻址范围为232=4GBytes=(4096MB)。20几个基本概念:

字节地址—对应的单元地址;字地址—两个地址中低址作为字地址;字符串地址—低字节存放在低址单元,高字节存放在高址单元。21例1:把5678H写入1002H单元。78H→1002H56H→1003H7856M1002H1003H22例2:把字串12345678H写入1000H单元。78→1000H…12→1003H

读:从1002H读出时,读一个字节是34,读一个字是1234;从1001读出一个字是3456H,但读奇址的字时,需访问内存两次,忽略掉78H与12H;读写字节时每次数据总线上仍是16位,忽略掉另一个字节。请参看P47图2.15,8086从存储器中读、写字与字节示意图78563412M100010011002100323存储器分段分段原因:CPU内没有设置20位的地址寄存器,只有16位的寄存器,16位寄存器无法存放20位地址,所以把20位地址分为基地址(段)和偏移量;分别存放在两个16位寄存器中。好处是:程序区、堆栈区和数据区可以互相隔离,方便程序的再定位。•允许段重叠:根据情况,段与段之间可以重叠,几个段可以在一个64K段内,但各段的起始地址是不同的。24•8086系统存储器分段示意图

25

存储器的实际地址就是物理地址(或绝对地址)20位;存储器的逻辑地址是段基址和16位偏移量组成。因为段REG为16位,所以每64KByte为一段。实际地址是由段地址左移4位加上所对应的16位地址偏移量。

CPU中的BIU中有一个20位地址加法器,用来形成20位的物理地址。(段自动左移4位与偏移量相加)268086物理地址的形成27不同的逻辑地址可以变换成同一个物理地址,反之亦然。例如:物理地址为25000H

逻辑地址:段基址为2000H,偏移量5000H段基址为2100H,偏移量4000H段基址为2200H,偏移量3000H28二、输入/输出结构8086可访问8位I/O端口或16位I/O端口,若直接寻址方式寻I/O端口,用8位地址,可访问28=256个端口地址;若用间接寻址方式寻I/O,用16位地址,可访问216=64K个端口地址;间接寻址通过DX寄存器,I/O端口不设段REG,可以认为全部端口都在同一个段内。8086系列的处理器设有专门的I/O指令(即IN和OUT指令)。29三、总线接口部件介绍两种常用的总线接口部件:地址锁存器和总线驱动器。下面是本教材(采用国际符号)和某些教材的逻辑门电路符号对照表30三、总线接口部件地址锁存器(8282)(或74LS373)8282(或373)是带三态输出缓冲器的8位双向锁存器。选通信号:STB(Strobe)把输入数据锁入锁存器。当STB=1时,输入数据;当STB=0时,锁存数据;

ALE→STBOE为输出允许信号,当其为低时,数据就出现在数据线上;OE=1时,锁存器处于高阻。31带三态缓冲的8位数据锁存器82828282内部结构STB:选通脉冲OE:为0时输出有效为1时输出为高阻32双向总线驱动器(总线收发器)数据锁存不是必须的,但在较大的系统中,由于使用的存储器和I/O接口数量较多,为了增加CPU数据总线带负载的能力,一般接入总线驱动器以提高数据总线带负载之能力。33

8286(或74LS245)是8位总线驱动器(双向)

T是控制收发方向的输入控制信号:T=1,A→B;T=0,B→A;OE=0,输出允许信号;OE=1,8086是高阻。8286可以提供32mA驱动。34带三态的8位双向数据缓冲器82868286内部结构图35四、8086的两种组态最小组态:

CPU提供所有的总线控制信号,以实现与MEM和I/O接口的连接。(最小组态如下图)368086最小模式37最大组态:当MN/MX=0时,8086组成最大组态,以组成多处理器系统。在此组态下,一些系统资源由多个处理器所公用,它们被称为全局资源;另一些资源为某个处理器所专用的,称为局部或专用资源。

38在多处理器系统中,任何时刻只能有一个处理器访问总线,采取的措施是:总线控制器(8288)(产生命令和控制时序,提供总线驱动能力)8288对8086的三个总线状态信号(S0、S1、S2)进行译码,以产生与多总线结构兼容的各种定时命令和控制信号。译出8种信号,111时不用(无源),还有7种作为命令信号,请参看下表。39总线状态码与输出命令对应表40

(1)8288总线控制器418288提供超前写命令(AMWC、AIOC):

即在写周期开始之前就启动写过程,其时序与读命令相同,在一定程度上避免处理器进入没必要的等待状态。8288有两种工作方式,由IOB决定:当IOB=0,系统总线工作方式;当IOB=1,I/O总线工作方式(8089I/O处理器)42(2)总线裁决器(8289)有了8289,才允许多个处理器(8086,8087,8089等)驻留在系统总线上,每个处理器都有自己的裁决器,每个裁决器都有一个总线请求信号BREQ。总线的裁决器根据8086系统的多总线裁决规程进行。裁决器的连接方式有3种:⑴.并联优先权判别方式(BREQ送入优先权编码器)⑵.串联优先权判别方式(与连接位置有关,菊花链)⑶.循环优先权判别方式(动态分配,电路复杂)43总线裁决器(8289)8289总线裁决器44(3)8086最大组态图8086最大组态特点:三个状态信号S0~S2经8288总线译码器译码后产生最大组态时CPU对外的控制信号(共七个信号),8288本身还提供一些控制信号。最大组态电路如下图所示。4546第五节8086系统时钟与总线周期

47一、系统时钟•时钟发生器:8284A提供系统时钟。8284A组成:晶体震荡器,一个三分频器,起步作用的READY信号及复位RESET信号。功能:提供时钟源(EFI和晶体)信号与时钟的同步:多个8284的同步,外部事件(Ready、Reset)与时钟同步。输出:

温馨提示

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

评论

0/150

提交评论