汇编基础:跳转指令2013-05-28汇编中的跳转指令从大体上分为无条件转移指令和条件转移指令。下面就围绕着这两个大的方面来探究下汇编语言的跳转指令。一、无条件转移指令无条件转移指令JMP将无条件地转移到指令的目的地址去执行指令,因此JMP指令必须指定转移的目标地址无条件转移指令可以分为两类:段内跳转和段间跳转,段内转移是指在同一段的范围内运行转移。此时转移指令将改变IP寄存器的值,即用新的转移目标地址代替原有的IP寄存器的值来实现转移,因此,此时的目标地址给出偏移量即可,段间转移是要转移到另一个逻辑段去执行程序,此时不仅要修改IP寄存器的值,而且还需要修改CS寄存器的值才能达到转移的目的,因此,此时的目标地址应由段基值和偏移量两部分组成。1、段内转移段内转移时,指令和要转移的目标指令同属于一个段,因此只需修改寄存器IP的值,而代码段寄存器CS的值保持不变,所以指令中给出目标指令的偏移量即可。根据给出目标指令偏移量的方式,JMP指令的寻址方式分为段内直接寻址和段内间接寻址。【a】、段内转移直接寻址指令的操作数部分直接给出目标指令的偏移量。在这种情况之下,一般使用标号来作为JMP指令的操作数,指令格式如下。段内转移直接寻址:JMP NEAR PTR TARGET执行的操作IP<--(IP)+TARGET与JMP指令的下一条指令的16位位移量距离。【b】、段内转移间接寻址JMP指令转移到目标地址在某一个通用寄存器中或者某一个字存储单元中。段内转移间接寻址的指令格式为:JMP REGJMP WORD PTR ADDR在JMP REG中,REG为通用寄存器,执行的操作为:IP<---通用寄存器REG的内存在JMP WORD PTR ADDR中,ADDR为各种寻址方式确定的存储单元地址,并且在无歧义的情况下WORD PTR可以省略不写,执行的操作为:IP<---字存储单元ADDR的内存