news 2026/4/28 2:03:39

考研408--组成原理--day7--指令扩展操作码寻址

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
考研408--组成原理--day7--指令扩展操作码寻址


(以下内容全部来自上述课程)

目录

  • 指令格式
    • 1. 指令的定义
    • 2. 指令的分类
      • 2.1 按地址码数目分类
      • 2.2 按指令长度分类
      • 2.3 按操作码长度分类
      • 2.4 按操作类型分类
    • 3. 小结
  • 扩展操作码
  • 指令寻址
    • 1. 提出问题
    • 2. 顺序寻址
      • 2.1 按字编址--定长
      • 2.2 按字节编址--定长
      • 2.3 按字节编址--变长
    • 3. 跳跃寻址
    • 4. 小结
  • 数据寻址
    • 1. 直接寻址
    • 2. 间接寻址
    • 3. 寄存器寻址
    • 4. 寄存器间接寻址
    • 5. 隐含寻址
    • 6. 立即寻址
    • 7. 小结
  • 偏移寻址
    • 1. 基址寻址
    • 2. 变址寻址
    • 3. 相对寻址
    • 4. 小结
    • 5. 扩展:硬件比较
  • 堆栈寻址

指令格式





1. 指令的定义

指令=操作码+地址码

2. 指令的分类

指令=操作码+地址码

2.1 按地址码数目分类

后缀表达式过程:

  • 指针指到A:先将A送入栈底–>指针指到B:将B送进去–>指针指到+:将A与B相加压入栈底
  • 其余相同,就是先送入数据,指到运算符就将前几个数进行运算再压入占地

零地址指令:

  • 因为是直接执行停机神马的操作,操作的对象是这个机器,所以就不需要地址位。

    一地址指令:
  • 因为只算是简单的计算,所以只需要一个地址(变相只需要一个数)
  • OP(A1)–>A1:将A1中的数进行OP操作后再将结果赋值给A1
  • (ACC)OP(A1)–>ACC:ACC隐含的数和A1的数进行OP操作后将结果赋值给ACC

    二地址指令:
  • (A1)OP(A2)–>A1:将A1的数和A2的数进行OP操作后将结果写回A1

三地址指令:

  • (A1)OP(A2)–>A3:将A1的数和A2的数进行OP操作后将结果写至A3

区别:就是三比二多了个地址位存结果

就是比之前多放了一个地址数用来存下一个地址指令的位置

注意如果指令的字长是固定的,所以如果地址位越多,可分配的地址比特位就越少,能查的地址也就越有限,寻址能力就越差。

2.2 按指令长度分类

  • 指令字长:会变
  • 机器字长:不变
  • 存储字长:不变

2.3 按操作码长度分类

2.4 按操作类型分类

  • 数据传送类
  • 运算类:算术逻辑操作+移位操作
  • 程序控制类
  • 输入输出操作

3. 小结

扩展操作码

  • 定长指令字结构:所有指令的比特位数相同。
  • 变长指令字结构:…不同。
  • 定长操作码:操作码的比特位数相同。
  • 变长操作码:…不同。
  • 扩展操作码:指令比特位数相同+操作码比特位数不同
  • 作用:用来区分一地址指令神马的(通过操作码的长度判断)
  • 简单来说,就是通过看前面有多少组整数倍的分组比特位的1.
  • 比如图中的例子,分组比特位=4bit,就看有多少组1111(四个1)
  • 三地址指令:正常操作数占一组,没有1111,所以就有三个地址码
  • 二地址指令:正常操作数占一组,有一组1111,所以就有两个地址码
  • 所以查看是几地址指令,就是(四组-一组正常操作数)–>固定,可能再减去1111,看1111有几组就减几

    机器识别指令,都是先从前面的操作码再往后扫描的
  • 扩展操作码都是1111在操作码的前一组,如果与正常组换了位置,就是先扫描正常操作码
  • 还没等扫描1111的扩展操作码的时候就直接判定这是个几地址指令了
  • 所以判断这是几地址指令的关键是:在前位的1111有几组

    具体可以参考这个例子感受一下
    1111必须在前面

指令寻址

1. 提出问题

2. 顺序寻址

2.1 按字编址–定长

  • 按字编址:指令字长=存储字长=16bit(2B)–> 1 个存储字(1 个地址单元)恰好存放 1 条指令。
  • 所以想跳到下一条指令直接+1就可以了。

2.2 按字节编址–定长

  • 按字节编址:一条指令需要两个字节才能存下
  • 所以想跳到下一条指令,就必须+2,如果+1就是跳到第一条指令的后半段

2.3 按字节编址–变长

  • 变长:长几个字节就+几
  • 0+4–>4:黄–>绿
  • 4+2–>6:绿–>灰

3. 跳跃寻址

JMP指的是直接跳到后面的地址位,就跳到了指令地址为7的指令,开始执行指令7.

