zoukankan      html  css  js  c++  java
  • 8086处理器的无条件转移指令——《x86汇编语言:从实模式到保护模式》读书笔记13

    本博文是对原书8.3.10的内容的总结。

    一、相对短转移

    指令格式是:

    jmp short 标号

    标号也可以替换成具体的数值(标号和数值是等价的),例如

    jmp short 0x2000

    说明:

    (1)该指令属于段内转移指令,而且只允许转移到距离当前指令-128~127字节的地方。

    (2)指令的功能是:(IP) = (IP)+8位位移量(范围是-127~128,用补码表示)

    (3)short指明此处的位移为8位

    (4)8位位移=标号处的地址-jmp指令后的第一个字节的地址;8位位移由编译器在编译时算出;

    二、16位相对近转移

    指令格式是:

    jmp near 标号

    同理,标号也可以是具体的数值,如

    jmp near 0x3200

    说明:

    (1)该指令属于段内转移,转移范围是-32768~32767

    (2)指令的功能是:(IP)= (IP)+16位位移量(范围是-32768~32767,用补码表示)

    (3)near指明此处的位移为16位

    (4)16位位移=标号处的地址-jmp指令后的第一个字节的地址;16位位移由编译器在编译时算出;

    注意:如果没有指定关键字是near或者short,那么NASM编译器会根据目标位置距离当前指令的位移量自动选择near(范围在-127~128内)或者short(范围在-127~128外,但是在-32768~32767内)。

    三、16位间接绝对近转移

    指令格式为:

    jmp (near)  r16/m16

    说明:

    (1)这种转移也是段内转移,但是转移的目标不是在指令中直接给出,而是由一个16位的通用寄存器或者内存地址间接给出

    (2)near关键字可以省略

    (3)执行时,处理器将用16位通用寄存器的值或内存中的那个字取代IP寄存器的内容。

    四、16位直接绝对远转移

    指令格式为:

    jmp 段地址:偏移地址

    说明:

    (1)属于段间转移

    (2)执行时,处理器用段地址的内容取代CS的值,用偏移地址(也可以是标号)取代IP的值

    五、16位直接绝对远转移

    指令格式为:

    jmp far m32

    说明:

    (1)关键字far是必须的

    (2)操作数是一个内存地址,内存地址处存放着2个字,低字是偏移地址,高字是段地址

    (3)执行时,处理器根据内存地址找到偏移地址和段地址,分别用来代替IP和CS的内容


    (完)

  • 相关阅读:
    [NOIP2010] 引水入城
    BZOJ 3038 线段树
    [Tyvj 1728]普通平衡树 5种姿势 (彩蛋)
    BZOJ 1588: [HNOI2002]营业额统计
    BZOJ 2141 排队 线段树套替罪羊
    BZOJ 3629 [JLOI2014] 聪明的燕姿 dfs
    P1546 [USACO3.1]最短网络 Agri-Net(洛谷)
    并查集详解+模板
    sync_with_stdio和cin.tie(0); cout.tie(0);
    拓扑排序详解
  • 原文地址:https://www.cnblogs.com/longintchar/p/5224402.html
Copyright © 2011-2022 走看看