汇编教程条件转移指令

汇编教程条件转移指令

ID:37423153

大小:594.10 KB

页数:18页

时间:2019-05-12

汇编教程条件转移指令_第1页
汇编教程条件转移指令_第2页
汇编教程条件转移指令_第3页
汇编教程条件转移指令_第4页
汇编教程条件转移指令_第5页
资源描述:

《汇编教程条件转移指令》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1汇编语言程序设计条件转移指令指定的条件cc如果成立,程序转移到由标号label指定的目标地址去执行指令;条件不成立,则程序将顺序执行下一条指令操作数label是采用短转移,称为相对寻址方式JccJcclabel;条件满足,发生转移:IP←IP+8位位移量;条件不满足,顺序执行相对寻址方式Jcc指令的操作数label是一个标号一个8位位移量Jcc指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移,且距当前IP地址-128~+127个单元的范围之内,属于段内短距离转移相对寻址方式Jcc指令为2个字节,

2、条件不满足时的顺序执行就是当前指令偏移指针IP加2JccJcc指令的分类不影响标志,但要利用标志。根据利用的标志位不同,16条指令分成3种情况:1.判断单个标志位状态2.比较无符号数高低3.比较有符号数大小Jcc条件转移指令中的条件ccJcc1.判断单个标志位状态这组指令单独判断5个状态标志之一⑴JZ/JE和JNZ/JNE:利用零标志ZF,判断结果是否为零(或相等)⑵JS和JNS:利用符号标志SF,判断结果是正是负⑶JO和JNO:利用溢出标志OF,判断结果是否产生溢出⑷JP/JPE和JNP/JPO:利用奇偶

3、标志PF,判断结果中“1”的个数是偶是奇⑸JC/JB/JNAE和JNC/JNB/JAE:利用进位标志CF,判断结果是否进位或借位Jcc例:JZ/JNZ指令testal,80h;测试最高位jznext0;D7=0(ZF=1),转移movah,0ffh;D7=1,顺序执行jmpdone;无条件转向next0:movah,0done:...testal,80h;测试最高位jnznext1;D7=1(ZF=0),转移movah,0;D7=0,顺序执行jmpdone;无条件转向next1:movah,0ffhdone

4、:...例:JS/JNS指令;计算

5、X-Y

6、(绝对值);X和Y为存放于X单元和Y单元的16位操作数;结果存入resultmovax,Xsubax,Yjnsnonnegnegax;neg是求补指令nonneg:movresult,ax例:JO/JNO指令;计算X-Y;;X和Y为存放于X单元和Y单元的16位操作数;若溢出,则转移到overflow处理movax,Xsubax,Yjooverflow...;无溢出,结果正确overflow:...;有溢出处理例:JP/JNP指令andal,7fh;最高位置“0”,

7、同时判断“1”的个数jnpnext;个数已为奇数,则转向nextoral,80h;否则,最高位置“1”next:...;设字符的ASCII码在AL寄存器中;将字符加上奇校验位;在字符ASCII码中为“1”的个数已为奇数时;则令其最高位为“0”;否则令最高位为“1”例:JC/JNC指令xoral,al;AL=0,CF=0again:testbx,0ffffh;等价于cmpbx,0jenextshlbx,1jncagainincaljmpagainnext:...;AL保存1的个数;记录BX中1的个数记录BX中

8、“1”的个数xoral,al;AL=0,CF=0again:cmpbx,0jznextshlbx,1;也可使用shrbx,1adcal,0jmpagainnext:...;AL保存1的个数另一种做法比较无符号数高低无符号数的大小用高(Above)低(Below)表示利用CF确定高低、利用ZF标志确定相等(Equal)两数的高低分成4种关系:⑴低于(不高于等于):JB(JNAE)⑵不低于(高于等于):JNB(JAE)⑶低于等于(不高于):JBE(JNA)⑷不低于等于(高于):JNBE(JA)Jcc例:比较无符

9、号数cmpax,bx;比较ax和bxjnbnext;若ax≥bx,转移xchgax,bx;若ax<bx,交换next:...比较有符号数大小有符号数的大(Greater)小(Less)需要组合OF、SF标志,并利用ZF标志确定相等(Equal)两数的大小分成4种关系:⑴小于(不大于等于):JL(JNGE)⑵不小于(大于等于):JNL(JGE)⑶小于等于(不大于):JLE(JNG)⑷不小于等于(大于):JNLE(JG)Jcc例:比较有符号数cmpax,bx;比较ax和bxjnlnext;若ax≥bx,转移xc

10、hgax,bx;若ax<bx,交换next:...16位数转换为ASCII码实验内容1、设X,Y为存放在X,Y单元中的16位操作数,判断X>Y,若成立执行X-Y,否则计算

11、X-Y

12、,并把结果存入RESULT中2、假设有100个16位无符号数存放在数据段,把它们的和求出来,作为32位数存在DX和AX中3、数据段有一个首地址为ARRAY的N字数组,要求测试其中正数、0、负数的个数,正数个数放在DI中,0的个数放在SI

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。