offset 取得标号出的地址
对应机器指令没有包括目的地址,而是通过记录当前jmp指令结束位置到指定跳转位置的偏移地址,在编译程序的时候被算出
转移短指令:8位偏移最多向前跳转128,向后跳转127
jmp near ptr 标号
16位偏移
jmp far ptr 标号
对应指令包括了目的地址,
jmp word ptr 地址 内存单元地址 段内跳转
jmp dword ptr 地址 段间跳转,高16为表示段地址,低16位表示偏移地址
jcxz 有条件跳转指令 为短转移
cx=0的时候才进行跳转
loop 有条件跳转指令 为短转移
cx存放循环的次数
以下指令都是只涉及到位移,提高了程序的复用
如果超出跳转的最大限制,就会报错 jump destination too far by 1 byte(s)
jmp short 标号
jmp near ptr 标号
以下的程序说明了jmp short的执行方式
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start: mov ax,0
s: nop ;s2那边的指令拷贝到这里的时候,jmp s1编译后就变成了EBF6 跳到它前面10个字节处,到了程序开头 mov ax,4cooh那边
nop
mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax
s0: jmp short s
s1: