1、浙工大信息学院,第三章 指令系统,3.2.5控制转移指令,浙工大信息学院,分支 循环 子程序 中断,浙工大信息学院,分支转移指令,1、无条件转移指令段内转移:只需改变IP 段间转移:需改变CS、IP格式: JMP 目标标号,浙工大信息学院,(1)段内转移段内直接转移:eg:JMP (NEAR PTR)addr1 短转移:128127 近转移:32k 段内间接转移:eg:JMP BXJMP WORD PTR BX(将转移目标地址放在寄存器或存储器的某2个连续单元中),浙工大信息学院,(1)段间转移段间直接转移: eg:JMP FAR PTR addr1 段间间接转移: eg:JMP DWORD
2、PTR BX,浙工大信息学院,2、条件转移指令,概念:判断条件,满足,转移到目标地址,否则顺序执行条件:状态标志位CF、PF、ZF、SF、OF格式: JXX 目标标号概念:所有的转移指令都是短转移,范围-128127,浙工大信息学院,条件转移指令,(1)根据单个标志位转移。用于测试某次运算结果,ZF JZ/JE addr JNZ/JNE addr,PF JP addr JNP addr,SF JS addr JNS addr,OF JO addr JNO addr,CF JC addr JNC addr,浙工大信息学院,(2)两个无符号数比较。根据比较结果转移CMP +转移指令CMP A, B
3、 ;AB,浙工大信息学院,(2)两个有符号数比较。根据比较结果转移CMP A, B ;AB,OF SF=0,OF SF=0,OF SF=1,OF SF=1,浙工大信息学院,3、循环控制指令,循环次数: CXLOOP 目标标号 (CX)1CX判(CX) 0,继续循环,否则执行下一条指令 LOOPE/ LOOPZ 目标标号 循环条件: (CX) 0且ZF=1 LOOPNE/LOOPNZ 目标标号 循环条件: (CX) 0且ZF=0,浙工大信息学院,JCXZ 目标标号 不对CX内容进行操作,只根据CX判断,在循环之前先判(CX) 0,已防止初始化时(CX)=0.例: JCXZ NEXTLOP: LO
4、OP LOPNEXT: ,浙工大信息学院,举例,已知有一个100个字节的数组,首元素偏移地址为0100h,要求从该数组中找出$字符,并把$字符前面所有元素相加,结果保留在AL中。,浙工大信息学院,4、子程序,调用格式: CALL 过程名 功能:返回地址入栈,转入执行子程序与JMP相似,有4种寻址方式 段内调用:返回地址的IP,后转移到子程序(直接,间接) 段间调用:返回地址的CS,IP,后转移到子程序(直接,间接),浙工大信息学院,(1)段内直接调用 CALL (NEAR PTR) PROCNAME 说明: (SP)-2SP IP(SP)+1,SP) IP=(IP)+D16(2)段内间接调用
5、CALL BX,浙工大信息学院,(1)段间直接调用 CALL FAR PTR PROCNAME 说明: (SP)-2SP CS(SP)+1,SP) (SP)-2SP IP(SP)+1,SP) F-PROC的偏移地址IP F-PROC的段地址CS(2)段内间接调用 CALL DWORD PTRDI,浙工大信息学院,返回指令,与CALL想呼应,放于过程的出口 作用:返回主程序,即返回地址出栈,继续执行主程序中CALL后的一条指令,IP 或IPCS,浙工大信息学院,格式: RETRET n ;n位偶数,16位,执行完RET后,(SP)+nSP应用场合:当程序通过堆栈传递参数时,子程序用完参数后,返回时应当弹出堆栈作废,已保持堆栈的平衡。 段内返回:IP 段间返回:IP CS,浙工大信息学院,3.3.6 处理机控制指令,1、标志处理指令 对CF CLC STC CMC 对DF CLD STD,对IF CLI STI2、其它处理指令 NOP HLT,浙工大信息学院,作业,P121 3.55, 3.85, 3.88,