汇编语言如何跳转?

时间:2022-12-03 04:50:48
比如我想从一个地址跳转到另一个地址上。


xxxx:xxxx 
xxxx:xxxy
xxxx:xxxz

....
xxxx:xxxn


我想从xxxx:xxxz处跳转到xxxx:xxxn
有几种方法,各有什么优点或者缺点?


能不能讨论一下

7 个解决方案

#1


jmp无条件跳转
jx/jxx都是有条件跳转,具体可以查阅书本上的跳转表

#2


jmp 标号

#3


jmp 标号

#4


xxxx:xxxz处的指令写成jmp 标号
xxxx:xxxn处的指令前标一个标号(注意此标号名称与"jmp 标号"中的标号一致)!

#5


jmp,je,jne,jz,jnz
其中除了jmp外都是需要判断条件进行跳转的,jmp可以进行cs,ip设置,不需要条件。jmp 偏移地址 或这 jmp 段地址:偏移地址
=================================
王爽汇编语言论坛应该对你的学习有帮助www.asmedu.net

#6


无条件跳转/条件跳转

#7


JC∶ 简单条件转移指令助记符——有进位转移。CF=1 则转移(段内直接短转移,产生 8位的位移量,即转移地址的偏移量在—128 到+127之间)。 

JCXZ∶指令助记符——条件转移。(CX)=0, 则转移(段内直接短转移?)。 

JE∶ 简单条件转移指令助记符——(两数比较)相等转移(同JZ)。前次操作结果为0,ZF=1则转移(段内直接短转移)。 

JG∶有符号数条件转移指令助记符——(有符号数比较)大于转移(等价JNLE)。SF和OF同号,且ZF=0 时转移。(段内直接短转移) 

JGE∶ 有符号数条件转移指令助记符——(有符号数比较)大于或等于转移(等价于JNL)。 当SF和OF同号,或ZF=1, 则转移(段内直接短转移)。 

JL∶ 有符号数条件转移指令助记符——(有符号数比较)小于转移(等价于JNGE)。当SF和OF异号,且ZF=0 时转移(段内直接短转移)。 

JLE∶ 指令助记符——(有符号数比较)小于或等于转移(等价于JNG)。当SF和OF异号或ZF=1时转移(段内直接短转移)。 

JMP∶ 指令助记符——无条件转移。无条件转移到指令所指示的目标地址,并从该地址开始执行。目标地址可以从指令中直接得到,也可以从指令中给定的寄存器或存储器中得到。
  一、段内直接短转移 JMP SHORT 标号。标号是转移的目的地址,由它确定一个 8位位移量。这个位移量被加到IP寄存器中。位移量是一个带符号数,负数表示向前转移,正数表示向后转移。转移范围是—128至+127。
  二、段内直接近转移 JMP NEAR PTR 标号。 标号是转移的目的地址,由它确定一个16位位移量。这个位移量被加到IP寄存器中。位移量是一个带符号数,负数表示向前转移,正数表示向后转移。转移范围是—32768至+32767。
  三、段内间接转移 ①JMP AX (段内寄存器间接转移);②JMP [BX](段内存储器间接转移)。将指令中给定的寄存器或存储单元中的内容送到IP中。
  四、段间直接转移 JMP FAR PTR 标号。 标号为符号地址。 

JNB∶ 无符号数条件转移指令助记符——(无符号数比较)不低于转移(等价JAE)。CF=0,或ZF=1 则转移(段内直接短转移)。 

JNBE∶无符号数条件转移指令助记符——(无符号数比较)不低于且不等于转移(等价JA)。CF=0, 且ZF=0 则转移(段内直接短转移)。 

JNC∶ 简单条件转移指令助记符——前次操作无进或进位位转移。CF=0 则转移(段内直接短转移)。 

JNE∶ 简单条件转移指令助记符——不相等转移(同JNZ)。前次操作结果不等于0,ZF=0 则转移(段内直接短转移)。 

JNG∶ 指令助记符——(有符号数比较)不大于转移(等价于JLE)。当SF和OF异号或ZF=1时转移(段内直接短转移)。 

JNGE∶指令助记符——(有符号数比较)不大于且不等于转移(等价于JL)。当SF和OF异号,且ZF=0 时转移(段内直接短转移)。 

JNL∶ 指令助记符——(有符号数比较)不小于时转移(等价于JGE)。 当SF和OF同号,或ZF=1, 则转移(段内直接短转移)。 

JNLE∶指令助记符——(有符号数比较)不小于且不等于转移(等价JG)。SF和OF同号,且ZF=0 时转移。 

JNZ∶ 简单条件转移指令助记符——不相等转移(同JNE)。ZF=0 则转移(段内直接短转移)。 

