机器码中并没有包含转移的目的地址,只是给了一个位移的范围,通过位移的方式,实现对ip寄存器的修改。
转移的目的地址在机器码中的jmp指令
jmp far ptr s
转移的目的地址在寄存器中的jmp指令
mov ax,2233H
jmp ax
ax中的值会覆盖ip
转移的目的地址在内存中的jmp指令
转移地址在内存中的jmp指令有两种格式:
(1)jmp word ptr 内存单元地址(段内转移)
功能:从内存单元地址处开始存放着一个字,是转移的目的偏移地址
内存地址的表示需要段地址和偏移地址
mov ax,2233h
mov ds:[0],ax
jmp word ptr ds:[0] ;IP=ds:[0]的字型数据
执行之后IP=2233H
(2)jmp dword ptr 内存单元地址(段间转移)
功能:从内存单元地址处开始存放着两个字,高地址处的字是转移的目的地址,低地址处是转移的目的偏移地址。
cs=内存单元地址+2
ip=内存单元地址
mov ax,0123h
mov ds:[0],ax
mov word ptr ds:[2],0
jmp dword ptr ds:[0] ;ip=ds:[0]的字型数据,cs=ds:[2]的字型数据
执行之后,cs=0,ip=0123h cs:ip指向0000:0123