资源描述:
《(最新)第06章分支结构程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第六章分支结构程序6.1分支结构程序的引出6.2转移指令6.3分支结构程序设计6.4多分支结构程序设计6.1分支结构程序的引出用计算机处理问题过程中,总是要求计算机能做出各种逻辑判断,并根据判断的结果,做相应的处理。例如,火车站用计算机计算托运行李的托运费,当旅客行李重量小于或等于20kg时,收费0.2元/kg,当行李重量超过20kg时,20kg以内部分0.2元/kg,超出部分,收费0.3元/kg。这个处理过程,可归纳为下面数学表达式:0.2w(w≤20kg)0.2*20+0.3*(w-20)(w>20kg)
2、P={6.2转移指令6.2.1无条件转移指令6.2.2条件转移指令6.2.1无条件转移指令指令汇编格式:JMPtarg操作:段内转移:IP←目标的偏移地址段间转移:IP←目标的偏移地址CS←目标所处代码段的基址受影响的状态标志位:无说明:指令中的targ可以是直接标号、寄存器间接或存储器间接寻址形式。6.2.1无条件转移指令(1)段内转移(NEAR)1)段内直接转移JMPLABEL_N;LABEL_N在当前代码段JMPSHORTLABEL_N;LABEL_N在当前代码段,且在-128~127范围内;例:6.
3、2.1无条件转移指令CSEGSEGMENTASSUMECS:CSEGSTART:JMPL1JMPSHORTL2JMPL2JMPSTARTL2:NOPORGL2+100HL1:NOPCSEGENDSEND6.2.1无条件转移指令0000CSEGSEGMENTASSUMECS:CSEG0000E9010ARSTART:JMPL10003EB05JMPSHORTL20005EB0390JMPL20008EBF6JMPSTART000A90L2:NOP010AORGL2+100H010A90L1:NOP010BCSEGEND
4、SEND6.2.1无条件转移指令(1)段内转移(NEAR)2)段内寄存器间接转移JMPAX3)段内存储器间接转移JMP[SI]JMPWORDPTR[BX+DI+1000H]6.2.1无条件转移指令(2)段间转移(FAR)1)段内直接转移JMPLABEL—F2)短内存储器直接转移LABEL_DDD12345678HJMPLABEL_DJMPDWORDPTR[BX]6.2.2条件转移指令条件转移指令是根据CPU中状态标志位的状态决定程序执行的流程,既可能产生程序转移,也可能不产生程序转移。条件转移指令是以对不同的
5、状态标志的测试为条件。如果条件成立,则控制转移到指令中所给出的转移目标。条件不成立,程序将顺序执行。所有的条件转移指令均为短(short)转移。6.2.2条件转移指令1.根据单标志转移的指令EvenOdd6.2.2条件转移指令2.根据两数(A,B)的大小关系转移的指令(1)使用该指令前用过比较(CMPA,B)、减法(SUBA,B、SBBA,B)指令。(2)A与B的关系共有6种:ABA≠B(3)比较转移时分无符号数和带符号数。例如:A=11111111BB=00000001B6.2.2条件转移
6、指令BelowAboveLessGreatEqual6.2.2条件转移指令JNAEJNAJNBEJNBJNGEJNGJNLEJNL6.2.2条件转移指令CMPA,BJLXXXSF^OF=1(SF=1&OF=0,SF=0&OF=1)例:A=81HB=02HCMPA,B结果SF=0,OF=16.3分支结构程序设计-例6.1例6.1设X为单字节带符号整数,且存于ARGX单元,计算结果Y存入RLT单元。X+10(07、8)5X-2(88、SS,AX16:MOVSP,SIZESTK17:MOVAL,ARGX;取X值18:ANDAL,AL;置标志位19:JSABSL;X<0转20:JZMOVE;X=0转21:CMPAL,8;X≤8?22:JLEONE;是,转23:CMPAL,15;X≥15?24:JGEMOVE;是,转25:SALAL,1;计算5X-226:SALAL,127