JZ∶ 简单条件转移指令助记符——相等转移(同JE)。ZF=1 则转移(段内直接短转移)。 

需要那个用那个,看实际情况而定

#1


jmp无条件跳转
jx/jxx都是有条件跳转,具体可以查阅书本上的跳转表

#2


jmp 标号

#3


jmp 标号

#4


xxxx:xxxz处的指令写成jmp 标号
xxxx:xxxn处的指令前标一个标号(注意此标号名称与"jmp 标号"中的标号一致)!

#5


jmp,je,jne,jz,jnz
其中除了jmp外都是需要判断条件进行跳转的,jmp可以进行cs,ip设置,不需要条件。jmp 偏移地址 或这 jmp 段地址:偏移地址
=================================
王爽汇编语言论坛应该对你的学习有帮助www.asmedu.net

#6


无条件跳转/条件跳转

#7


JC∶ 简单条件转移指令助记符——有进位转移。CF=1 则转移(段内直接短转移,产生 8位的位移量,即转移地址的偏移量在—128 到+127之间)。 

JCXZ∶指令助记符——条件转移。(CX)=0, 则转移(段内直接短转移?)。 

JE∶ 简单条件转移指令助记符——(两数比较)相等转移(同JZ)。前次操作结果为0,ZF=1则转移(段内直接短转移)。 

JG∶有符号数条件转移指令助记符——(有符号数比较)大于转移(等价JNLE)。SF和OF同号,且ZF=0 时转移。(段内直接短转移) 

JGE∶ 有符号数条件转移指令助记符——(有符号数比较)大于或等于转移(等价于JNL)。 当SF和OF同号,或ZF=1, 则转移(段内直接短转移)。 

JL∶ 有符号数条件转移指令助记符——(有符号数比较)小于转移(等价于JNGE)。当SF和OF异号,且ZF=0 时转移(段内直接短转移)。 

JLE∶ 指令助记符——(有符号数比较)小于或等于转移(等价于JNG)。当SF和OF异号或ZF=1时转移(段内直接短转移)。 

JMP∶ 指令助记符——无条件转移。无条件转移到指令所指示的目标地址,并从该地址开始执行。目标地址可以从指令中直接得到,也可以从指令中给定的寄存器或存储器中得到。
  一、段内直接短转移 JMP SHORT 标号。标号是转移的目的地址,由它确定一个 8位位移量。这个位移量被加到IP寄存器中。位移量是一个带符号数,负数表示向前转移,正数表示向后转移。转移范围是—128至+127。
  二、段内直接近转移 JMP NEAR PTR 标号。 标号是转移的目的地址,由它确定一个16位位移量。这个位移量被加到IP寄存器中。位移量是一个带符号数,负数表示向前转移,正数表示向后转移。转移范围是—32768至+32767。
  三、段内间接转移 ①JMP AX (段内寄存器间接转移);②JMP [BX](段内存储器间接转移)。将指令中给定的寄存器或存储单元中的内容送到IP中。
  四、段间直接转移 JMP FAR PTR 标号。 标号为符号地址。 

JNB∶ 无符号数条件转移指令助记符——(无符号数比较)不低于转移(等价JAE)。CF=0,或ZF=1 则转移(段内直接短转移)。 

JNBE∶无符号数条件转移指令助记符——(无符号数比较)不低于且不等于转移(等价JA)。CF=0, 且ZF=0 则转移(段内直接短转移)。 

JNC∶ 简单条件转移指令助记符——前次操作无进或进位位转移。CF=0 则转移(段内直接短转移)。 

JNE∶ 简单条件转移指令助记符——不相等转移(同JNZ)。前次操作结果不等于0,ZF=0 则转移(段内直接短转移)。 

JNG∶ 指令助记符——(有符号数比较)不大于转移(等价于JLE)。当SF和OF异号或ZF=1时转移(段内直接短转移)。 

JNGE∶指令助记符——(有符号数比较)不大于且不等于转移(等价于JL)。当SF和OF异号,且ZF=0 时转移(段内直接短转移)。 

JNL∶ 指令助记符——(有符号数比较)不小于时转移(等价于JGE)。 当SF和OF同号,或ZF=1, 则转移(段内直接短转移)。 

JNLE∶指令助记符——(有符号数比较)不小于且不等于转移(等价JG)。SF和OF同号,且ZF=0 时转移。 

JNZ∶ 简单条件转移指令助记符——不相等转移(同JNE)。ZF=0 则转移(段内直接短转移)。 

JZ∶ 简单条件转移指令助记符——相等转移(同JE)。ZF=1 则转移(段内直接短转移)。 

需要那个用那个,看实际情况而定