使用偏移进行跳转的 jmp 指令


assume cs:code
code segment
    start:
        mov ax,0000H
        jmp short finish
        ; 该指令( inc ax )占用一个字节 , 接下来就是 finish 标号
        ; 因此 jmp 的操作的操作数为 inc ax 指令的长度 : 也就是 1
        inc ax
    finish:
        mov ax,4cH
        int 21H
code ends
end start
Paste_Image.png
assume cs:code
code segment
    start:
        mov ax,0000H
        jmp short finish
        ; jmp 采用偏移的方式来进行跳转 , 这里存在两个 inc ax
        ; 也就是 两个 字节 , 因此 jmp 指令的操作数就是 2
        inc ax
        inc ax
    finish:
        mov ax,4cH
        int 21H
code ends
end start
Paste_Image.png

根据上面两个例子可以看出 :

jmp short [symbol]

该指令在编译的时候 , 编译器会将该指令的的操作数直接通过计算替换为目标地址到当前地址的偏移
也就是让 ip 自增偏移的大小
也就是说 :

(ip) = (ip) + 8位偏移
8位数偏移的范围是 : -128~127
属于 : 段内短转移

还有一条和 jmp short [symbol] 相近的指令 :

jmp near ptr [symbol]
(ip) = (ip) + 16位偏移
16位数偏移的范围是 : -32768~32767
属于 : 段内近转移
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容