文档详情

5(程序控制指令、处理器控制指令)(楼俊君).ppt

发布:2018-09-15约1.19万字共57页下载文档
文本预览下载声明
4.3.5 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 过程调用和返回指令 中断指令 控制转移类指令表 续表(2) 续表(3) 续表(4) 1.转移指令 ① 段内直接转移 无条件段内转移 直接转移: JMP Lable 转移目标地址: 段基地址CS不变; 偏移地址IP=当前IP+位移量(16位) ②段内间接转移 转移的目标地址由寄存器或存储单元的内容给出。 例1:JMP SI ; 近距离 若(SI)=1200H,则指令执行后,(IP)=1200H,于是转向代码段的偏移地址1200H处开始执行。 注意:目标地址以段内偏移的形式给出,而不是相对于IP的位移量,所以它是一个16位的操作数。 无条件段内转移 间接转移: JMP BX JMP WORD PTR[BX] 例2:JMP [BX+DI] 设指令执行前: (DS)=3000H,(BX)=1300H, (DI)=1200H,(32500H)=2350H; 则指令执行后:(IP)=2350H 在汇编语言中,段内间接寻址通常写成: JMP WORD PTR[BX+DI] 表示所取得的目标地址是一个字。 ③段间直接转移 在指令中直接给出要转移到的目的段地址和偏移地址。 例:JMP 2000H:1000H ;远距离 执行时,(IP)←1000H,(CS)←2000H 注意:直接地址为符号地址时,段间直接转移指令中的符号地址前应加操作符FAR PTR。 例:JMP FAR PTR far_label ;远距离 其中的far_label为远类型的标号。 无条件段间转移 直接转移: JMP FAR PTR Lable ④段间间接转移 无条件段间转移 间接转移: JMP DWORD PTR[BX] (2)条件转移指令 - JXX ① 根据单个标志位设置的条件转移指令 JB/JC ;低于,或CF=1, 则转移 JNB/JNC/JAE ;不低于,或CF=0,高于或等于, 则转移 JP/JPE ;奇偶标志PF=1(偶), 则转移 JNP/JPO ;奇偶标志PF=0(奇), 则转移 JZ/JE ;结果为零(ZF=1), 则转移 JNZ/JNE ;结果不为零(ZF=0), 则转移 JS ;SF=1, 则转移 JNS ;SF=0, 则转移 JO ;OF=1, 则转移 JNO ;OF=0, 则转移 ② 根据组合条件设置的条件转移指令 判断有符号数的大小 ③根据CX内容来决定是否转移的转移指令 JCXZ label 若(CX)=0,则转移到label处开始执行。 例1:测试AL 中的D4位,如果D4=1,则转移到标号LOP1所指示的位置。 TEST AL ;测试AL的D4位,其 他位屏蔽 JNZ LOP1;若D4=1,则肯定整个结果不等于0,故ZF=0,转移到LOP1 … ;若D4=0,则顺序执行本处语句 LOP1: … ;标号LOP1位置 例2:比较有符号数0FEH和01H的大小,把大的送到AL寄存器中。 MOV AL,0FEH ;AL←0FEH CMP AL,01H ;和01H比较 JG EXIT1 ;当OFEH大于01H时,转移到EXIT1标号所处位置 MOV AL,01H ;不转移,若OFEH大于等于01H,则将01H送到AL中 EXIT1: … ;处理完毕,结束本判断 2.循环控制指令 用在循环程序中以确定是否要继续循环。 循环次数通常置于CX中。 转移的目标应在距离本指令-128~+127的范围之内(短跳转)。 循环控制指令不影响标志位。 (1) LOOP 格式:LOOP label 类比 串前缀REP 操作:(CX)-1→CX; 若(CX)≠0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。 注:LO
显示全部
相似文档