8086处理器的无条件转移指令——《x86汇编语言:从实模式到保护模式》读书笔记13

本博文是对原书8.3.10的内容的总结。spa

1、相对短转移

指令格式是:code

jmp short 标号

标号也能够替换成具体的数值(标号和数值是等价的),例如blog

jmp short 0x2000

说明:内存

(1)该指令属于段内转移指令,并且只容许转移到距离当前指令-128~127字节的地方。编译器

(2)指令的功能是:(IP) = (IP)+8位位移量(范围是-127~128,用补码表示)编译

(3)short指明此处的位移为8位class

(4)8位位移=标号处的地址-jmp指令后的第一个字节的地址;8位位移由编译器在编译时算出;总结

2、16位相对近转移

指令格式是: top

jmp near 标号

同理,标号也能够是具体的数值,如di

jmp near 0x3200

说明:

(1)该指令属于段内转移,转移范围是-32768~32767

(2)指令的功能是:(IP)= (IP)+16位位移量(范围是-32768~32767,用补码表示)

(3)near指明此处的位移为16位

(4)16位位移=标号处的地址-jmp指令后的第一个字节的地址;16位位移由编译器在编译时算出;

 

注意:若是没有指定关键字是near或者short,那么NASM编译器会根据目标位置距离当前指令的位移量自动选择near(范围在-127~128内)或者short(范围在-127~128外,可是在-32768~32767内)。

 

3、16位间接绝对近转移

指令格式为:

jmp (near)  r16/m16

说明:

(1)这种转移也是段内转移,可是转移的目标不是在指令中直接给出,而是由一个16位的通用寄存器或者内存地址间接给出

(2)near关键字能够省略

(3)执行时,处理器将用16位通用寄存器的值或内存中的那个字取代IP寄存器的内容。

4、16位直接绝对远转移

指令格式为:

jmp 段地址:偏移地址

说明:

(1)属于段间转移

(2)执行时,处理器用段地址的内容取代CS的值,用偏移地址(也能够是标号)取代IP的值

5、16位直接绝对远转移

指令格式为:

jmp far m32

说明:

(1)关键字far是必须的

(2)操做数是一个内存地址,内存地址处存放着2个字,低字是偏移地址,高字是段地址

(3)执行时,处理器根据内存地址找到偏移地址和段地址,分别用来代替IP和CS的内容


(完)

相关文章
相关标签/搜索