首页 > 其他分享 >指令系统(三)

指令系统(三)

时间:2023-02-17 14:14:34浏览次数:52  
标签:指令系统 IP JMP 地址 寻址 指令 转移

目录

寻址方式(二)

转移地址的寻址方式

程序的执行顺序由CSIP的内容决定。正常情况下,CPU每执行一条指令,IP的内容自动加 1,使之指向下一条指令。当遇到转移指令时,通过自动改变 CSIP 的内容,达到改变程序执行地址的目的。

实现转移的指令:无条件转移指令 JMP,它表示转移到指定的地址。

image-20230217101820195

段内寻址表示转移在本段内完成,段间寻址表示转移在不同段之间完成。

段内寻址

程序开始转移后,只有 IP变化,通过直接寻址或间接寻址寻找偏移地址是多少,然后传送给 IP

直接寻址(相对寻址)

段内直接寻址是指直接在指令中给出转移目的地址(16位偏移地址,使用标号描述),转移在同一个段内完成

下面分析,转移指令JMP

image-20230217111738258

程序汇编后,JMP L1所占字节为,一个字节的操作码+?个字节的相对位移量

下面再看这个相对位移量是多少

image-20230217111746982

  1. 在执行完跳转前,因为程序汇编自上而下进行,IP指到上图位置,汇编会自动计算标号 L1JMP的相对位移量,当满足两个条件

    • 负向转移

    • 相对位移量 < -128

​ 此时汇编后的相对位移量占1个字节,如果 -32768 > 相对位移量 > -128,此时汇编后的相对位移量占2个字节

  1. 假设,标号 L1JMP下方,由于当程序编译到 JMP时不知道相对位移量是多少,此时汇编后的相对位移量占2个字节。

如果你知道标号 L1JMP的相对位移量不会超过 +128字节,怎么让相对位移量占1个字节呢?

解决,把代码改成:

JMP SHORT L1

SHORT型转移说明,负向转移不超过128,正向转移不超过127

总结

  1. JMP指令占2-3个字节,当相对位移量在上图红色区间时或定义为 SHORT型时,占2个字节;当相对位移量在绿色区域内占3个字节
  2. 转移到目的地的IP=当前 IP+相对位移量

8086指令系统中,所有的 条件转移指令只能是段内转移,且只能是 -128~+127。如果我只能使用条件转移,又想转移到段外怎么办呢?

解决:JMP搭桥。条件转移到段内某标号-->使用 JMP

例:8086CPU执行 JZ L1,指令时 IP=0100Hdisp=FDH,指令执行后 (IP)=?。(JZ是条件转移指令)

---------------------------------------------分割线-----------------------------------------------

分析:

  • JZ L1占2个字节,执行完后 IP=0100H+2H=0102H

  • 注意disp=FDH是一个带符号数,因为计算机中带符号数是用补码表示,因为-3的补码是 FDH,所以 disp=-3

    补码:

    • 正数的补码=原码
    • 负数的补码=原码(除符号位外)取反+1
  • (IP)=当前IP+disp=0102H+(-3)=00FFH

间接寻址

段内间接寻址是指转移目的地址(16位偏移地址)保存在寄存器或存储单中,转移也在同一个段内完成

例1:

    MOV BX, OFFSET L2
    JMP BX;(BX)-->IP,段内间接寻址
    .
    .
L2:

例2:

TABLE DW L2
    .
    .
    JMP TABLE;以TABLE变量直接寻址的段内间接寻址
    ;或
    MOV BX, OFFSET TABLE
    JMP WORD PTR [BX];以BX寄存器作间接寻址方式的段内间接寻址
    .
    .
L2:

段间寻址

直接寻址

段间直接寻址是指直接在指令中给出转移目的地址(16 位偏移地址和 16 位段地址),转移在不同段之间完成。指令中用JMP <标号>表示,当然这里的标号与该指令处在不同的段。

间接寻址

段间间接寻址是指转移目的地址(32位地址)保存在存储单元中,转移在不同的段之间完成,在指令中指出存储单元的偏移地址,可以采用以上介绍的 5 种存储器寻址方式。存储单元必须是双字型变量第一个字用于存放目的地址的段内偏移地址,第二个字用于存放目的地址的段地址

标签:指令系统,IP,JMP,地址,寻址,指令,转移
From: https://www.cnblogs.com/x-qiang/p/17129914.html

相关文章

  • Vue - 2 插值语法与指令系统
    目录Vue-2插值语法与指令系统一、插值语法语法案例二、指令1.什么是指令系统?2.文本指令v-htmlv-textv-show:显示/隐藏任务v-if:显示/删除任务3.属性指令4.事件指令5.class......
  • Vue 插值语法与指令系统
    目录Vue插值语法与指令系统一、Vue的MVVM演示二、插值语法三、文本指令四、属性指令五、事件指令六、点击案例七、class和style八、条件渲染九、列表渲染Vue插值语法与......
  • 【Vue day01】前端发展介绍 Vue的快速使用 插值语法 指令系统之文本指令、事件指令、
    目录前端发展介绍Vue框架入门M-V-VM思想组件化开发单页面应用Vue的快速使用前期准备快速使用对象与标签绑定查看Vue对象插值语法三目运算符指令系统之文本指令v-text和v-......
  • 微机原理与系统设计笔记3 | 8086cpu指令系统
    打算整理汇编语言与接口微机这方面的学习记录。本部分介绍8086的指令系统(一些与程序设计密切相关的如子程序调用指令放在下一部分)。参考资料西电《微机原理与系统......
  • 计算机组成原理-指令系统(概括)
    指令操作码 地址码 零地址指令:不需要操作数,如空操作、停机、关中断等指令。一地址指令:加一减一、取反、求补二地址指令:两个操作数的逻辑算数运算三地址指令:多了个......
  • vue简介,插值语法,vue指令系统
    前端页面发展Vue的快速使用插值语法指令系统之文本指令指令系统之事件指令指令系统之属性指令前端页面发展1.HTML(5)、CSS(3)、JavaScript(ES5、ES6)......
  • CPU--指令系统
    1.机器的指令的一般格式:操作码字段,地址码字段; 2.数据在存储器中的存放方式:a,从任意位置开始--不浪费空间,读写控制比较复杂; :b,从一个存储......