资源描述:
《《循环与分支程序》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8/12/20211第六章循环与分支程序设计6.1分支程序设计6.2循环程序设计6.3多重循环程序设计6.4子程序8/12/202126.1分支程序设计6.1.1标号标号:用来说明可执行指令在汇编语言程序中的位置。和变量类似,实质上是一个地址值。可以作为转移指令(或CALL)的操作数。属性:段属性、位移量属性和距离属性。注意:如果一个标号只在标号定义的段中用JMP或条件 转移指令(或CALL)来访问,需要将标号的距离属 性定义为NEAR;如果一个标号能被其他段中的JMP指令(或CALL)来访问,那么需要将这个标号
2、的距离定义为FAR。8/12/202131、定义距离属性为NEAR的标号1)隐式说明:即在标号后面加上冒号,放在指令的前面。例如:L1:MOVAX,[SI]NEXT:MOCAX,BXL1和NEXT都是标号名,它们的距离属性均为NEAR。2)显式说明:即用LABEL伪指令或在EQU指令中用THIS操作符明显的说明。例如:L2LABELNEARMOVDX,CXL3EQUTHISNEARORDL,30H标号L2和L3的距离属性均为NEAR。8/12/202142、定义距离属性为FAR的标号例如:L4LABELFARMOVA
3、X,CXL5EQUTHISFARORDL,30H3、同时定义距离属性为FAR和NEAR的标号例如:L6LABELFARL7:ANDAL,0FH或者:L6EQUTHISFARL7:ANDAL,0FH8/12/202156.1.2无条件转移指令JMP指令(无条件转移)格式:JMP目的操作数功能:JMP指令无条件地控制转移至目标单元(目的操作数).JMP指令具体格式有以下五种:1、段内直接转移格式:JMP标号名;标号为NEAR属性这个标号是在本段内某一指令的前面,后面缀以冒号来定义其位置的(位移量)。8/12/20216例
4、如:JMPL2∶L1:ADDAX,100L2:MOVCX,30∶JMPL12、段内直接短转移格式:JMPSHORT标号名例如:∶JMPSHORTL1L2:MOVDX,CX∶L1:ORDL,30H∶8/12/202173、段内间接转移格式:JMP地址表达式例如:JMPBX;把控制转向CS:BXJMPVAR_WORD;把控制转向VAR_WORD存储单元中存放的地址处4、段间间接转移格式:JMP双字存储变量功能:将控制转移到双字存储变量指定的地址,即将双字存储变量第二个字作为段地址,第一个字为偏移地址处继续执行。8/12/
5、202185、段间直接转移格式:JMP标号;标号为FAR属性例如:CODE1SEGMENT∶JMPCODE2_NEXT∶CODE1ENDSCODE2SEGMENT∶CODE2_NEXTLABELFAR∶CODE2ENDS8/12/202196.3.3比较指令CMP指令(比较指令)格式:CMP目的操作数,源操作数功能:CMP指令与SUB指令一样执行减法操作,即目的操作数减去源操作数,但其结果不送回目的操作数。执行指令后,两个操作数保持原值不变。只是影响标志位:OF,CF,PF,SF,ZF,AF.注意:CMP指令后面往往
6、会跟着一条条件转移指令,根据比较结果产生不同的程序分支。8/12/2021106.1.4条件转移指令8086/8088提供了很多条件转移指令,而且往往一条指令有好几种助记符表示形式,归纳主要分成两大类:·判断两数大小的条件转移指令。·测试单个标志位的条件转移相令。1、比较两个无符号数,判断无符号数大小的条件转移指令1)JA/JNBE(jumpifnotbloworequal,orabove)JA指令(高于转移)JNBE指令(不低于等于转移)这是一条条件转移指令的两种助记符。当两个无符号数进行比较时,如果A>B成立则转
7、移。8/12/2021112)JBE/JNA(jumpifbloworequal,ornotabove)JBE指令(低于或等于转移)JNA指令(不高于转移)当两个无符号数进行比较时,如果A≤B成立,则转移3)JAE/JNB(jumpifnotblow,oraboveorequal)JAE指令(高于等于转移)JNB指令(不低于转移)当两个无符号数相比较时,如果A≥B成立,则转移。4)JB/JNAE(jumpifblow,ornotaboveorequal)JB指令(低于转移)JNAE指令(不高于等于转移)当两个无符号数
8、相比较时,如果A