汇编--控制转移指令

跳转指令分三类:
一、无条件跳转: JMP;
二、根据 CX、ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转)、JECXZ(ECX 为 0 则跳转);
三、根据 EFLAGS 寄存器的标志位跳转, 这个太多了.

JMP 无条件转移指令

1、段内直接短转移

2、段内直接近转移

3、段内间接近转移

4、段间直接远转移

5、段间间接远转移


条件转移指令

根据标志位跳转的指令:


JZ   ;为 0 则跳转   jump if zero,
JNZ  ;不为 0 则跳转
JE   ;等于则跳转  jump if equal
JNE  ;不等于则跳转
 
JS   ;结果为负则转移
JNS  ;结果为正则转移

JO   ;溢出则转移
JPO  ;不溢出则转移


JP(JPE)    ;奇偶位为1则跳转
JNP(JPO)     ;奇偶位为0则跳转
JC   ;进位则跳转  jump
JNC  ;不进位则跳转

JA   ;无符号大于则跳转
JNA  ;无符号不大于则跳转
JAE  ;无符号大于等于则跳转
JNAE ;无符号不大于等于则跳转

JG   ;有符号大于则跳转
JNG  ;有符号不大于则跳转
JGE  ;有符号大于等于则跳转
JNGE ;有符号不大于等于则跳转

JB   ;无符号小于则跳转
JNB  ;无符号不小于则跳转
JBE  ;无符号小于等于则跳转
JNBE ;无符号不小于等于则跳转

JL   ;有符号小于则跳转
JNL  ;有符号不小于则跳转
JLE  ;有符号小于等于则跳转
JNLE ;有符号不小于等于则跳转

JPE  ;奇偶位相等则跳转
JPO  ;奇偶位不等则跳转


跳转相关的标志位:

11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF   AF   PF   CF

     







时间: 2024-12-22 19:36:29

汇编--控制转移指令的相关文章

汇编--控制转移指令 jmp

跳转指令分三类:一.无条件跳转: JMP;二.根据 CX.ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转).JECXZ(ECX 为 0 则跳转);三.根据 EFLAGS 寄存器的标志位跳转, 这个太多了. JMP 无条件转移指令 1.段内直接短转移 2.段内直接近转移 3.段内间接近转移 4.段间直接远转移 5.段间间接远转移 条件转移指令 1)根据单个条件标志的设置情况转移: JZ(JE) ;为 0(等于) 则跳转 jump if zero, JNZ(JNE) ;不为 0(等于) 则

标志寄存器PSW和汇编条件转移指令解释

标志寄存器PSW 标志寄存器PSW(程序状态字寄存器PSW)   标志寄存器PSW是一个16为的寄存器.它反映了CPU运算的状态特征并且存放某些控制标志.8086使用了16位中的9位,包括6个状态标志位和3个控制标志位. CF(进位标志位):当执行一个加法(减法)运算时,最高位产生进位(或借位)时,CF为1,否则为0.ZF零标志位:若当前的运算结果为零,则ZF为1,否则为0.SF符号标志位:该标志位与运算结果的最高位相同.即运算结果为负,则SF为1,否则为0.OF溢出标志位:若运算结果超出机器能

Jvm(47),指令集----控制转移指令

控制转移指令可以让Java虚拟机有条件或无条件地从指定的位置指令而不是控制转移指令的下一条指令继续执行程序,从概念模型上理解,可以认为控制转移指令就是在有条件或无条件地修改PC寄存器的值.控制转移指令如下. 条件分支:ifeq.iflt.ifle.ifne.ifgt.ifge.ifnull.ifnonnull.if_icmpeq. if_icmpne.if_icmplt.if_icmpgt.if_icmple.if_icmpge.if_acmpeq和if_acmpne. 复合条件分支:table

(二十三)控制转移指令

一.概念 二.案例 源代码 public class Test { public static void main(String []args){ int age = 10; if( age > 10 ){ System.out.println(" > 10"); }else{ System.out.println(" < = 10"); } String userName = "admin"; } } javap -verbo

16位汇编第八讲指令第四讲

16位汇编第八讲指令第四讲 一丶串操作类指令 1.什么是串操作? 1.串操作指令是8086指令系统中比较独特的一类指令,采用比较特殊的数据串寻址方式,在操作主存连续区域 的数据是,特别好用.因而比较常用 简而言之,就是内存中的一段数据,拷贝/读取/修改... 到另一块另内存 重点掌握  MOVS  STOS  LODS CMPS SCAS REP 2.串操作的简介 1.串操作指令的操作数,是驻村中连续存放的数据串(String 注意string表示串的意思)--也就是一段数据在内存中 是连续的,

对X86汇编的理解与入门

本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令.逻辑计算指令.算数运算指令),以及函数的调用规则.个人认为:在理解了本文后,基本可以无障碍地阅读绝大部分标准X86汇编程序.当然,更复杂的指令请参阅Intel相关文档. 1 寄存器. 主要寄存器如下图所示: X86处理器中有8个32位的通用寄存器.由于历史的原因,EAX通常用于计算,ECX通常用于循环变量计数.ESP和EBP有专门用途,ESP指示栈指针(用于指示

学习linux内核时常碰到的汇编指令(1)

 转载:http://blog.sina.com.cn/s/blog_4be6adec01007xvg.html 80X86 汇编指令符号大全 +.-.*./∶算术运算符. &∶宏处理操作符.宏扩展时不识别符号和字符串中的形式参数,如果在形式参数前面加上一个& 记号,宏汇编程序就能够用实在参数代替这个形式参数了. $∶地址计数器的值——记录正在被汇编程序翻译的语句地址.每个段均分配一个计数器,段内定义的所有标号和变量的偏移地址就是当前汇编地址计数器的值. ?∶操作数.在数据定义语句中,操作

免杀1.0免杀基础(汇编)

1.1 寄存器 寄存器其实是一个统称,是一些CPU芯片里用于快速计算的小型存储器,寄存器其实是通用的,但还是有一些约定.(计算机组成原理) eax:拓展累加寄存器:ecx:循环计数器:edx:数据寄存器:ebx:基址寄存器: esp:栈顶:ebp:栈底:栈:数据结构中一种存储数据方式,可以看成是竖着的容器,后进先出esi:拓展目地指针:edi:拓展目地指针:eip:指令指针. 1.2 汇编指令初识 利用ollydbg认识汇编指令,汇编语言其实就是"助记符" 1.3 汇编指令种类及举例

X86汇编快速入门

本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令.逻辑计算指令.算数运算指令),以及函数的调用规则.个人认为:在理解了本文后,基本可以无障碍地阅读绝大部分标准X86汇编程序.当然,更复杂的指令请参阅Intel相关文档. 1 寄存器. 主要寄存器如下图所示: X86处理器中有8个32位的通用寄存器.由于历史的原因,EAX通常用于计算,ECX通常用于循环变量计数.ESP和EBP有专门用途,ESP指示栈指针(用于指示