第03章 指令格式与寻址方式.ppt

第03章 指令格式与寻址方式

* 助记符 转移条件 JA/JNBE CF∨ZF=0 高于/不低于等于 JAE/JNB/JNC CF=0 高于或等于/不低于/无进位 JB/JNAE/JC CF=1 低于/不高于等于/有进位 JBE/JNA CF∨ZF=1 低于或等于/不高于 无符号数比较的结果作为转移条件 两个带符号数比较的结果作为转移条件 助记符 转移条件 JG/JNLE (SF⊕OF)∨ZF=0 大于/不小于等于 JGE/JNL SF⊕OF=0 大于或等于/不小于 JL/JNGE SF⊕OF=1 小于/不大于等于 JLE/JNG (SF⊕OF)∨ZF=1 小于或等于/不大于 * 【例】比较无符号数FEH和01H的大小,执行下面的指令后,将转移到ABOVE处继续执行指令。 MOV AL, 0FEH CMP AL, 01H JA ABOVE …… ABOVE:…… 【例】比较无符号数大小,将较大的数存放于AX寄存器中。 CMP AX, BX ;(AX)-(BX) JNB NEXT ;若AX=BX,转移到NEXT XCHG AX,BX ;若AXBX,交换 NEXT:… 2)判位转移指令 * 根据当前某标志位的状态来决定是否进行转移 助记符 转移条件 助记符 转移条件 JZ/JE ZF=1 JNZ/JNE ZF=0 JS SF=1 JNS SF=0 JO OF=1 JNO OF=0 JP/JPE PF=1 JNP/JPO PF=0 JC CF=1 JNC CF=0 * MOV AL,80 LEA DI,RESULT MOV CX,30 MOV BL,0 AGN:CMP AL,[DI] JA NEXT INC BL NEXT:INC DI DEC CX JNZ AGN HLT ;停机 例:数据段RESULT开始的30个单元中存放着某班30个同学的某门课程的考试成绩。要求统计成绩在80分以上的学生人数,将其存放在BL中。 3)判CX转移指令 * 助记符 转移条件 JCXZ CX=0 2、循环控制指令 * 三种: LOOP   LOOPE/LOOPZ   LOOPNE/LOOPNZ    * 格式: LOOPxx  符号地址 执行操作 : ①(CX) ← (CX)- 1 此操作不影响标志; ② 检查转移条件xx,满足转向目标地址去执行,不满足执行LOOPxx后一条指令。 助记符 转移条件 不转移条件 LOOP CX≠0 CX=0 LOOPZ CX≠0且ZF=1 CX=0或ZF=0 LOOPNZ CX≠0且ZF=0 CX=0或ZF=1 只允许段内直接短转移方式,跳转范围-128~127 都用CX作为循环计数器 * 【例】设有一个由100个字节组成的数组,其首地址为ARRAY。现预寻找数组中第一个非0元素,未找到则继续,若找到则转至OKK处执行。程序如下: MOV CX, 064H LEA SI, ARRAY-1 AGAIN?: INC SI CMP BYTE PTR [SI], 0 LOOPE AGAIN JNZ OKK ... OKK?: ... 3、过程( 子程序 )调用指令 * 子程序—具有独立功能的独立程序模块。 子程序名 PROC 类型 …… 子程序名 ENDP    过程与调用语句间的位置,有两类: NEAR类:调用指令与过程在同一个段中 FAR类:调用指令与过程不在同一个段中 子程序调用和返回 调用: CALL 返回:  RET 1) CALL调用 * CALL调用指令有4种: 段内直接调用 段间直接调用 段内间接调用 段间间接调用 CALL指令出现在主程序中 (1) 段内直接调用 * 格式: ; (SP)←(SP)-2, ((SP)+1,(SP))←(IP) ; (IP) ← (IP)+D16 CALL 子

文档评论(0)

1亿VIP精品文档

相关文档