编辑: ddzhikoi | 2019-07-08 |
IP←AXJMP WORD PTR [BX];
IP←[BX] 段间直接寻址转移 JMP far ptr label;
IP←label的偏移地址;
CS←label的段基值将标号所在段的段基值作为新的CS值,标号在该段内的偏移地址作为新的IP值;
程序跳转到新的代码段执行JMP FAR PTR OTHERSEG;
远转移到代码段2的otherseg 段间间接寻址转移 JMP far ptr mem ;
IP←[mem],CS←[mem+2]用一个双字存储单元表示要跳转的目标地址.这个目标地址存放在主存中连续的两个字单元中的,低位字送IP寄存器,高位字送CS寄存器MOV WORD PTR [BX],0MOV WORD PTR [BX+2],1500HJMP FAR PTR [BX] ;
转移到1500H:0 2.条件转移指令 Jcc label ;
条件满足,发生转移:IP←IP+8位位移量 ;
条件不满足,顺序执行 指定的条件cc如果成立,程序转移到由标号label指定的目标地址去执行指令;
条件不成立,则程序将顺序执行下一条指令操作数label是采用短转移,称为相对寻址方式 2. 条件转移指令 Jcc指令的操作数label是一个标号一个8位位移量是相对于当前IP的,且距当前IP地址-128~+127个单元的范围之内,属于段内短距离转移Jcc指令为2个字节,条件不满足时的顺序执行就是当前指令偏移指针IP加2 2. 条件转移指令―指令的分类 Jcc指令不影响标志,但要利用标志. 根据利用的标志位不同,19条指令分成4种情况:⑴ 判断单个标志位状态⑵ 比较无符号数高低⑶ 比较有符号数大小⑷ 判断计数器CX为0 助记符 标志位 助记符 标志位 JC CF=1 JA/JNBE CF=0且ZF=0 JNC CF=0 JAE/JNB CF=0或ZF=1 JZ/JE ZF =1 JB/JNAE CF=1且ZF=0 JNZ/JNE ZF =0 JBE/JNA CF=1或ZF=1 JS SF =1 JG/JNLE SF=OF且ZF=0 JNS SF=0 JGE/JNL SF=OF或ZF=1 JP/JPE PF =1 JL/JNGE SF≠OF且ZF=0 JNP/JPO PF =0 JLE/JNG SF≠OF或ZF=1 JO OF =1 JCXZ CX=0 JNO OF =0 实际虽然指令只有19条,但却有31个助记符 采用多个助记符,只是为了方便记忆和使用 判断单个标志位状态 这组指令单独判断5个状态标志之一⑴JZ/JE和JNZ/JNE:利用零标志ZF,判断结果是否为零(或相等)⑵JS和JNS:利用符号标志SF,判断结果是正是负⑶JO和JNO:利用溢出标志OF,判断结果是否产生溢出⑷JP/JPE和JNP/JPO:利用奇偶标志PF,判断结果中
1 的个数是偶是奇⑸JC和JNC:利用进位标志CF,判断结果是否进位或借位 例题例题例题例题例题2.条件转移指令― JZ/JNZ指令 REPZ CMPSB;
重复比较两个字符JNZ UNMAT;
ZF=0(不等),转移MOV AL,0;
顺序执行(相等)JMP OUTPUT UNMAT:MOV AL,0FFH OUTPUT:MOV RESULT,ALREPZ CMPSB;
重复比较两个字符JZ MAT;
ZF=1(相等),转移MOV AL,0FFH;
顺序执行(不等)JMP OUTPUTMAT:MOV AL,0 OUTPUT:MOV RESULT,AL 2. 条件转移指令― JS/JNS指令 计算|X-Y|(绝对值).X和Y为存放于X单元和Y单元的16位操作数,结果存入RESULT. MOV AX,XSUB AX,YJNS NONNEGNEG AXNONNEG:MOV RESULT,AX 2.条件转移指令― JO/JNO指令 计算X-Y.X和Y为存放于X单元和Y单元的16位操作数,若溢出,则转移到OVERFLOW处理 MOV AX,XSUB AX,YJO OVERFLOW...;
无溢出,结果正确OVERFLOW:...;
有溢出处理 2.条件转移指令― JP/JNP指令 设字符的ASCII码在AL寄存器中.将字符加上奇校验位:在字符ASCII码中为
1 的个数为奇数时令其最高位为
0 ,否则令最高位为
1 AND AL,7FH;
最高位置
0 ,同时判断
1 的个数JNP NEXT;
个数已为奇数,则转向NEXTOR AL,80H;
否则,最高位置
1 NEXT:... 2.条件转移指令― JC/JNC指令 记录BX中1的个数 XOR AL,AL;
AL=0,CF=0AGAIN:TEST BX,0FFFFH ;