第2章 8086的指系统(三)yk_控制转移指.ppt
《第2章 8086的指系统(三)yk_控制转移指.ppt》由会员分享,可在线阅读,更多相关《第2章 8086的指系统(三)yk_控制转移指.ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 朱 泽 民 计算机科学与技术学院 13995939009第第 2 章章 8086的指令系统的指令系统(三)(三)2.4 控制转移类指令控制转移类指令n控制转移类指令用于实现分支、循环、过程等程序结构,是仅次于传送指令的常用指令重点掌握:JMP/Jcc/LOOP CALL/RETINT n/IRET 常用系统功能调用一般了解:LOOPZ/LOOPNZ INTO 控控制制转转移移类类指指令令通通过过改改变变IP(和和CS)值值,实现程序执行顺序的改变实现程序执行顺序的改变22.4.1 无条件转移指令无条件转移指令n只要执行无条件转移指令只要执行无条件转移指令JMP,就使程序转到,就使程序转到指定
2、的目标地址处,从目标地址处开始执行指指定的目标地址处,从目标地址处开始执行指令令n操作数操作数label是要转移到的是要转移到的目标地址(目的地址、目标地址(目的地址、转移地址转移地址)JMP labelJMP label;程序转向;程序转向labellabel标号指定的地址标号指定的地址3目标地址的范围:段内目标地址的范围:段内n段内转移近转移(near)q在当前代码段64KB范围内转移(-3276832767)q不需要更改CS段地址,只要改变IP偏移地址n段内转移短转移(short)q转移范围可以用一个字节表达,在段内128127范围的转移代代码码段段代代码码段段4目标地址的范围:段间目标
3、地址的范围:段间n段间转移远转移(far)q从当前代码段跳转到另一个代码段,可以在1MB范围q更改CS段地址和IP偏移地址q目标地址必须用一个32位数表达,叫做32位远指针,它就是逻辑地址代代码码段段代代码码段段 实实际际编编程程时时,MASM汇汇编编程程序序会会根根据据目目标标地地址址的的距距离,自动处理成短转移、近转移或远转移离,自动处理成短转移、近转移或远转移 程序员可用操作符程序员可用操作符short、near ptr 或或far ptr 强制强制5nJMP指令分成指令分成4种类型:种类型:段内转移、相对寻址段内转移、相对寻址 段内转移、间接寻址段内转移、间接寻址 段间转移、直接寻址段
4、间转移、直接寻址 段间转移、间接寻址段间转移、间接寻址6段内转移、相对寻址段内转移、相对寻址JMP labelJMP label;IPIP+IPIP+位移量位移量n位移量是紧接着位移量是紧接着JMP指令后的那条指令的偏移地指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移址,到目标指令的偏移地址的地址位移n当向地址增大方向转移时,位移量为正;向地址当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位移量为负减小方向转移时,位移量为负again:again:decdec cxcx;标号;标号againagain的指令的指令jmpjmp again again;转移到;转移到aga
5、inagain处继续执行处继续执行jmpjmp output output;转向;转向outputoutputoutput:output:movmov result,alresult,al;标号;标号outputoutput的指令的指令7段内转移、间接寻址段内转移、间接寻址JMP r16/m16JMP r16/m16 ;IPr16/m16IPr16/m16n将一个将一个1616位寄存器或主存字单元内容送入位寄存器或主存字单元内容送入IPIP寄存器,作为新的指令指针,但不修改寄存器,作为新的指令指针,但不修改CSCS寄存器的内容寄存器的内容jmpjmp ax ax;IPAXIPAXjmpjmp
6、word word ptrptr 2000h 2000h;IP2000hIP2000h8段间转移、直接寻址段间转移、直接寻址JMP far JMP far ptrptr label label;IPlabelIPlabel的偏移地址的偏移地址;CSlabelCSlabel的段地址的段地址n将标号所在段的段地址作为新的CS值,标号在该段内的偏移地址作为新的IP值;这样,程序跳转到新的代码段执行jmpjmp far far ptrptr othersegotherseg;远转移到代码段2的otherseg9段间转移、间接寻址段间转移、间接寻址JMP far JMP far ptrptr memme
7、m;IPmemIPmem,CSmem+2CSmem+2n用一个双字存储单元表示要跳转的目标地址。n这个目标地址存放在主存中连续的两个字单元中的,低位字送IP寄存器,高位字送CS寄存器movmov word word ptrptr bx,0 bx,0movmov word word ptrptr bx+2,1500h bx+2,1500hJMP far JMP far ptrptr bxbx ;转移到1500h:010nJmp转移指令的原理,可参见:q王爽第九章112.4.2 条件转移指令条件转移指令n指定的条件cc如果成立,程序转移到由标号label指定的目标地址去执行指令;条件不成立,则程序
8、将顺序执行下一条指令n操作数label是采用相对寻址方式的短转移标号q表示Jcc指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移q距当前IP地址128127个单元的范围之内JccJcc label label ;条件满足,发生转移:;条件满足,发生转移:IPIPIPIP8 8位位移量位位移量 ;条件不满足,顺序执行;条件不满足,顺序执行12Jcc指令的分类指令的分类nJcc指令不影响标志,但要利用标志。n根据利用的标志位不同,16条指令分成3种情况:1.判断单个标志位状态 2.比较无符号数高低 3.比较有符号数大小 13判断单个标志位状态判断单个标志位状态n这组指令单独判断这组指令单
9、独判断5个状态标志之一个状态标志之一JZJZ/JEJE和和J JNZ/JNE:利用零标志:利用零标志ZF,判断结果是否为零,判断结果是否为零(或相等)(或相等)JS和和JNS:利用符号标志:利用符号标志SF,判断结果是正是负,判断结果是正是负JO和和JNO:利用溢出标志:利用溢出标志OF,判断结果是否产生溢出,判断结果是否产生溢出JP/JPE和和JNP/JPO:利用奇偶标志:利用奇偶标志PF,判断结果中,判断结果中“1”的个数是偶是奇的个数是偶是奇JC/JB/JNAE和和J JNC/JNB/JAE:利用进位标志:利用进位标志CF,判,判断结果是否进位或借位断结果是否进位或借位例题例题2.38例
10、题例题2.39例题例题2.40例题例题2.41例题例题2.4217比较无符号数高低比较无符号数高低n无符号数的大小用高(Above)低(Below)表示n利用CF确定高低、利用ZF标志确定相等(Equal)n两数的高低分成4种关系:低于(不高于等于):JB(JNAE)不低于(高于等于):JNB(JAE)低于等于(不高于):JBE(JNA)不低于等于(高于):JNBE(JA)24例2.43a:比较无符号数cmpcmp ax,bxax,bx;比较;比较axax和和bxbxjnbjnb next next;若;若axbxaxbx,转移,转移xchgxchg ax,bxax,bx;若;若axaxbxb
11、x,交换,交换next:next:.结果:结果:AX保存较大的保存较大的无符号数无符号数25比较有符号数大小比较有符号数大小n有符号数的大(Greater)小(Less)需要组合OF、SF标志,并利用ZF标志确定相等(Equal)n两数的大小分成4种关系:小于(不大于等于):JL(JNGE)不小于(大于等于):JNL(JGE)小于等于(不大于):JLE(JNG)不小于等于(大于):JNLE(JG)26例2.43b:比较有符号数cmpcmp ax,bxax,bx;比较;比较axax和和bxbxjnljnl next next;若;若axbxaxbx,转移,转移xchgxchg ax,bxax,b
12、x;若;若axaxbxbx,交换,交换next:next:.结果:结果:AX保存较大的保存较大的有符号数有符号数272.4.3 循环指令循环指令(loop)n循环指令默认利用循环指令默认利用CX计数器计数器nlabel操作数采用操作数采用相对相对短转移短转移寻址方式寻址方式LOOP labelLOOP label;CXCXCXCX1 1,;CX0CX0,循环到标号,循环到标号labellabelLOOPZ labelLOOPZ label;CXCXCXCX1 1,;CX0CX0且且ZFZF1 1,循环到标号,循环到标号labellabelLOOPNZ labelLOOPNZ label;CXC
13、XCXCX1 1,;CX0CX0且且ZFZF0 0,循环到标号,循环到标号labellabelJCXZ labelJCXZ label;CXCX0 0,转移到标号,转移到标号labellabel28例2.44:记录空格个数movmov cx,countcx,count;设置循环次数;设置循环次数,即字符数即字符数movmov si,offsetsi,offset string stringxorxor bx,bxbx,bx;bxbx0 0,记录空格数,记录空格数jcxzjcxz done done ;如果长度为;如果长度为0 0,退出,退出movmov al,20h al,20hagain:a
14、gain:cmpcmp al,es:sial,es:si jnzjnz next next;ZFZF0 0非空格,转移非空格,转移inc inc bxbx;ZF=1ZF=1是空格,个数加是空格,个数加1 1next:next:inc inc sisiloop againloop again;字符个数减;字符个数减1 1,不为,不为0 0继续循环继续循环dec cxjnz againcmp cx,0jz done292.4.4 子程序指令子程序指令n子程序是完成特定功能的一段程序n当主程序(调用程序)需要执行这个功能时,采用CALL调用指令转移到该子程序的起始处执行n当运行完子程序功能后,采用R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 8086的指系统三yk_控制转移指 8086 系统 yk_ 控制 转移
限制150内