![3[1].5 控制转移指令_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-3/30/b241db07-ca69-49b8-a4cc-499e36d19461/b241db07-ca69-49b8-a4cc-499e36d194611.gif)
![3[1].5 控制转移指令_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-3/30/b241db07-ca69-49b8-a4cc-499e36d19461/b241db07-ca69-49b8-a4cc-499e36d194612.gif)
![3[1].5 控制转移指令_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-3/30/b241db07-ca69-49b8-a4cc-499e36d19461/b241db07-ca69-49b8-a4cc-499e36d194613.gif)
![3[1].5 控制转移指令_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-3/30/b241db07-ca69-49b8-a4cc-499e36d19461/b241db07-ca69-49b8-a4cc-499e36d194614.gif)
![3[1].5 控制转移指令_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-3/30/b241db07-ca69-49b8-a4cc-499e36d19461/b241db07-ca69-49b8-a4cc-499e36d194615.gif)
已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
复习,1、逻辑运算指令:ANDORXORNOTTEST,2、移位指令:,2,移位指令小结,保存其它指令移入CF的值,带进位位循环左移指令RCL带进位位循环右移指令RCR,将操作数的高低4位或8位(字节)数据相交换。,循环左移指令ROL循环右移指令ROR,将操作数乘以2的CL次。将补码数除以2的CL次。,算术左移指令SAL算术右移指令SAR,将操作数乘以2的CL次。将操作数除以2的CL次。,逻辑左移指令SHL逻辑右移指令SHR,主要作用,指令,试分析下面的程序段完成什么功能?MOVCL,04HSHLDX,CLMOVBL,AHSHLAX,CLSHRBL,CLORDL,BL,;04HCL,;DX逻辑左移4位,相当于DX;低4位清零,DX=0H,;AHBL,;AX逻辑左移4位,相当于AX低4位;清零,AX=0H,;BL逻辑右移4位,相当于AH=0H,;现DL的高4位是原来DL的低4位,;现DL的低4位是原AH的高4位,所以,完成将DX,AX组成的双字逻辑左移4位。,4,3.6控制转移类指令,1、无条件转移指令2、条件转移指令3、循环控制指令4、调用和返回指令,5,控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变,用于实现分支、循环、过程等程序结构,常用指令重点掌握:JMP/Jcc/LOOPCALL/RET一般了解:INTn/IRETINTOLOOPZ/LOOPNZ,6,1无条件转移指令,指令格式:JMPlabel;程序转向label标号指定的地址,指令功能:使程序转到指定的目标地址处,并从该处开始继续执行,操作数label是要转移到的目标地址(目的地址、转移地址)执行JMP,段内转移、直接寻址;段内转移、间接寻址段间转移、直接寻址;段间转移、间接寻址,JMPSHORTHELLO;转移到目标地址是;HELLO,IP被修改了JMPNEARPTRABC;转移到目标地址ABC,;IP被修改了,7,段内直接近转移(JMPNEARPTRlable):指明在同一段的转移,偏移在32K32KB范围之内,IP的值被改变。,段内转移,段内直接短转移(JMPSHORTlable):指明在同一段内更短距离的转移。目的地址与JMP指令所处地址的距离应在128127B范围之内。,远程转移“FARPTR”:指明要转到另一个逻辑段执行程序,CS和IP都被修改。,(2)段间转移,8,段内转移、直接寻址,JMPlabel;IPIP+位移量位移量是紧接着JMP指令后的那条指令的偏移地址到目标指令的偏移地址的地址位移,实际为相对寻址,jmpagain;转向again处继续执行again:deccx;标号again的指令jmpoutput;转向outputoutput:movbl,al;标号output的指令jmp0120H;直接转向CS:0120H单元,9,段内直接短转移,JMPSHORTHELLOHELLO:MOVAL,3,10,段间直接转移,OP码,JMPFARPTRNEXT_PROG,11,2.条件转移指令,格式:Jcclabel功能:条件满足,转移到目的地址label去执行;条件不满足,顺序执行下一条指令,不影响标志位。,12,相对寻址方式,Jcc指令的操作数label是一个标号条件转移指令的目的地址必须在现行的代码段内一个8位位移量,表示Jcc指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移8位位移量是相对于当前IP的,且距当前IP地址128127个单元的范围之内,属于段内短距离转移,Jcc指令为2个字节,条件不满足时的顺序执行就是当前指令偏移指针IP加2,13,Jcc指令的分类,Jcc指令不影响标志,但要利用标志位。根据利用的标志位不同,16条指令分成3种情况:,(1)判断单个标志位状态(2)比较无符号数高低(3)比较有符号数大小,14,(1)判断单个标志位状态,功能,JCdstJNCdst,JZdstJNZdst,JOdstJNOdst,JPdstJNPdst,JSdstJNSdst,转移条件,条件转移指令,例:JZ/JNZ指令,testal,80h;测试AL的最高位jznext1;D70(ZF1),转移movah,0ffh;D71,顺序执行jmpdone;无条件转向next1:movah,0done:.,testal,80h;测试最高位jnznext2;D71(ZF0),转移movah,0;D70,顺序执行jmpdone;无条件转向next2:movah,0ffhdone:.,例:JS/JNS指令,;X和Y为存放于X单元和Y单元的16位操作数,leasi,Xleadi,Ymovax,sisubax,dijnsnextnegax;neg是求补指令:0axnext:movresult,ax,;计算|XY|(绝对值);结果存入result单元,例:JO/JNO指令,;计算XY;若溢出,则转移到overflow处理,leasi,Xleadi,Ymovax,sisubax,dijooverflow.;无溢出,结果正确overflow:.;有溢出,出错处理,;X和Y为存放于X单元和Y单元的字操作数,例:JP/JNP指令,;设字符的ASCII码在AL寄存器中,andal,7fh;最高位先置“0”,并判断“1”的个数jnpnext;个数已为奇数,则转向nextoral,80h;否则,最高位置“1”next:.,;若该字符ASCII码中为“1”的个数已为奇数时则令其最高位为“0”;否则令最高位为“1”;将字符加上奇校验位,例:JC/JNC指令,;记录BX中1的个数方法1,xoral,al;AL0,CF0again:cmpbx,0jznextshlbx,1;也可使用shrbx,1ADCal,0;ALAL+(CF)jmpagainnext:.;AL保存1的个数,20,记录BX中“1”的个数方法2,xoral,alagain:testbx,0ffffhjznextshlbx,1jncagainincaljmpagainnext:.,;AL0,CF0,;等价于cmpbx,0,;AL保存1的个数,;若bx0,转到next,;否则,bx逻辑左移1位,;CF=0,转到again,;CF=1,al加1,;无条件转到again,21,(2)比较无符号数高低,无符号数的大小用高(Above)、低(Below)表示,利用CF确定高低,利用ZF标志确定相等(Equal),两数的高低分成:低于(不高于等于):JB(JNAE/JC)不低于(高于等于):JNB(JAE/JNC)低于等于(不高于):JBE(JNA)不低于等于(高于):JNBE(JA)相等(等于零):JE/JZ不相等(不等于零):JNE/JNZ,22,(3)比较有符号数大小,有符号数的大小用大(Greater)小(Less)表示,利用ZF标志确定相等(Equal),两数的大小分成4种关系:小于(不大于等于):JL(JNGE)不小于(大于等于):JNL(JGE)小于等于(不大于):JLE(JNG)不小于等于(大于):JNLE(JG),23,JccM,N,MN无符号数(A,B)有符号数(G,L)=)JB(JNAE)JL(JNGE))JBE(JNA)JLE(JNG)(=(B)时转移JNE不等于(AB)时转移,例:X50,转到TOO_HIGH;计算X-Y:溢出转到OVERFLOW,否则|X-Y|RESULT,MOVAX,XCMPAX,50JGTOO_HIGHSUBAX,YJOOVERFLOWJNSNONNEGNEGAXNONNEG:MOVRESULT,AXTOO_HIGH:OVERFLOW:,32,3.循环指令(loop),控制某程序段反复执行的次数。循环指令默认利用CX计数器,方便实现计数循环的程序结构label操作数采用相对寻址方式,LOOPlabel;CXCX1,;CX0,循环到标号label,LOOPZlabel;CXCX1,;CX0且ZF1,循环到标号label,LOOPNZlabel;CXCX1,;CX0且ZF0,循环到标号label,JCXZlabel;CX0,转移到标号label,33,LOOP,格式:LOOPlabel操作:(CX)-1CX;若(CX)0,则转至label处执行;否则退出循环,执行LOOP后面的指令。不影响标志位。,实际上,该指令可以等价两条指令:DECCX;CX1CXJ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五四制 统编版 语文 四年级 上册 7 呼风唤雨的世纪课件
- 电石厂特种设备知识培训课件
- 高级摄影基础知识培训课件
- 电焊经验知识培训总结课件
- 高空坠落应急知识培训课件
- 北京邮电大学考试题库及答案
- 5T4-0108-MEDI0641-antibody-生命科学试剂-MCE
- 新解读《GB-T 26548.6-2018手持便携式动力工具 振动试验方法 第6部分:夯实机》
- 社区戒毒考试题目及答案
- 内保考试题及答案
- 主题班会《反对邪教-从我做起》
- 幕墙预埋件专项施工方案
- HDX8000系列安装配置操作指南
- 白虎汤分析课件
- 山东青年政治学院校徽校标
- 2022版义务教育英语课程标准之学业质量标准与考试评价解读PPT
- EDA课程第3~5章QuartusII Verilog HDL 数字电路设计实现
- (高清正版)JJF(浙)1102-2014生物人工气候箱校准规范
- 完整解读新版《义务教育课程方案》2022年《义务教育课程方案(2022版)》PPT课件
- 《文殊真实名经》
- 幼儿各年龄段发展评估指南
评论
0/150
提交评论