控制转移指令
来源:互联网 发布:数据库发布到网站 编辑:程序博客网 时间:2024/05/25 19:56
JMP J** JCXZ LOOP CALL RET
JMP ( JuMP ) 无条件转移指令
名称
格式
执行操作
段内直接短跳转 JMP SHORT OPR IP=IP+8位偏移量 段内直接近转移 JMP NEAR PTR OPR IP=IP+16位偏移量 段内间接转移 JMP WORD PTR OPR IP=(EA) 段间直接转移 JMP FAR PTR OPR IP=OPR偏移地址,CS=OPR段地址 段间间接转移 JMP DWORD PTR OPR IP=(EA),CS=(EA+2)1.无条件转移到指定的地址去执行从该地址开始的指令.
2.段内转移是指在同一代码段的范围内进行转移,只需改变IP寄存器内容.
3.段间转移则要转移到另一个代码段执行程序,此时要改变IP寄存器和CS段寄存器的内容.
条件转移指令:根据上一条指令所设置的条件码(标志位)来判断测试条件.
根据五个标志位:ZF、SF、OF、 PF、 CF的两种状态(0 FALSE或1 TRUE)产生10种测试条件.
Name Flag Flag == TRUE [1] Flag ==FALSE [ 0] Zero Falg ZF JZ OPR //结果为零转移 JNZ OPR //结果不为零转移 Sign Falg SF JS OPR //结果为负转移 JNS OPR //结果为正转移 Overflow Flag OF JO OPR //溢出转移 JNO OPR //不溢出转移 Parity Flag PF JP OPR //结果为偶转移 JNP OPR //结果为奇转移 Carry Flag CF JC OPR //有进位转移 JNC OPR //无进位转移
两个数比较:
情况 无符号数 有符号数 指令 满足条件 指令 满足条件 A < B JC CF==1 JL SF^OF==1 && ZF==0 A ≥ B JNC CF==0 JNL SF^OF==0 || ZF==1 A ≤ B JNA CF==1 || ZF==1 JLG SF^OF==1 || ZF==1 A > B JA CF==0 && ZF==0 JG SF^OF==0 && ZF==0
测试CX转移指令
JCXZ OPR //CX==0时转移
LOOP(LOOP)循环指令
LOOP OPR 测试条件:CX ≠ 0 //OPR在程序中实际是个标号 LOOPZ OPR 测试条件:ZF == 1 && CX ≠ 0 LOOPNZ OPR 测试条件:ZF == 0 && CX ≠ 0执行操作: 先执行CX=CX-1,再检测上面的测试条件,如满足则IP=IP+符号扩展的D8,不满足则退出循环.
过程调用及返回指令
CALL (CALL) 过程调用指令
CALL DST //DST在程序中实际是子程序标号
执行操作:先将过程的返回地址(即CALL的下一条指令的首地址)存入堆栈,然后转移到过程入口地址执行子程序.
调用方式 格式 断点保护入栈情况 过程入口地址 段内直接 CALL NEAR PTR PR1 (SP-1)(SP-2)←IP , CS不进栈 CS值保持不变,IP←DST 段内间接 CALL WORD PTR (EA) (SP-1)(SP-2)←IP , CS不进栈 CS值保持不变,IP←(EA) 段间直接 CALL FAR PTR PR1 (SP-1)(SP-2)←CS , (SP-3)(SP-4)←IP IP←DST偏移地址,CS←DST段地址 段间间接 CALL DWORD PTR (EA) (SP-1)(SP-2)←CS , (SP-3)(SP-4)←IP IP←(EA),CS←(EA+2)注:为了表明是段内调用,可使用NEAR PTR属性操作符作说明.
RET(RETurn)子程序返回指令
RET
RET EXP //带立即数返回
子程序返回指令RET放在子程序末尾,它使子程序在执行完全部任务后返回主程序继续执行被打断后的程序.返回地址在子程序调用时入栈保存的断点地址-IP或IP和CS.
- 控制转移指令
- 控制转移类指令
- MCS-51控制转移指令
- [汇编]8086指令系统---控制转移指令
- 80386 控制转移指令,串操作指令 (四)
- 8086汇编 控制转移和处理机控制指令
- 转移指令
- 转移指令
- 转移指令
- 转移指令
- 汇编(十五)——控制转移类指令一
- 汇编(十六)——控制转移类指令二
- 汇编(十七)——控制转移类指令三
- 转移控制
- 16位汇编第八讲----8086指令集(5)【控制转移类指令】
- 五 程序转移指令
- x86 转移指令机器码
- 转移指令的原理
- 关于HIVE注册表
- 常用系统配置和命令
- 手工清除落雪
- 逻辑运算指令和移位指令
- JSP全能管理系统1.0(强大的JSP后门)
- 控制转移指令
- 学院网站正式上线运行
- DEBUG
- JasperReport常见问题
- 表模块(Table Module)
- 显示和关闭进程(tasklist & taskkill)
- 嵌入式系统词汇表
- 压缩SQL SERVER数据库方法
- 开张大吉