汇编各种跳转指令

具体指令分析

JB指令(英文:jump when below)当CF标志位为1的时候才会跳转,
而JNAE指令(英文:jump when not above or equal)和JB指令一样;

JNB指令(英文:jump when not below)只在CF标志位为0的时候才跳转,JAE指令(英文:jump when above or equal)和JNB指令一样。

JE指令功能是在ZF标志位等于1时进行跳转,也就是(test等判断指令)结果为0(或者相等)的时候跳转。
JNZ指令功能是在ZF标志为0转移,就是结果不为零(或不相等)则转移。

汇编指令对应的机器码作用
JZ/JE74Z=1,为零/等于则跳转
JNZ/JNE75Z=0 ,不为零/不等于则跳转

通常上一条指令可能是:
sub eax,1
在eax=1时,eax-1=0,ZF标志位置1
test eax,eax
在eax为0时,eax&eax=0,ZF标志位置1
cmp eax,1
在eax=1时,eax-1=0,ZF标志位置1
其中test指令
如果AL为0:

test al,al 后

CF = 0,ZF = 0,SF=0, ZF=1, PF=1
如果AL为1:

test al,al 后

CF = 0,ZF = 0,SF=0, ZF=0, PF=0
其中cmp指令
指令格式: cmp 操作对象1,操作对象2

功能: 计算操作对象1 - 操作对象2 但不保存结果,仅仅根据计算结果对标志寄存器进行设置.比如cmp ax,ax 是做ax - ax 的运算,结果为0,但并不在ax中保存,仅影响flag的相关各位.

指令执行后: zf = 1,pf = 1,sf = 0,cf = 0,of = 0;

下面的指令:

   mov ax,8
   mov bx,3
   cmp ax,bx

执行后: (ax)= 8,zf = 0,pf = 1,sf = 0, cf = 0, of = 0

如果 ax = bx 则 ax - bx = 0 ,所以 : zf = 1
如果 ax != bx 则ax - bx != 0,所以 : zf = 0
如果ax < bx 则ax - bx 将产生错位,所以 : cf = 1
如果 ax >= bx 则 ax - bx 将不必借位,所以 : cf = 0
如果ax > bx 则 ax - bx 既不必借位,结果又不为0, 所以 : cf = 0 并且 zf = 0
如果 ax <= bx 则ax - bx 既可能借位,结果可能为0,所以 : cf = 1 或 zf =1

汇编各种跳转指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL

