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位位移