2008-10-10 20:04
这篇文章说一下8086中jmp指令的一些用法,总结的不太好;见谅 jmp指令的跳转分为从寄存器跳转,从内存跳转和从立即数跳转。 一,从立即数跳转分为好几种,讨论如下 jmp 立即数 //相当于mov ip 立即数 jmp short s//s为标号 //段内短转移,支持转移的范围是-128~127;相当于 mov ip,s; jmp near ptr s //段内进转移,支持范围是-32768~32767,相当于 mov ip,s; jmp far ptr s //段间转移,假设s所在的段为ss,段内偏移量是offset,这条指令相当于mov ip,offset;mov cs,ss 二,从寄存器跳转。 jmp ax //相当于执行了 mov ip,ax 三,从内存中跳转。 jmp word ptr ss[offset] //这条指令相当于执行了 mov ip,ss:[offset] jmp dword ptr ss:[offset] //这条指令相当于执行了 mov ip,ss:[offset]; mov cs,ss:[offset+2] 顺便说一句,上面的都是无条件跳转,有段内跳转和段间跳转; 有条件跳转和loop指令的跳转方式都属于段内跳转。 其实call指令和jmp指令是非常相似的,只是在立即数寻址中不支持段内段转移 |