• 8086 汇编 jmp 指令


    8086 汇编 jmp 指令

    功能:修改CS、IP的指令、可以通过改变CS、IP中的内容,来控制CPU要执行的目标指令。

    背景:一般情况下指令是顺序地逐条执行的,而在实际中,常需要改变程序的执行流程。
    转移指令,

    • 可以控制CPU执行内存中某处代码的指令
    • 可以修改IP,或同时修改CS和IP的指令

    转移方式

    jmp指令要给出两种信息:  

    • 转移的目的地址
    • 转移的距离
      • - 段间转移(远转移): jmp 2000:1000
      • - 段内短转移: jmp short 标号 ; IP的修改范围为 -128~127,8位的位移
      • - 段内近转移: jmp near ptr 标号 ; IP的修改范围为 -32768~32767,16位的位移

    远转移 far ptr

    短转移 short

    短转移:“jmp short 标号”
    功能:(IP)=(IP)+8位位移
    原理
    (1)8位位移=“标号”处的地址-jmp指令后的第一个字节的地址;
    (2)short指明此处的位移为8位位移;
    (3)8位位移的范围为-128~127,用补码表示;
    (4)8位位移由编译程序在编译时算出

    近转移 near ptr

    近转移:指令“jmp near ptr 标号”
    功能: (IP)=(IP)+16位位移
    原理
    (1)16位位移=“标号”处的地址-jmp指令后的第一个字节的地址;
    (2)near ptr指明此处的位移为16位位移,进行的是段内近转移;
    (3)16位位移的范围为 -32769~32767,用补码表示;
    (4)16位位移由编译程序在编译时算出。

    转移内存单元地址

    一、jmp word ptr

     二、jmp dword ptr

    案例

    1、同时修改CS、IP的内容

    ; 功能:用指令中给出的段地址修改CS,偏移地址修改IP。
    ; 格式:jmp 段地址:偏移地址
    jmp 2AE3:3

    2、仅修改IP的内容

    ; 功能:用寄存器中的值修改IP
    ; jmp 某一合法寄存器
    jmp ax (类似于 mov IP, ax)

     3、代码中跳转行

    ; jmp 直接跳过 add ax,1 行到 inc ax
       mov ax,0
       jmp short s
       add ax, 1
    s: inc ax
  • 相关阅读:
    Codeforces 1528E Mashtali and Hagh Trees
    Codeforces Round #709 (Div. 1, based on Technocup 2021 Final Round)
    Codeforces 1517G Starry Night Camping
    Codeforces 1508E Tree Calendar
    Codeforces 1508D Swap Pass
    Codeforces 1511G Chips on a Board
    Codeforces 1511F Chainword
    Codeforces 1516E Baby Ehab Plays with Permutations
    CF1539A Contest Start 题解
    关于 manacher
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12494231.html
Copyright © 2020-2023  润新知