当前位置: 首页 > article >正文

计算机组成原理 指令系统(1)

本文是HIT计算机组成原理上课笔记,由于唐书有些内容讲的比较抽象,添加了一些王道的图片加以补充。

回忆计算机的工作过程

415c963731034aeba171bb1f9e16f81e.png

 代码被编译器翻译成与之对等的机器指令,除了指令之外还会有一些数据同时被放到主存里

14adb30be67a4862b74c34c8d7d38999.png

机器指令

指令格式

一条指令是机器语言的一条语句,是一组有意义的二进制代码,一条指令通常分为操作码和地址码两部分

96e0c69dc88f42e9869c3511d1635c1b.png

op的位数决定能设计出有多少条指令

  1. 定长指令
  2. 可变长的指令

26db13eb35b04f72b63bd02e2e7b0ca2.png

 比如最后一块决定是定点数还是浮点数乘法。        

扩展地址码技术

指令需要经过译码器翻译成机器语言,如果每个指令的位数相同那么译码器的位数也相同,程序执行时间也相同,但是不同的指令出现的频率也不相同,如果每个指令出现的频率都相同显然对于计算机来说是不划算的,比如加法减法要比乘法除法更常用,类似于哈弗曼树的思想,我们将经常使用的指令设计比较短的格式比较长的指令用于不经常使用的指令。

b9d1aec4b61f4026b7f9631023b00bab.png

 解释如果一个指令是16位,一个地址占4位,那么两个三个四个地址分别占8 12 16个地址,比如三个操作数12位,那么前四位会作为操作码来使用,但是机器不会自动区分地址码和操作码,所以必须保留一个1111作为是几地址的操作指令,所以最多只能表示16-1=15条指令。

地址码

7f764713fbae4c71b4b657029280cdb3.png

  1. 取指令A4 取A1 取A2 存A3  现代计算机如果用PC代替A4那么地址码就会减少一个
  2. 取指令 取A1 取A2 把结果保存在A3
  3. 取指令 取两个操作数 保存结果但是如果操作结果保存在ACC累加寄存器 就可以减少一次访存过程
  4. 取指令 取A1操作数 其他不需要访存 一共访问两次主存

2580b44de3c9495ba8c11bffe58131fb.png

指令字长

  • 定长:一般和存储器的位数相等
  • 变长:一般是字节的整数倍。

小结

当用一些硬件资源代替指令码种地址码的字段之后

  • 可以扩大寻址范围
  • 可以缩短指令的字长 地址码的位数减少直接导致指令字长减少
  • 可以减少访存次数 不用访问存储器了

当指令的地址字段为寄存器时 都设计成寄存器就不用访问存储器了

57f1cbebf0584f9ab848aa7af377b252.png

 AX:计数器

BX:基址寄存器

CX:计数器

DX:数据寄存器

操作数类型和种类

操作数类型和在计算机中的存储方式

a437a48f6d15437597cb7e43e53af22e.png

57be779ff51a4c08a7a311750049dd3e.png

 数据在存取的时候一般按照整数边界的方式来存取,整数边界在存取单字或者双字的时候可以减少访存的次数。

9e120c535ddc4ac1a33171f090589e61.png

 顺带复习一下 指令和数据在计算机中的地位是相等的。

数据传送

回想一下 我们实验三做实验的过程,数据是怎么传送的。

  • MOVE :寄存器 寄存器
  • STORE MOVE PUSH :寄存器 存储器
  • LOAD MOVE POP: 寄存器 寄存器
  • MOVE :存储器 存储器

算数逻辑

c766f362cc624c05877f6738527433ce.png

移位操作 

50fe98467df841ba8cf3a006a434ad44.png

 转移跳转

61bbbd55a7904f86abd567828795bbfd.png

e2a05de5f816481ebc8c7b59ea399200.png

 调用和返回

下图演示的是主程序调用子程序的例子,主程序发出CALL SUB1(形式地址),具体子程序放在哪不是由用户来决定的而是由操作系统来决定的,操作系统把名字转换成地址,也可以通过嵌套形式地址,需要硬件提供断点。

d23792bb02c0480589f64caae0e174ea.png

 陷阱和陷阱指令

fc7c93a8a9644903aedd4d613795d726.png输入输出cd0784caf5ba48c38b20ad25bb202d37.png

 数据可以存放在寄存器中也可以存放在存储器中,如果在寄存器中必须要有寄存器号,如果是存储器要有存储器的地址。

寻址方式

立即寻址

618c7baa3e554a5b857e976797d5d7da.png

  •  指令执行阶段不访存
  • A的位数限制了立即数的范围。
  • MOV AX 3

直接寻址

指令字中的形式地址A就是操作数的真实地址EA

4fad196657bc4d5285197ab787a1c6fa.png

  •  执行阶段只访问一次存储器
  • A的位数限制了指令的范围
  • 操作数的地址不易修改

隐含寻址

操作数的地址隐含在操作码中

f64372d8ade34609a7fa4746d2810aef.png

 比如MUL BX 那么被乘数AX隐含在MUL中

间接寻址

c71d3a1fe5984ef39375c78773e922b0.png

  • 隐含寻址
  • 基址寻址
  • 变址寻址
  • 相对寻址
  • 堆栈寻址

 

 

 

 


http://www.kler.cn/a/14193.html

相关文章:

  • itop-3568开发板驱动学习笔记(22)设备树(一)设备树基础
  • L1-094 剪切粘贴
  • 测试月入30K,Soeasy?测试这一行涨薪机制被我摸透了...
  • 【Android FrameWork(四)】- binder service_manager ServiceManager
  • 【Linux命令行与Shell脚本编程】第五章 理解 Shell 父子关系 后台进程 协程
  • 计算机类大学生竞赛经验分享
  • JavaSE 09 File 类 IO 流 - Part 01
  • 搜索引擎找外贸客户
  • 【产品经理】系统上线自查清单
  • TCP协议的相关特性(续)
  • GDB调试gdb
  • 光照的个人推导过程与GL实现
  • WTI纽约原油CFD是什么?交易技巧有哪些?
  • webpack5搭建react框架-配置优化
  • 入阵曲(C++)(前缀和)
  • 【C++】模板(二)
  • python算法中的字符串算法(详解)
  • 十、v-model的基本使用
  • 2023年全国最新道路运输从业人员精选真题及答案62
  • 1. VBA概述