汇编 转移指令

offset

在汇编语言中是由编译器处理的符号,他的功能是取得标号的偏移地址

 s1:
 	mov ax,offset s1  ;相当于mov ax,0
 s2:
 	mov ax,offset s2 ;相当于mov ax,3

jmp 

无条件转移指令,可以修改CS和IP

需要两种信息,转移的目的地址和转移的距离

根据位移进行转移 jmp short 标号

功能:(IP)=(IP)+8位位移

8位位移=标号处的地址-jmp指令后的第一个字节的地址

short指明此处的位移是8位位移

8位位移的范围是-128--127 用补码表示

8位位移由编译程序在编译时算出

jmp near 标号,表示段内近转移(IP)=(IP)+16位位移

start:
    mov ax,0
    jmp short s
    add ax,1
s:
    add ax,2

jmp far pter  标号,实现的是段间转移,也称远转移

功能:(CS)=标号所在段的段地址,(IP)=标号在段中的偏移地址

far ptr 指明了指令用标号的段地址和偏移地址修改CS和IP

jmp 16位reg

功能:(IP)=(16位reg)

jmp word ptr 内存单元地址  (段内转移)

功能:从内存单元地址处开始存放着一个字,是转移的目的偏移地址

(IP)=(内存单元地址)

jmp dword ptr 内存单元地址 (段间转移)

功能:从内存单元地址处开始存放着两个字,是转移的目的偏移地址,高地址处是目标段地址,低地址处是目标偏移地址

(CS)=(内存单元地址+2)

(IP)=(内存单元地址)

jcxz 是有条件转移,所有有条件转移都是短转移,在对应的机器码中包含转移的位移,而不是目的地址,对IP的修改范围都是-128~127

jcxz  标号

功能:当(CX)==0 时,转移到标号处执行,(IP)=(IP)+8位位移

猜你喜欢

转载自my.oschina.net/ahaoboy/blog/1803246