文档详情

第四章-程序设计基本方法.doc

发布:2018-06-30约1.16万字共31页下载文档
文本预览下载声明
PAGE PAGE 26程序设计的基本方法汇编语言程序中,最常见的几种程序结构形式:顺序程序、分支程序、循环程序、子程序。转移指令分支程序设计循环程序设计,循环指令堆栈的概念,进栈、出栈指令子程序的定义、调用、返回;主程序与子程序的参数传递转移指令特点:改变程序的执行顺序,即改变了指令指示器IP的内容。条件转移功能:由上一条指令所设的条件码来判别测试条件,满足条件则转移到指令所指地址去执行,否则循环执行。满足条件时,当前(IP)+符号扩展到16位的位移量→IP。位移范围在-128~127之间。简单条件转移CF标志:JC / JNCJC表示:CF=1时转移。例如两数相减,低于。JNC表示:CF=0时转移。例如两数相减,高于或等于。ZF标志:JZ / JNZJZ表示:结果为0,转移,此时ZF=1。JNZ表示:结果不为0,转移,此时ZF=0。SF标志:JS / JNSJS表示:结果为负,转移,此时SF=1。JNZ表示:结果不为正,转移,此时SF=0。OF标志:JO /JNOJO表示:结果溢出,转移,此时OF=1。JNO表示:结果不溢出,转移,此时OF=0。PF标志:JP / JNP或JPE / JPOJP表示:低8位中1的个数为偶数时转移,此时OF=1。 JNP表示:低8位中1的个数为奇数时转移,此时OF=0。如:两数相加,结果为0,则转移到P2,否则运行P1。YYN … ADD AX, TEMP JZ P2 (P1)P2: …(AX)+TEMP→AX(AX)=0?P1P2无符号数的条件转移此指令跟在比较指令之后,比较的对象为无符号数。结果有:高于、高于等于、低于、低于等于。Above:高于,below:低于,equal:等于。JA / JNBEJA表示:高于则转移。JNBE表示:不低于或等于转移。测试条件:CF∨ZF=0。(分析:a-b≥0,此时CF=0;a-b≠0,此时ZF=0。)JAE / JNBJAE表示:高于等于则转移。JNB表示:不低于则转移。测试条件:CF=0或ZF=1。JB / JNAEJB表示:低于则转移。JNAE表示:不高于且不等于则转移。测试条件:CF=1。JBE / JNAJBE表示:低于等于则转移。JNA表示:不高于则转移。测试条件:CF∨ZF=1。有符号数条件转移比较结果分为4种:大于、大于等于、小于、小于等于。Great:大于,Little:小于,Equal:等于。JG / JNLEJG表示:两数相比,大于,则转移。 JNLE表示:两数相比,不小于且不等于,则转移。测试条件:(SFOF)∨ZF=0。JGE / JNLJGE表示:两数相比,大于等于,则转移。 JNL表示:两数相比,不小于,则转移。测试条件:SFOF=0。JL / JNGEJL表示:两数相比,小于,则转移。 JNGE表示:两数相比,不大于且不等于,则转移。测试条件:SFOF=1。JLE / JNGJLE表示:两数相比,小于等于,则转移。 JNG表示:两数相比,不大于,则转移。测试条件:(SFOF)∨ZF=1。使用转移指令时应注意:CMP比较指令本身无法分别有、无符号数,它比较的是否有符号,由后面的转移指令确定。例: MOV AL, -40H CMP AL, 50H JG L1; 比较的是有符号数,(-40H)<50H,不转移…L1: …若将JG换为JA,就变成无符号数了,此时,(AL)=(-40H)补=C0H>50H,转移。转移指令的转移范围-128~127。无条件转移指令功能:无条件地转移到目的地址执行。可以分为两类:段内、段间。段内直接近转移格式:JMP NEAR PTR 标号;功能:(IP)+16位偏移量→IP。转移范围32K。段内间接转移格式:JMP WORD PTR OPD;功能:(OPD)→IP。如:JMP WORD PTR [BX+TABLE]作用:([BX+TABLE])→IP,偏移地址[BX+TABLE]所指单元的内容送IP。假定:(DS)=2000H,(BX)=1256H,TABLE=20A1H,(232F7H)=3280H。则:PA = (DS)左移4位+(BX)+TABLE = 232F7H执行后:(IP)=3280H段间直接转移格式:JMP FAR PTR 标号;功能:标号的偏移地址→IP,标号所在段地址→CS。如:C2C2C1C1 SEGMENT…JMP FAR PTR NEXT…C1 ENDSC2 SEGMENT …NEXT:…操作→新IP→新CS←CS: IP段间间接转移格式:JMP DWORD PTR OPD功能:(OPD)→IP,(OPD+2)→CS。如:JMP DWORD PTR [BX]([BX])→IP,([BX]+2)→CS。注意是偏移地址[B
显示全部
相似文档