4. 小结

数据寻址

  • 因为将指令存入内存的时候不可能按照从0往后的顺序刚好给你存入,所以在跳跃寻址中,如果你从100才开始存的这堆指令,跳到7就有可能跳到别的进程的指令中了,由此可见7这个绝对地址是不可用的(见中间的图表)
  • 这样就必须引入相对地址的概念,见第三个图表,3是相对于当前的指令而言的位置,所以向下跳过三个格就是想要执行的指令
  • 后面这种寻址方法就属于数据寻址(因为按照地址码来找的指令)

1. 直接寻址

A直接存放真实地址(可以直接找到)
缺点就是,超过A可存放的地址位的数字,它就没办法找到了

操作码和地址码中间的是特征码,指明这条指令用的是什么寻址方式

2. 间接寻址

因为直接寻址有的地址没办法找到,所以间接可以扩大可寻找的地址
一个指向另一个,这样总能找到想要的地址和数据
套娃操作:地址码中存放地址码

也可以中间间接好几次,无限套娃

扩大寻址范围:第一次的地址码位数低,而第二次的地址码位数高,就大大扩大了可寻址范围
如图中第一个就只能找到02^16^-1个地址,而第二个就可以找到0232-1

缺点就是需要多次访存(因为地址码套地址码)

3. 寄存器寻址

快但贵

4. 寄存器间接寻址

同间接寻址但寄存器版

5. 隐含寻址

需要额外的硬件(可能适用于保密数据?)

6. 立即寻址

我们之前做计算都是用地址码指向的数据,这次地址码就是需要的数据,所以叫做立即
为什么不叫直接寻址?因为直接寻址寻找到的是地址嘛,立即是数
缺点依旧是范围
注意:#是立即寻址的特征

7. 小结

偏移寻址

可以理解为相对寻址,毕竟都是相对某某来寻址,区别就是这个某某不同


1. 基址寻址

  • 相对于基址存储器中的地址来寻址
  • 基址寄存器:专用基址寄存器 or 通用寄存器(需指定)
  • BR内容不可改
  • 形式地址可改


2. 变址寻址

  • 相对于变址存储器中的地址来寻址
  • 变址寄存器:专用变址寄存器 or 通用寄存器(需指定)
  • IX内容可改
  • 形式地址不可改




3. 相对寻址

  • 原始版本:相对于下一条指令



4. 小结

5. 扩展:硬件比较

堆栈寻址

  • POP ACC:把SP指向的数字(此时栈顶元素)放入ACC
  • POP X:把SP指向的数字(此时栈顶元素)放入X
  • (SP)+1–>SP:就是指针向下移动,相当于把刚刚指向的数字丢掉
  • ADD Y:ACC中的数字和X中的数字通过ALU相加得到的结果存入Y
  • PUSH Y:将Y中的数字存入堆栈(栈顶指针上移)



版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 13:30:40

LeetCode热题100--215. 数组中的第K个最大元素--中等

题目 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,6,4]…

作者头像 李华
网站建设 2026/4/27 13:46:22

C语言递归函数的习题笔记

字符串逆序的递归实现(C语言)在C语言中,实现字符串逆序的递归方法是一种高效且直观的方式。递归的核心思想是将问题分解为更小的子问题:通过交换字符串的首尾字符,然后递归地处理剩余的子字符串,直到整个字…

作者头像 李华
网站建设 2026/4/26 22:05:00

Flutter 通用弹窗组件 CustomDialogWidget:全自定义布局 + 多场景适配

在 Flutter 开发中,弹窗是交互反馈、信息确认、选项选择的核心载体。原生 showDialog 存在样式固化、布局灵活度低、多按钮适配差等问题,重复开发易导致 APP 内弹窗风格混乱。本文封装的 CustomDialogWidget 整合 “头部 内容 按钮区” 全自定义、单选…

作者头像 李华
网站建设 2026/4/25 17:29:53

Flutter 通用列表项组件 CommonListItemWidget:全场景布局 + 交互增强

在 Flutter 开发中,列表是数据展示的核心载体,而列表项的样式统一性与灵活性直接影响开发效率与用户体验。原生 ListTile 存在图标位置固定、不支持徽章提示、自定义布局受限等问题。本文封装的 CommonListItemWidget 整合 “图标 / 图片 标题 副标题 …

作者头像 李华
网站建设 2026/4/27 12:18:49

论文目录工具排名:9大平台+自动格式调整

论文目录工具排名:9大平台自动格式调整 核心工具对比速览 工具名称 核心功能 处理速度 适用场景 特色优势 aibiye AI生成内容检测与降重 20分钟 学术论文降AIGC 知网/格子达/维普三平台适配 aicheck AI内容识别与优化 20分钟 混合AI内容处理 保留专业…

作者头像 李华