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

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

目录

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



相关推荐
蒙奇D索大1 天前
【数据结构】考研408 | 红黑树收官与B树启航:删除策略与多路平衡解析
数据结构·笔记·b树·考研·改行学it
元亓亓亓1 天前
考研408--计算机网络--day7--网络层&IPv4&子网划分&CIDR
计算机网络·考研·子网划分·408·ipv4·子网掩码·cidr
CS创新实验室2 天前
计算机考研408【数据结构】核心知识点总结
数据结构·考研·计算机·408
立志成为大牛的小牛2 天前
数据结构——五十八、希尔排序(Shell Sort)(王道408)
数据结构·学习·程序人生·考研·算法·排序算法
立志成为大牛的小牛2 天前
数据结构——五十七、插入排序(王道408)
数据结构·笔记·程序人生·考研·算法
图先3 天前
第十八讲多元函数积分学(四)——平面第二型曲线积分和空间第二型曲线积分
考研
立志成为大牛的小牛3 天前
数据结构——五十五、散列查找的性能分析(线性探测法)(王道408)
数据结构·程序人生·考研·算法
蒙奇D索大3 天前
【数据结构】考研408|数据结构高分堡垒:攻克红黑树五大性质与适度平衡思想
数据结构·笔记·考研·改行学it
元亓亓亓3 天前
考研408--操作系统--day7--非连续分配管理方式
考研·操作系统·存储·408