jmp为无条件转移指令,可以只修改IP,也可以同时修改CS和IP。
jmp指令要给出两种信息:
(1)转移的目的地址
(2)转移的距离(段间转移、段内转移、段内近转移)
不同的给出目的地址的方法,和不同的转移地址位置,对应有不同格式的jmp指令。
依据位移进行转移的jmp指令:
【1】jmp short 标号(转移标号处执行指令)
IP修改范围:-128~127,"short"说明进行短转移。
程序:
assume cs:codesg
codesg segment
start:mov ax,0
jmp short s
add ax,1
s:inc ax
codesg ends
end start
【2】jmp near ptr 标号 功能:(IP) = (IP)+16位位移。 它与【1】功能相近,实现的是段内近转移。
IP修改范围:-32768~32767,用补码表示;
转移的目的地址在指令中的jmp指令:
【3】jmp far ptr 标号 实现的是段间转移(远转移)
功能:(CS)=标号所在段的段地址;(IP)=标号在段中的偏移地址;
far ptr 指明了指令用标号的段地址和偏移地址修改CS和IP。
程序:
assume cs:codesg
codesg segment
start:mov ax,0
mov bx,0
jmp far ptr s
db 256 fup (0)
s: add ax,1
inc ax
codesg ends
end start