汇编语言与计算机原理 第六章

汇编语言与计算机原理 第六章

ID:14600507

大小:295.50 KB

页数:24页

时间:2018-07-29

汇编语言与计算机原理 第六章_第1页
汇编语言与计算机原理 第六章_第2页
汇编语言与计算机原理 第六章_第3页
汇编语言与计算机原理 第六章_第4页
汇编语言与计算机原理 第六章_第5页
资源描述:

《汇编语言与计算机原理 第六章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章汇编语言程序设计§6.1分支程序设计分支程序是最基本的程序结构之一。在汇编语言程序设计中,分支结构的实现一般通过CMP、CMPS、TEST等指令,对某寄存器的值或内存单元的值进行测试,测试结果反映到状态标志位,然后由条件转移指令检查状态标志位,确定应当执行下一条指令还是转移。条件转移指令对状态标志位的检查可能只检查某个标志位的值,也可能检查多个标志位的逻辑运算值,如果值为1,则将指令指针IP值修改为转移目标偏移地址;如果值为0,则将下一条指令的偏移地址装入指令指针IP。例如下面程序段,为了检测AX寄存器中是正数还是负数,将AX的值和0相减,执行后相应标志寄存器中的C

2、F、SF、ZF、PF、OF和AF标志位就会按照计算结果置为相应值,例如,如果AX值大于或等于0,SF标志为0,否则,SF标志为1等。指令JGEL1执行的操作是检查逻辑表达式SFXOROF的值。如果值为1,则将指令指针IP值修改为标号L1代表的偏移地址;如果检查结果的值为0,则将下一条指令的偏移地址装入指令指针IP。CMPAX,0JGEL1MOVDL,"-"JMPOUTPUTL1:MOVDL,"+"OUTPUT:MOVAH,02HINT21H一、比较指令CMP测试指令包括CMP、CMPS、TEST指令。TEST指令在第四章已经做过介绍,CMPS指令是串比较指令,待介绍字串处

3、理程序时再做介绍,这里介绍CMP指令指令格式:CMPdest,src;(dest)-(src)指令功能:用目的操作数减去源操作数,但是结果不送回目的操作数。因此,执行后两个操作数的内容均保持不变,而比较结果反映在标志位上。CMP指令的目的操作数可以是寄存器操作数和存储器操作数,源操作数可以是寄存器操作数、存储器操作数和立即数。CMP指令的操作结果将影响大多数标志位,如SF、ZF、AF、PF、CF和OF,常常和条件转移指令结合使用,完成各种条件的判断和相应的程序转移。二、件转移指令条件转移指令是对标志位的进行逻辑检测,如果结果为真值,则转移到指令给出的目的地址,否则执行下一

4、条指令。条件转移指令的目的地址距本转移指令的距离应在-128—127范围内。1.无符号数判断转移指令如果CMP指令中的目的操作数和源操作数作为无符号数处理,可使用下列条件转移指令:JB/JNAEder;目的操作数小于源操作数转移;JNB/JAE/JNCder;目的操作数大于或等于源操作数转移;JBE/JNAder;目的操作数小于或等于源操作数转移;24JNBE/JAder;目的操作数大于源操作数转移。一条机器指令可能有多个助记符号,例如,JB也可以写做JNAE,JB含义是低于(Below)转移,JNAE含义是不大于等于(AboveandEqual)转移,其它指令类似。条件

5、转移指令的内部操作实际上是检测标志位,根据检测的结果确定是执行下一条指令,还是转移到目的地址。上面4条指令检测标志位是:JB/JNAEder;CF=1转移JNB/JAE/JNCder;CF=0转移JBE/JNAder;(CFORZF)=1转移JNBE/JAder;(CFORZF)=0转移2.带符号数判断转移指令如果CMP指令中的目的操作数和源操作数作为带符号数处理,可使用下列条件转移指令:JL/JNGEDER;目的操作数小于源操作数转移;JNL/JGEder;目的操作数大于或等于源操作数转移;SFXOROF=0转移JLE/JNGder;目的操作数小于或等于源操作数转移;J

6、NLE/JGder;目的操作数大于源操作数转移带符号数的条件转移指令对标志位的检测是:JL/JNGEder;(SFXOROF)=1转移JNL/JGEder;(SFXOROF)=0转移JLE/JNGder;(SFXOROF)ORZF=1转移JNLE/JGder;(SFXOROF)ORZF=0转移执行CMPdest,src指令后,对标志位的影响可能有几种情况是,下面仅就指令JL执行进行分析:当dest<src时,有三种情况:①dest≥0,src≥0,dest-src的结果一定为负数,SF=1,这种情况不会溢出,所以OF=0;②dest<0,src≥0,dest-src的结果

7、有两种可能:为负数或者溢出,当结果为负数没有溢出时SF=1,OF=0,当溢出时OF=1,SF=0。;③dest<0,src<0,dest-src的结果一定为负数,并且不会溢出,所以,SF=1,OF=0;所以当dest<src时,(SFXOROF)=1。当dest≥src时,有三种情况:①dest≥0,src≥0,结果一定时正数,并且不会溢出,有SF=0,OF=0;②dest≥0,src<0,当没有溢出时,有SF=0,OF=0;如果dest-src溢出,SF=1,OF=1;③dest<0,src<0,如果没有溢出,结果一定为正数

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

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

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