名称功能操作数操作码模数寄存器1寄存器2或内存位移量立即数符号方向芯片型号16位32位
JO溢出跳转$70108086
JNO不溢出跳转$71108086
JB低于跳转$72108086
JNB不低于跳转$73108086
JE相等跳转$74108086
JNE不等跳转$75108086
JBE不高于跳转$76108086
JA高于跳转$77108086
JS负号跳转$78108086
JNS非负跳转$79108086
JP奇偶跳转$7A108086
JNP非奇偶跳转$7B108086
JL小于跳转$7C108086
JNL不小于跳转$7D108086
JNG不大于跳转$7E108086
JG大于跳转$7F108086
JO溢出跳转$0F8010386$66
JNO不溢出跳转$0F8110386$66
JB低于跳转$0F8210386$66
JNB不低于跳转$0F8310386$66
JE相等跳转$0F8410386$66
JNE不等跳转$0F8510386$66
JBE不高于跳转$0F8610386$66
JA高于跳转$0F8710386$66
JS负号跳转$0F8810386$66
JNS非负跳转$0F8910386$66
JP奇偶跳转$0F8A10386$66
JNP非奇偶跳转$0F8B10386$66
JL小于跳转$0F8C10386$66
JNL不小于跳转$0F8D10386$66
JNG不大于跳转$0F8E10386$66
JG大于跳转$0F8F10386$66
JO溢出跳转$0F8010386$66
JNO不溢出跳转$0F8110386$66
JB低于跳转$0F8210386$66
JNB不低于跳转$0F8310386$66
JE相等跳转$0F8410386$66
JNE不等跳转$0F8510386$66
JBE不高于跳转$0F8610386$66
JA高于跳转$0F8710386$66
JS负号跳转$0F8810386$66
JNS非负跳转$0F8910386$66
JP奇偶跳转$0F8A10386$66
JNP非奇偶跳转$0F8B10386$66
JL小于跳转$0F8C10386$66
JNL不小于跳转$0F8D10386$66
JNG不大于跳转$0F8E10386$66
JG大于跳转$0F8F10386$66
JCXZ计数一六零跳转位移8$E3108086$67
JECXZ计数三二零跳转位移8$E310386$67
JMP跳转寄16$FF1110038086$66
JMP跳转寄32$FF111003386$66
JMP跳转16[寄16]$FF0010058086$6766
JMP跳转32[寄16]$FF001005386$66$67
JMP跳转16[寄32]$FF001005386$67$66
JMP跳转32[寄32]$FF001005386$6766
JMP跳转16[寄16+位移8]$FF01100598086$6766
JMP跳转32[寄16+位移8]$FF0110059386$66$67
JMP跳转16[寄32+位移8]$FF0110059386$67$66
JMP跳转32[寄32+位移8]$FF0110059386$6766
JMP跳转16[寄16+位移16]$FF10100598086$6766
JMP跳转32[寄16+位移16]$FF1010059386$66$67
JMP跳转16[寄32+位移32]$FF1010059386$67$66
JMP跳转32[寄32+位移32]$FF1010059386$6766
JMP跳转近16[寄16]$FF0010058086$6766
JMP跳转近32[寄16]$FF001005386$66$67
JMP跳转近16[寄32]$FF001005386$67$66
JMP跳转近32[寄32]$FF001005386$6766
JMP跳转近16[寄16+位移8]$FF01100598086$6766
JMP跳转近32[寄16+位移8]$FF0110059386$66$67
JMP跳转近16[寄32+位移8]$FF0110059386$67$66
JMP跳转近32[寄32+位移8]$FF0110059386$6766
JMP跳转近16[寄16+位移16]$FF10100598086$6766
JMP跳转近32[寄16+位移16]$FF1010059386$66$67
JMP跳转近16[寄32+位移32]$FF1010059386$67$66
JMP跳转近32[寄32+位移32]$FF1010059386$6766
JMP跳转远16[寄16]$FF0010158086$6766
JMP跳转远32[寄16]$FF001015386$66$67
JMP跳转远16[寄32]$FF001015386$67$66
JMP跳转远32[寄32]$FF001015386$6766
JMP跳转远16[寄16+位移8]$FF01101598086$6766
JMP跳转远32[寄16+位移8]$FF0110159386$66$67
JMP跳转远16[寄32+位移8]$FF0110159386$67$66
JMP跳转远32[寄32+位移8]$FF0110159386$6766
JMP跳转远16[寄16+位移16]$FF10101598086$6766
JMP跳转远32[寄16+位移16]$FF1010159386$66$67
JMP跳转远16[寄32+位移32]$FF1010159386$67$66
JMP跳转远32[寄32+位移32]$FF1010159386$6766
JMP跳转$EB108086
JMP跳转位移16$E9108086$66
JMP跳转位移32$E910386$66
JMP跳转$E9108086$66
JMP跳转$E910386$66
JMP跳转远(数段址:)偏移16$EA108086$66
JMP跳转远(数段址:)偏移32$EA10386$66
JMP跳转数段址:偏移16$EA128086$66
JMP跳转数段址:偏移32$EA12386$66
JMPE跳转扩展寄16$0F00111103IA64$66
JMPE跳转扩展寄32$0F00111103IA64$66
JMPE跳转扩展16[寄16]$0F00001105IA64$66
JMPE跳转扩展32[寄16]$0F00001105IA64$66
JMPE跳转扩展16[寄32]$0F00001105IA64$66
JMPE跳转扩展32[寄32]$0F00001105IA64$66
JMPE跳转扩展16[寄16+位移8]$0F000111059IA64$66
JMPE跳转扩展32[寄16+位移8]$0F000111059IA64$66
JMPE跳转扩展16[寄32+位移8]$0F000111059IA64$66
JMPE跳转扩展32[寄32+位移8]$0F000111059IA64$66
JMPE跳转扩展16[寄16+位移16]$0F001011059IA64$66
JMPE跳转扩展32[寄16+位移16]$0F001011059IA64$66
JMPE跳转扩展16[寄32+位移32]$0F001011059IA64$66
JMPE跳转扩展32[寄32+位移32]$0F001011059IA64$66
JMPE跳转扩展位移16$0FB810IA64$66
JMPE跳转扩展位移32$0FB810IA64$66
  • 14
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值