桂林电子科技大学微机原理.ppt_第1页
桂林电子科技大学微机原理.ppt_第2页
桂林电子科技大学微机原理.ppt_第3页
桂林电子科技大学微机原理.ppt_第4页
桂林电子科技大学微机原理.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

3 7分支程序的设计 分支程序就是根据条件的不同完成不同功能的程序 编写分支程序要用到条件转移指令 执行转移 调用指令时 8086指令队列寄存器原内容 按顺序取出的后续指令 被清除 转向指令的地址 目标地址OPR CS IP CPU按CS IP的指示 跳转到目标地址去执行 3 7 1无条件转移指令使程序无条件跳转到目标地址 OPR 去执行 一 段内转移转移指令和待转向指令在同一代码段中 只改变IP的内容 1 段内直接转移格式 JMPOPR OPR 待转向指令标号操作 IP 标号偏移地址 说明 标号偏移地址 JMP指令的下一条指令的偏移地址 位移量位移量由汇编程序在汇编过程中 根据标号地址与JMP指令所在地址进行计算得到 例 JMPSHORTNEXT NEXT MOVAL 05H 由计算机根据转移的相对位置计算得到 转移范围短转移 位移量为8位 以JMP为中心的256个单元 近转移 位移量为16位 以JMP为中心的64KB个单元 短转移和近转移也可以分别表示为JMPSHORTOPRJMPNEARPTROPR 例 JMPNEARPTRNEXT NEXT MOVAL 05H 由计算机根据转移的相对位置计算得到 2 段内间接转移格式 JMPOPR OPR R M 操作 IP EA 说明 有效地址EA由OPR的寻址方式确定 转移范围为以JMP为中心的64KB 例 BUFDW0301H MOVBX 2C8FHJMPBUF JMPNEXT JMPBX JMPWORDPTR BX NEXT ADDAX BX IP NEXT偏移地址 IP 2C8FH IP 0301H IP 2C8FH 2C90H 二 段间转移转移指令和待转向指令不在同一代码段中 同时改变CS IP 转移范围 1MB 1 段间直接转移指令中直接给出不在本代码段中待转向指令标号 格式 JMPFARPTROPR OPR待转向指令的标号操作 CS 标号段地址 IP 标号偏移地址 例3 20在C1代码段有一条转移到C2代码段的无条件转移指令 如下如示 C1SEGMENT JMPFARPTRNEXT C1ENDSC2SEGMENT NEXT MOVCL AL C2ENDS 2 段间间接转移待转向指令的段地址 段内偏移地址放在连续的4个内存单元中 指令中给出访问内存单元的寻址方式 同操作数的寻址方式 格式 JMPDWORDPTROPR OPR M 操作 IP EA CS EA 2 例3 21JMPDWORDPTR BP DI 设SS 5000H BP 1000H DI 0050H 存放转向地址的堆栈段中的存储单元物理地址 PA 50000H 1000H 0050H 51050H此时转向地址的存储情况如图3 6所示 JMP指令位于C1代码段 转移到C2代码段 程序形式如下 C1SEGMENT 1000H 1300HJMPDWORDPTR BP DI C1ENDSC2SEGMENT 2000H 2500HMOVDL AL C2ENDS 存储单元的内容 3 7 2条件转移指令 根据标志位来判断测试条件 满足条件则转移到指令指定地址执行 分支 否则顺序执行下一条指令 格式 JXXOPR OPR 标号 操作 当条件XX满足时则转移到OPR执行 否则顺序执行 注意 属于段内直接短转移指令 转移范围为256字节 IP 128 IP 127 JSOPR 结果为负转移JNSOPR 结果为正转移 JP JPEOPR 结果中 1 的个数为偶转移JNP JPOOPR 结果中 1 的个数为奇转移 JOOPR 结果有溢出转移JNOOPR 结果无溢出转移 JCOPR 结果有进位转移JNCOPR 结果无进位转移 JZ JEOPR 结果为零 相等转移JNZ JNEOPR 结果不为零 不相等转移 1 单条件转移指令 JB JNAEOPR 小于 不大于等于 CF 1 转移 JNB JAEOPR 不小于 大于等于 CF 0 转移 JBE JNAOPR 小于等于 不大于 CF ZF 1 转移 JNBE JAOPR 不小于等于 大于 CF ZF 0 转移 B Below 小于 低于 A Above 大于 高于 E Equal 等于 2 适合无符号数比较的条件转移指令 L Less 小于G Greater 大于E Equal 等于 JNL JGEOPR 不小于 大于等于转移 JLE JNGOPR 小于等于 不大于转移 JNLE JGOPR 不小于等于 大于转移 3 适合带符号数比较的条件转移指令 JL JNGEOPR 小于 不大于等于转移 SF OF 1 SF OF 0 SF OF ZF 1 SF OF ZF 0 注意 上述条件转移指令通常是与算术 逻辑 移位等指令联用的 且注意有符号和无符号的区别 如 若AL的内容是一个无符号数 那么CMPAL 0 JANEXT 即当AL 0时转移若AL的内容是一个有符号数 那么CMPAL 0 JGDONE 即当AL 0时转移 3 7 3分支程序的结构 分为 单分支结构和多分支结构两种 3 7 4分支程序设计举例 例 比较两个无符号数的大小 将大数存入MAX单元 例3 23检查NN单元的数据是否为1位16进制数 是则将其转换为ASCII码 否则置为0FFH AL N AL 0 AL AL 30H S 存AL值 END N Y AL AL 07H AL 9 AL 15 AL 0FFH Y N N Y 程序如下 ASTACKSEGMENTSTACKDW256DUP TOPLABELWORDASTACKENDSDATASEGMENTNNDB DATAENDSCODESEGMENTASSUMECS CODE DS DATA SS ASTACKSTART MOVAX DATAMOVDS AXMOVAX STACKMOVSS AX MOVSP OFFSETTOPMOVAL NN AL NCMPAL 9 AL和9比较JBEALOOP1 AL 9 转ALOOP1CMPAL 15 AL和15比较JAALOOP2 AL 15 转ALOOP2ADDAL 07H AL AL 07HALOOP1 ADDAL 30H AL AL 30HDONE MOVAH 4CH 返回DOSINT21HALOOP2 MOVAL 0FFH AL 0FFHJMPDONECODE ENDSENDSTART 例3 22符号函数 1 x 0 y 0 x 0 1 x 0 ASTACKSEGMENTSTACKDW256DUP TOPLABELWORDASTACKENDSDATASEGMENTXXDBXYYDB DATAENDS CODESEGMENTASSUMECS CODE DS DATA SS ASTACKSTART MOVAX DATAMOVDS AXMOVAX STACKMOVSS AXLEASP TOPMOVAL XX AL XCMPAL 0 X与0比较JGENEPA X 0 转NEPAMOVYY 0FFH X 0 YY 1JMPSTOP 能否缺省 为什么 NEPA JENEPB X 0 转NEPBMOVYY 1 X 0 YY 1JMPSTOPNEPB MOVYY 0 X 0 YY 0STOP MOVAH 4CH 返回DOSINT21HCODEENDSENDSTART 例3 24从键盘接受一个字符送入AL 根据AL的数值进行跳转 设由键盘输入 0 9 中的任一个到AL 则AL的内容就为 0 9 中的任一个字符的ASCII值 然后根据ASCII值转到L0 L1 L9程序段中 STACKSEGMENTSTACKDW256DUP TOPLABELWORDSTACKENDSDATASEGMENTTABDWL0 L1 L2 L3 L4 L5 L6 L7 L8 L9DATAENDS CODESEGMENTASSUMECS CODE DS DATA SS STACKSTART MOVAX DATAMOVDS AXMOVAX STACKMOVSS AXMOVSP OFFSETTOP MOVAH 01H 键入字符INT21HCMPAL 30H AL和30H比较JBDONE AL 30H 转DONECMPAL 39H AL和39H比较JADONE AL 39H 转DONESUBAL 30HSHLAL 1 AX 2 iMOVAH 0 LEABX TAB BX TAB偏移地址ADDBX AX BX TAB 2 iJMPWORDPTR BX 转 TAB 2 i Li处执行DONE MOVAH 4CH 返回DOSINT21HL0 分支L0JMPDONEL1 分支L1JMPDONE L9 分支L9JMPDONECODEENDSENDSTART 多分支结构的实现形式之一 end DATASEGMENTTABDWL0 L1 L2 L3 L4 L5 L6 L7 L8 L9DATAENDS L0 分支L0JMPDONEL1 分支L1JMPDONE L9 分支L9JMPDONE 多分支结构的实现形式之一 1 段内直接转移指令 格式 JMPSHORTOPRD OPRD 标号 功能 将程序无条件地转移到标号OPRD为起点的程序段执行 操作 IP IP D8 D8为8位偏移量的补码 转移范围 IP 128 IP 127 256字节 3 7 1无条件转移指令 段内直接短转移指令 说明 转移指令可以从现行指令地址 IP 向低地址转移 D8为负数 也可以向高地址转移 D8为正数 注意 JMPSHORTPTRCCC 错误指令 格式 JMPNEARPTROPRD 其中 OPRD 标号 功能 将程序无条件地转移到标号OPRD为起点的程序段执行 操作 IP IP D16 D16为16位偏移量的补码 转移范围 IP 32768 IP 32767 64K一个段 段内直接近转移指令 说明 直接转移指令中的目标地址OPRD直接使用要转向指令的标号 属性操作符NEARPTR在指令中可省略 直接写成 其中 标号的偏移地址 当前转移指令的下一条指令的偏移地址 位移量位移量是是16位的 可以由汇编程序在汇编过程中 根据标号地址与JMP指令所在地址进行计算得到 JMP标号 IP 标号的偏移地址 格式 JMPOPRD OPRD R M 操作 IP EA EA为OPRD确定的有效地址 例如 JMPBX IP BX 或 BX 说明 有效地址EA由OPRD的寻址方式确定 若是寄存器寻址 则寄存器内存放的就是EA 若是MEM寻址 那么EA就是寻址单元的内容 2 段内间接转移指令 例3 19JMPWORDPTR BX 20H 设DS 3000H BX 1000H 则存放转移有效地址的字单元的物理地址 PA 30000H 1000H 20H 31020H若指令执行前 CS 0100H IP 2110H 31020H C6H 31021H 40H 则指令执行后 IP 40C6H CS值不变 因此 程序就转移到0100H 40C6H处继续执行 如下所示 CS IP 0100H 2110HJMPWORDPTR BX 20H 0100H 40C6HADDAX DX 31020H 格式 JMPFARPTROPRD OPRD

温馨提示

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

评论

0/150

提交评论