仁爱学院微机原理复习2重点分析.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.3 8086 中的标志寄存器和堆栈 一、标志寄存器(Flag Register) 8086CPU中有一个16位的标志寄存器(FR), 共设有9个标志位,用以反映算术、逻辑运算结果的 特征及反映CPU的控制,有7位无用。 不同的指令对标志的影响是不同的(如传送类、 转移类等指令不影响标志位,而算术逻辑运算大部分 都影响标志位);反之,不同的标志也影响着指令执 行的结果。 一、标志寄存器(Flag Register)(续) 其中6个状态标志:CF、PF、AF、ZF、SF、OF 3个控制标志:IF、DF、TF。 有7位空的未用。 一、标志寄存器(Flag Register)(续) CF:进位标志(Carry Flag) 当运算的结果在最高位(8位,16位)上产生一 个进位或借位时,CF=1;反之,CF=0。 PF:奇偶标志(Parity Flag) 当运算结果低8位中“1”的个数为偶数时,PF=1; 为奇数时,PF=0。 一、标志寄存器(Flag Register)(续) AF:辅助进位标志(Auxiliary Carry Flag) 在算术运算中,当一个8位(或16位)数的低4位 向高4位(即b3位向b4位)有进位或借位时,AF=1; 反之,AF=0。此标志用于BCD码运算指令中。 ZF:零标志(Zero Flag) 当运算结果为全“0”时,ZF=1;反之,ZF=0。 SF:符号标志(Sign Flag) 当运算结果的最高位为“1”时,SF=1;反之, SF=0。 OF:溢出标志(Overflow Flag) 在算术运算中,符号数的运算结果超出8位或 (16位)符号数表达的范围,OF=1;反之,OF=0。 (8位:-128~+127;16位:-32768~+32767) 溢出与进位是两个不同性质的标志,一个反映符 号数,一个反映纯数值。 此外还设有3个控制标志: DF:方向标志(Direction Flag) 用于控制字符串操作指令的步进方向。 当DF=0时,表示从低址向高址以递增顺序进行串 处理;当DF=1时,表示从高址向低址以递减顺序进行 串处理。 IF:中断允许标志(Interrupt enable Flag) 当IF=1时,允许中断;当IF=0时,禁止中断。 该标志可用指令STI或CLI使其置1或0。 IF标志对 NMI 信号或由内部中断(INT n)无 作用。 TF:陷阱或跟踪标志(Trap Flag) 当TF=1时,CPU进入单步工作方式,每执行完一 条指令就自动产生一个内部中断,以便进行程序调试。 当TF=0时,连续执行程序。 (没有专门的指令使TF置1或0) 二、堆栈 什么是堆栈? 堆栈是一个按照后进先出(LIFO — Last In First Out)的原则存取数据的部件或区域。 硬件堆栈:内部寄存器作为堆栈,工作速度快, 容量不大: 软件堆栈:用内存作为堆栈,工作速度慢,容量 大,内存有多大,堆栈就有多大,堆栈由一个堆栈 指针 SP 和一个栈区组成。 为什么要用堆栈? 主程序与子程序,主程序调用子程序,或者子程 序调用子程序,或者处理中断服务程序,CPU必须把 主程序调用子程序指令的下一条指令的地址(或中断 时的断点)即PC值保留下来,才能保证子程序(或中 断服务程序)执行完之后正确返回到主程序继续执行。 另外,调用子程序之前的有关REG、标志位也要 及时正确的保存下来。 堆栈如何操作? 堆栈必须设有一个区域(栈区),还需一个指针 (SP),指示栈在什么位置。8086与栈有关的寄存器 是SS和SP。 SS:标识现行堆栈的基地址; SP:标识现行堆栈的段内偏移量。 8086中的栈是“向下生成”的栈,即随着入栈数据 增加,SP值减小。有些处理器或单片机还有“向上生 成”的栈。 SP值由指令MOV SP,data设定初值。 空栈时,栈顶与栈底是重合的,随着压入栈中数 据增加,堆栈扩展,SP减小,SP始终指向栈顶。 堆栈操作有专门的指令 PUSH ××与 POP ××。 8086的入栈

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档