




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter5,BranchingandLooping分支和循环,Textbook:7ProgramLogicandControl,Outline,Theobjectiveofthischapteristodescribethestructuressuchas:ifthen,ifthenelse(分支结构程序设计)while,until,for(循环结构程序设计),Transfer(控制转移类指令),Instructionsthatcantransfercontroloutsidethenormalsequentialflow.BychangingtheoffsetvalueinIPorchangingthevalueofIPandCS.jmp,jcc,loop,控制转移类指令通过改变IP(或同时修改CS和IP)值,实现程序执行顺序的改变,Short,nearandfaraddress,Theassemblersupportsthreetypesofaddressesthataredistinguishbytheirdistancefromthecurrentlyexecutingaddress.,3typesofaddresses-short,Ashortaddress,limitedtoadistanceof-128(80H)to127(7FH)bytes.Ashortaddressisreachedbya1-byteoffset.,3typesofaddresses-near,Anearaddress,limitedtoadistanceof-32768(8000H)to32767(7FFFH)byteswithinthesamesegment.Anearaddressisreachedbya1-wordor2-wordoffset.,3typesofaddresses-far,Afaraddress,whichmaybewithinthesamesegmentatadistanceover32K,orinanothersegment.Afaraddressisreachedbyasegmentaddressandanoffset.,Transferinstructions(控制转移类指令),Unconditional(无条件转移指令)Jump(跳转)Procedure(过程)Interrupt(中断)Conditional(条件转移指令)Looping(循环指令),UnconditionalJumps8086无条件转移,5.1,JMPInstruction,Unconditional:theoperationtransferscontrolunderallcircumstances.Operation:(IP)EB03,Examples,Theassemblergeneratesonebytefortheoperation(EB)andonebytefortheoperand.,Examples,Jmps-jmp000B-EB03,JMPshort/near/faraddress,UnconditionaltransferinstructionforJMPshort/near/faraddress,JMPInstruction,ForwardjumpBackwardjump,jmpquit;退出程序quit:movax,4c00h;退出并返回dosint21h,Examples,forever:movax,0jmpforever;重复,Examples,TransfertypeofJMP,Directaddressingvs.IndirectaddressingIntra-segmenttransfervs.Inter-segmenttransfer,Intra-segmentvs.Inter-segment,实际编程时,汇编程序会根据目标地址的距离,自动处理成短转移、近转移或远转移程序员可用操作符short、nearptr或farptr强制,Directaddressingvs.Indirectaddressing,Directaddressing(直接寻址方式)转移地址象立即数一样,直接包含在指令的机器代码中,就是直接寻址方式Indirectaddressing(间接寻址方式)转移地址在寄存器或主存单元中,就是通过寄存器或存储器的间接寻址方式,用标号表达,用寄存器或存储器操作数表达,TransfertypeofJMP,4types,Types,Intra-segmentdirectaddressing段内转移直接寻址Intra-segmentindirectaddressing段内转移间接寻址Inter-segmentdirectaddressing段间转移直接寻址Inter-segmentIndirectaddressing段间转移间接寻址,Intra-segmentdirectaddressing,jmpagain;transferagain:deccx;label“again”jmpoutput;transferoutput:movresult,al;label“output”,Examples,实际为相对寻址,JMPlabel;IPIP+shift,(2)Intra-segmentindirectaddressing,jmpax;IPAXjmpwordptr2000h;IP2000h,Examples,JMPr16/m16;IPr16/m16,Inter-segmentdirectaddressing,jmpfarptrotherseg;othersegisinanothersegment,Examples,JMPfarptrlabel;IPlabel的偏移地址;CSlabel的段地址,Inter-segmentdirectaddressing,jmpfarptrs,Examples,Inter-segmentIndirectaddressing,movwordptrbx,0movwordptrbx+2,1500hJMPfarptrbx;转移到1500h:0,Examples,JMPfarptrmem;IPmem,CSmem+2,JMP指令:段内相对转移,JMP指令:段内寄存器间接转移,JMP指令:段间直接转移,JMP指令:段间间接转移,ConditionalJumps,CompareInstructions,andifStructure条件转移、比较指令和if结构,5.2,Conditionaljumpinstruction,Theprocessorsupportsavarietyofconditionaljumpinstructionsthattransfercontroldependingonsettingsintheflagregister.,DECCXJNZA20;testthesettingofZF,Examples,label:Jnnnshort-address;条件满足,发生转移:IPIP8位位移量;条件不满足,顺序执行,Conditionaljumpinstruction:CMP,cmpal,100jbbelow;ifal100,jumptobelowsubal,100;else(al100),alal-100below:,执行比较指令之后,可以根据标志判断两个数是否相等、大小关系等,Examples,Conditionaljumpinstruction,Forthe8086286,thedistanceforaconditionaljumpmustbeashort,within128to+127byte.Iftheoperationexceedsthelimit,theassemblerissuesamessage“relativejumpoutofrange”.The80386andlaterprocessorsallowreachinganyaddresswithin32K(=215).,label:Jnnnshort-address,JnnnInstructions,JnnninstructionstransfercontroldependingonsettingsintheFlagsregister.(Table)notaffectflags1.JumpsbasedonUnsigned(logical)data2.Jumpbasedonsigned(Arithmetic)data3.Specialarithmetictests1比较无符号数高低2比较有符号数大小3判断单个标志位状态及其他,JnnnInstructions,实际虽然指令只有16条,但却有30个助记符采用多个助记符,只是为了方便记忆和使用,JumpsbasedonUnsigned(logical)data(无符号数高低),Above-Equal-Below,JumpsbasedonUnsigned(logical)data,cmpax,bxjnbnext;jumpifaxbxxchgax,bxnext:.,Examples,JumpsbasedonSigned(Arithmetic)data(有符号数大小),Greater-Equal-Less,JumpsbasedonSigneddata,cmpax,bxjnlnext;jumptonextifaxbxxchgax,bxnext:.,Examples,Specialarithmetictests,JZ/JNZ,testal,80h;测试最高位jznext0;D70(ZF1),转移movah,0ffh;D71,顺序执行jmpdone;无条件转向next0:movah,0done:.testal,80h;测试最高位jnznext1;D71(ZF0),转移movah,0;D70,顺序执行jmpdone;无条件转向next1:movah,0ffhdone:.,Examples,JS/JNS,;计算|XY|(绝对值);X和Y为存放16位操作数的变量;结果存入变量resultmovax,Xsubax,Yjnsnonnegnegax;neg是求补指令nonneg:movresult,ax,Examples,JO/JNO,;计算XY;X和Y为存放16位操作数的变量;若溢出,则转移到overflow处理movax,Xsubax,Yjooverflow.;无溢出,结果正确overflow:.;有溢出处理,Examples,JP/JNP,;设字符的ASCII码在AL寄存器中;将字符加上奇校验位;在字符ASCII码中为“1”的个数已为奇数时;则令其最高位为“0”;否则令最高位为“1”andal,7fh;最高位置0,同时判断1的个数jnpnext;个数已为奇数,则转向nextoral,80h;否则,最高位置“1”next:.,Examples,JC/JNC,;记录BX中1的个数xoral,al;AL0,CF0again:testbx,0ffffh;等价于cmpbx,0jenextshlbx,1jncagainincaljmpagainnext:.;AL保存1的个数,Examples,记录BX中“1”的个数,xoral,al;AL0,CF0again:cmpbx,0jznextshlbx,1;也可使用shrbx,1adcal,0jmpagainnext:.;AL保存1的个数,Examples,法2,JCXZ,JCXZjustteststhecontentsoftheCXregisterforzero,notaffecta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年精神科心理评估与干预技术考核答案及解析
- 实践对新质生产力的重要性
- 2025年放射肿瘤科学科放射肿瘤治疗计划考核答案及解析
- 2025年内分泌代谢疾病诊断与治疗方案考核测试卷答案及解析
- 2025年肾脏疾病患者营养支持方案设计考试卷答案及解析
- 2025年口腔颌面外科手术规范操作实践答案及解析
- 2025年全科医生对高血压病患者的常规检查简述答案及解析
- 2025年职业病防治学职业健康检测实操考核答案及解析
- 县域新质生产力:发展路径与研究课题
- 工会推动新质生产力实践
- 2025年监理工程师继续教育试卷及答案
- 2020-2025年注册土木工程师(水利水电)之专业基础知识通关考试题库带答案解析
- 2025年物流师(初级)物流企业物流信息化信息安全认证员培训鉴定试卷
- 2.1人的社会化 教案 2025-2026学年统编版道德与法治八年级上册
- 2025入团考试题库(完整版)附答案详解
- 2025年北京市中考物理真题(含答案)
- 外科手术抗生素使用原则
- 2025年环卫清扫职称考试题及答案
- 《酒店营销与数字化实务》课件5模块五课件
- 2025年秋期新课标人教版六年级上册数学全册教案(核心素养教案)
- 《“忆峥嵘岁月传红色抗战精神”党课教育主题活动》课件
评论
0/150
提交评论