微机原理 第5章5.2.5控制转移类指与处理器控制指.ppt
《微机原理 第5章5.2.5控制转移类指与处理器控制指.ppt》由会员分享,可在线阅读,更多相关《微机原理 第5章5.2.5控制转移类指与处理器控制指.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 5 章5.2.5 控制转移类指令控控制制转转移移类类指指令令用用于于实实现现分分支支、循循环环、过过程程等程序结构,是仅次于传送等程序结构,是仅次于传送指令的常用指令指令的常用指令重点掌握:重点掌握:JMP/Jcc/LOOP CALL/RETINT n/IRET 常用系统功能调用常用系统功能调用一般了解:一般了解:LOOPZ/LOOPNZ INTO 控控制制转转移移类类指指令令通通过过改改变变IP(和和CS)值值,实现程序执行顺序的改变实现程序执行顺序的改变第 5 章一、无条件转移指令只只要要执执行行无无条条件件转转移移指指令令JMP,就就使使程程序序转转到到指指定的目标地址处,从目标地址
2、处开始执行指令定的目标地址处,从目标地址处开始执行指令根根据据目目标标地地址址(目目的的地地址址、转转移移地地址址)的的表表达达形形式以及跳转的距离式以及跳转的距离JMP指令分成指令分成5种类型:种类型:段内直接短段内直接短转移转移 段内直接段内直接近转移近转移 例例:JMP LABLE 段内间接段内间接转移转移 段间直接转移段间直接转移 段间间接转移段间间接转移JMP JMP 目标地址;目标地址;第 5 章目标地址的表达形式直接寻址方式直接寻址方式n转转移移地地址址象象立立即即数数一一样样,直直接接在在指指令令的机器代码中的机器代码中间接寻址方式间接寻址方式n转移地址在寄存器或主存单元中转移
3、地址在寄存器或主存单元中n例例JMP AX用标号表达用标号表达用寄存器或存储器用寄存器或存储器操作数表达操作数表达第 5 章目标地址的范围:段内段内转移段内转移近转移(默认)近转移(默认)n跳转的距离在跳转的距离在-32768+32767之间。之间。n不不需需要要更更改改CS段段地地址址,只只要要改改变变IP偏偏移地址移地址n当当向向地地址址增增大大方方向向转转移移时时,位位移移量量为为正正;向向地地址址减减小小方方向向转转移移时时,位位移移量量为为负负段内转移段内转移短转移(短转移(short ptr)目目标标地地址址与与JMP指指令令的的下下一一条条地地址址之之间间的差值为的差值为-128
4、+127 代代码码段段代代码码段段第 5 章目标地址的范围:段间段间转移段间转移远转移远转移(far ptr)n从从当当前前代代码码段段跳跳转转到到另另一一个个代代码码段,可以在段,可以在1MB范围范围n更改更改CS段地址和段地址和IP偏移地址偏移地址n目目标标地地址址必必须须用用一一个个32位位数数表表达达,叫叫做做32位位远远指指针针,它它就就是是逻逻辑辑地地址址代代码码段段代代码码段段第 5 章段内直接转移JMP labelJMP label;IPlabelIPlabel当当向向地地址址增增大大方方向向转转移移时时,位位移移量量为为正正;向向地地址址减减小方向转移时,位移量为负小方向转移
5、时,位移量为负again:again:decdec cxcx;标号;标号againagain的指令的指令jmpjmp againagain;转移到;转移到againagain处继续执行处继续执行jmpjmp outputoutput;转向;转向outputoutputoutput:output:movmov result,alresult,al;标号;标号outputoutput的指令的指令第 5 章段内间接转移JMP r16/m16JMP r16/m16 ;IPr16/m16IPr16/m16将将一一个个1616位位寄寄存存器器或或主主存存字字单单元元内内容容送送入入IPIP寄寄存存器器,作
6、作为为新新的的指指令令指指针针,但但不不修修改改CSCS寄寄存存器的内容。器的内容。【例5.47】设DS:1200H=00H,DS:1201H=20HMOV AX,1200HJMP AX;IP=1200HJMP WORD PTR 1200H ;IP=2000H第 5 章段间直接转移JMP far JMP far ptrptr label label;IPlabelIPlabel的偏移地址的偏移地址;CSlabelCSlabel的段地址的段地址将将标标号号所所在在段段的的段段地地址址作作为为新新的的CS值值,标标号号在在该该段段内内的的偏偏移移地地址址作作为为新新的的IP值值;这这样,程序跳转到
7、新的代码段执行样,程序跳转到新的代码段执行第 5 章段间间接转移JMP far JMP far ptrptr memmem;IPmemIPmem,CSmem+2CSmem+2用用一一个个双双字字存存储储单单元元表表示示要要跳跳转转的的目目标标地地址址。这这个个目目标标地地址址存存放放在在主主存存中中连连续续的的两两个个字字单单元元中中的的,低低位位字字送送IPIP寄寄存存器器,高高位位字字送送CSCS寄存器寄存器movmov word word ptrptr bx,0 bx,0movmov word word ptrptr bx+2,1500h bx+2,1500hJMP far JMP fa
8、r ptrptr bxbx ;转移到;转移到1500h:01500h:0第 5 章二、条件转移指令指指定定的的条条件件cc如如果果成成立立,程程序序转转移移到到由由标标号号label指指定定的的目目标标地地址址去去执执行行指指令令;条条件件不不成成立立,则则程程序序将顺序执行下一条指令将顺序执行下一条指令操作数操作数label是是采用直接寻址方式的短转移标号采用直接寻址方式的短转移标号n表示表示Jcc指令跳转到的那条指令的偏移地址指令跳转到的那条指令的偏移地址n距当前距当前IP地址地址128127个单元的范围之内个单元的范围之内JccJcc label label ;cccc为跳转条件:满足,
9、转移为跳转条件:满足,转移IPlabelIPlabel ;不满足,顺序执行;不满足,顺序执行第 5 章Jcc指令的分类Jcc指指令令不不影影响响标标志志,但但要要利利用用标标志志(表表5.31)。根根据据利利用用的的标标志志位位不不同同,18条指令分成条指令分成3种情况:种情况:1.判断单个标志位状态判断单个标志位状态2.比较无符号数高低比较无符号数高低3.比较有符号数大小比较有符号数大小第 5 章判断单个标志位状态这组指令单独判断这组指令单独判断5个状态标志之一个状态标志之一JZJZ/JEJE和和JNZJNZ/JNEJNE:利利用用零零标标志志ZF,判判断断结结果果是是否否为零(或相等)为零
10、(或相等)JSJS和和JNSJNS:利用符号标志:利用符号标志SF,判断结果是正是负,判断结果是正是负JOJO和和JNOJNO:利利用用溢溢出出标标志志OF,判判断断结结果果是是否否产产生生溢出溢出JPJP/JPEJPE和和JNPJNP/JPOJPO:利利用用奇奇偶偶标标志志PF,判判断断结结果果中中“1”的个数是偶是奇的个数是偶是奇JCJC和和JNCJNC:利利用用进进位位标标志志CF,判判断断结结果果是是否否进进位位或借位或借位补充例题补充例题1补充例题补充例题2补充例题补充例题3补充例题补充例题4补充例题补充例题5第 5 章比较无符号数高低无无符符号号数数的的大大小小用用高高(Above
11、)低低(Below)表示表示两数的高低分成两数的高低分成4种关系:种关系:低于(不高于等于):低于(不高于等于):JBJB(JNAE)JNAE)高于等于(不低于):高于等于(不低于):JAEJAE(JNBJNB)低于等于(不高于):低于等于(不高于):JBEJBE(JNAJNA)高于(不低于等于):高于(不低于等于):JAJA(JNBEJNBE)例例5.49:比较无符号数:比较无符号数【例例5.49】比比较较无无符符号号数数AX、BX和和CX的的大大小小,将将最最小数存于小数存于AX中。中。CMP BX,CXJBNEXT1;若若BXCX,则继续比较,则继续比较AX和和BXXCHGBX,CXNE
12、XT1:CMPAX,BXJAENEXT2;若若AXBX,则放小数到,则放小数到AXRETNEXT2:XCHGAX,BXRET第 5 章比较有符号数大小有有 符符 号号 数数 的的 大大 用用(Greater),小小 用用(Less)表示。)表示。两数的大小分成两数的大小分成4种关系:种关系:小于(不大于等于):小于(不大于等于):JLJL(JNGEJNGE)大于等于(不小于):大于等于(不小于):JGEJGE(JNLJNL)小于等于(不大于):小于等于(不大于):JLEJLE(JNGJNG)大于(不小于等于):大于(不小于等于):JGJG(JNLEJNLE)例:比较有符号数例:比较有符号数cm
13、pcmp ax,bxax,bx;比较;比较axax和和bxbxjnljnl next next;若;若axaxbxbx,转移,转移xchgxchg ax,bxax,bx;若;若axaxbxbx,交换,交换next:next:.结果:结果:AX保存较大的保存较大的有符号数有符号数第 5 章三、循环指令(loop)循环指令默认利用循环指令默认利用CX计数器计数器label操作数采用操作数采用直接短转移寻址方式直接短转移寻址方式LOOP labelLOOP label;CXCXCXCX1 1,;CX0CX0,循环到标号,循环到标号labellabelLOOPZ/LOOPE labelLOOPZ/LO
14、OPE label;CXCXCXCX1 1,;CX0CX0且且ZFZF1 1,循环到标号,循环到标号labellabelLOOPNZ/LOOPNE labelLOOPNZ/LOOPNE label;CXCXCXCX1 1,;CX0CX0且且ZFZF0 0,循环到标号,循环到标号labellabelJCXZ labelJCXZ label;CXCX0 0,转移到标号,转移到标号labellabel例例5.50【例例5.50】将将S1和和S2中每个数据依次相加,结果保存在中每个数据依次相加,结果保存在S2中。中。S1DB 0,1,2,3,4S2DB 1,1,1,1,1CLDLEASI,S1LEAD
15、I,ES:S2MOVCX,5;设置循环次数,位于循环体外部设置循环次数,位于循环体外部NEXT:LODSB;将将S1的数据存入的数据存入ALADD AL,ES:DI ;将将S1与与S2对应相加,结果在对应相加,结果在AL中中STOSB;将将AL数据存入数据存入ES:DILOOPNEXT;循环执行,直到循环执行,直到CX-1=0RETdec cxjnz next第 5 章四、子程序指令子程序是完成特定功能的一段程序子程序是完成特定功能的一段程序当当主主程程序序(调调用用程程序序)需需要要执执行行这这个个功功能能时时,采采用用CALL调调用用指指令令转转移移到到该该子子程程序序的的起起始始处执行处
16、执行当当运运行行完完子子程程序序功功能能后后,采采用用RET返返回回指指令令回到主程序继续执行回到主程序继续执行演示演示演示演示第 5 章CALL 指令格式指令格式指令格式说说明明CALL CALL LABELLABEL段段内内调调用用子子程程序序LABELLABEL。原原IPIP指指针针进进栈栈保保护护。最最常常见见的的一一种种CALLCALL指指令格式。令格式。CALL CALL r16/m1r16/m16 6段段 内内 调调 用用,跳跳 转转 到到r16/m16r16/m16中中的的数数据据所所对对应应的的地地址址处处执执行行。原原IPIP指指针进栈针进栈保保护护。CALL CALL F
17、AR FAR PTR PTR LABELLABEL段段间间调调用用子子程程序序。子子程程序序与与主主程程序序在在不不同同的的段段,故故调调用用时时原原CSCS、IPIP依次依次进栈进栈保保护护。CALL CALL FAR FAR PTR PTR memmem段段间间调调用用,调调用用时时原原CSCS、IPIP依依次次进进栈栈保保护护。子子程程序序位位置置IP=IP=memmem,CS=mem+2CS=mem+2。第 5 章子程序调用指令CALL指令需要保存返回地址指令需要保存返回地址:n段内调用段内调用入栈偏移地址入栈偏移地址IPSPSP2,SS:SPIPn段间调用段间调用入栈段地址入栈段地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理 第5章5.2.5控制转移类指与处理器控制指 微机 原理 5.2 控制 转移 处理器
限制150内