指令系统

参考:【组成原理-指令】指令系统 - Mount256 - 博客园

指令系统:一台计算机能执行的机器指令的集合,也可以叫做指令集

指令格式

指令应该包含的信息:要执行的操作;操作数的来源;操作结果的去向

地址码A:用来存放于操作数有关的信息

可以是操作数本身(立即数);存放操作数的地址;目标操作数地址;以及下一条指令的地址

操作数的地址:主储存器、CPU中的寄存器、I/0接口寄存器或堆栈中

零地址指令:不需要操作数 或堆栈指令 Push/Pop

一地址指令:

单目运算:既是源操作数地址,也是存放结果的地址

双目运算:另外一个操作数存放在累加器AC中,结果也放在累加器AC中

二地址指令:

两个源操作数地址,结果放在其中一个

主要发生在寄存器与寄存器、存储器与存储器以及寄存器与存储器之间

三地址指令:两个源操作数地址+一个存放结果的地址

操作码OP:描述指令的操作功能,即要求计算机完成什么工作

操作码长度固定:固定长度操作码 8bit 例子:IBM 360/370

操作码长度不固定:可变长度操作码 4bit 8bit 例子:PDP-11

操作码扩展技术:操作码由短到长进行分析,具体分析见下面例题

Q:一个计算机系统采用 32 为指令字长,地址码为 12 位,若定义了 250 条二地址指令,则还可以定义多少条单地址指令?

A:一个地址码对应12位,所以最多有两个两个地址码

二地址指令

0000 0000 A2 A1

···

1110 1001 A2 A1

单地址指令

1110 1001 0000 0000 0000 A1

···

1110 1001 1111 1111 1111 A1

1110 1010 0000 0000 0000 A1

···

1110 1010 1111 1111 1111 A1

所以可以定义212*6 = 24k条指令

指令长度

机器字长:CPU能直接处理的二进制数据的位数

指令长度:一条指令所包含的二进制代码的总位数

取决于:操作码的长度、操作数地址的长度和操作数地址的个数

按字节编址:指令长度为字节的整数倍

存储字长:一个存储单元存储二进制代码的长度

注:指令长度、机器字长和存储字长一般都是字节的整数倍

指令长度等于机器字长的指令,称为单字长指令

在一个指令系统中,若每条指令的长度都相同,则称为固定长度编码格式;否则称为可变长度编码格式

[补] 数据存放

数据在存储器中存放方式

按字节编址

按字节编址:每个字节存储单元都有一个地址编号

按字节地址寻址:给出一个字节地址,取出长度为一个字节的数据

1 字 = 4 字节

(按字编址:每个字存储单元对应一个地址编号 (没办法取字节))

按字地址寻址:给出一个字地址,取出长度为一个字的数据

字地址:每个字中最小的字节地址

假设数据长度为 4B,则需要给出 4个字节地址或 1个字地址

程序计数器PC

程序计数器PC存放的是下一条要访问的存储器地址

具体加几 与指令大小和编址方式有关

大端存储和小端存储

数据的高位和低位:从左到右,左边位高位,右边为低位

边界对齐存储:数据从字地址,即每个字的最小地址开始存储,或者说起始地址是字长的整数倍

Q:某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令 29 条,二地址指令 107 条,每个地址字段为 6 位,则指令字长至少为多少?

A:三地址指令有29条,16<29<32,所以当用三地址指令时,至少有5位操作码

假设三地址指令就用5位操作码,那么还有32-29=3,说明还剩余3位分配给一地址指令,而一个地址有6位,所以二地址能实现的指令数是26*3 = 192 > 107,说明够用

所以指令字长至少为5+18=23位,又因为按字节编址,所以指令字长应该是8的倍数,故至少为24位

寻址方式

寻址方式:指令给出操作数或操作数地址的方式

有效地址EA:指令中给出操作数所在存储单元的地址

形式地址A:指令的地址码给出的地址,即地址码里存的就是形式地址

形式地址A经过转换,可以变成有效地址EA

现代CPU有多种寻址方式:操作码中含有寻址特征MOD字段,据此来使用不同的寻址方式,即寻址方式被编码到操作码中

指令寻址

下一条指令的地址,始终由程序计数器PC给出

数据寻址

  • 立即寻址

    • eg. mov R1, 5

    • 指令中直接给出了立即数5

  • 直接寻址

    • 指令的地址码给出了操作数所在存储单元的地址

    • 这种情况下,形式地址等于有效地址

  • 间接寻址

    • 指令的地址码给出的是指向操作数所在存储单元的地址

  • 寄存器直接寻址

    • eg. mov Ax,Bx

  • 寄存器间接寻址

  • 变址寻址

    • 用于对数据串进行操作 D表示首地址

  • 基址寻址

    • 基址寄存器 D表示偏移量

    • 使用多用户计算机系统

变址寻址和基址寻址的区别:变量不同

  • 相对寻址

    • D 偏移量 可正可负 用补码表示

    • D的最高位如果是1,表示为负数

    • 要么将十六进制转成二进制进行加减

    • 要么在十六进制前拓展符号位,对于负数,加FF;对于正数,加00

  • 堆栈寻址

    • 先进后出

    • Push/Pop 操作数隐含为栈顶元素

指令给出的操作数地址永远是最小的那个

Q:设相对寻址的占 3 个字节,第一字节为操作码,第二,三字节为相对位移量(补码表示)。而且数据在存储器中采用以低字节地址为字地址的存放方式。每当 CPU 从存储器取出一个字节时,即自动完成 (PC)+1->PC。

(1)若 PC 当前值为 240(十进制),要求转移到 290(十进制),则转移指令的第二、三字节的机器代码是什么?

(2)若 PC 当前值为 240(十进制),要求转移到 200(十进制),则转移指令的第二、三字节的机器代码是什么?

A:执行转移指令时,PC = 240 + 3 = 243

(1) 相对偏移量为 290 - 243 = 47

转换成补码是 002FH

(47 = 32 + 8 + 4 + 2 + 1

47 原码:0000 0000 0010 1111

正数的补码和原码相同

所以,机器代码为0000 0000 0010 1111)

(2) 相对偏移量为 200- 243 = -43

转换成补码是 FFD5H

(先求43的原码 41 = 32 + 8 + 2 + 1

43 原码:0000 0000 0010 1011

按位取反:1111 1111 1101 0100

+1:1111 1111 1101 0101

所以,机器代码为1111 1111 1101 0101)

Q:某计算机采用大端方式,按字节编址。某指令中操作数的机器数为 1234 FF00H,该操作数采用基址寻址方式,形式地址(用补码表示)为 FF12H,基址寄存器的内容为 F000 0000H,则该操作数的 LSB(最低有效字节)所在的地址是什么?

A:大端方式:数据的高字节,保存在内存的低地址;而数据的低字节,则保存在内存的高地址中

(类似字符串的存储模式)

补码 FF12 对应二进制:1111 1111 0001 0010

-1:1111 1111 0001 0001

按位取反:0000 0000 1110 1110

1000 0000 1110 1110

FF12对应十六进制原码:80EEH

F000 0000H - 0000 80EEH = EFFF FFFFH + 1H - 0000 80EEH

= EFFF 7F12H

指令中操作数的机器数:1234 FF00H

12被存在EFFF 7H12H中

···

00被存在EFFF 7H15H中

所以该操作数的LSB所在的地址为 EFFF 7H15H

指令类型与功能

按功能分为:数据传送类指令、数据运算类指令、程序控制类指令和输入输出类指令

  • 数据传送类指令

    • 主要实现主存和主存之间、主存和寄存器之间、寄存器和寄存器之间的数据传送

    • 一次传送一个数据或一次传送一批数据

  • 数据运算类指令

    • 实现数据的算数运算、逻辑运算和移位运算

    • 算数运算:+、-、*、/;加1、减1;比较指令等

    • 逻辑运算:与、或、非、异或等

    • 移位运算:算数移位、逻辑移位和循环移位(分为左移和右移两种)

  • 程序控制类指令

    • 主要用来控制程序执行的顺序和方向

    • 通常情况,程序按程序计数器PC执行的顺序执行,遇到程序控制类执行,就会改变这种执行顺序

    • 包含转移指令、子程序调用和返回指令、自陷指令等

  • 输入/输出指令

    • 简称I/O指令,主要用于实现主机与外部设备之间的信息交换

指令系统的发展和改进

复杂指令系统计算机 CISC

一条指令完成一个复杂的基本功能

代表:x86架构 笔记本、台式机

精简指令系统计算机 RISC

一条指令完成一个基本工作,多条指令组合完成一个复合的基本功能

代表:ARN架构 手机、平板

计组知识点总结 指令系统相关推荐

  1. 临时抱佛脚之计组知识点

    这个非科班的博主懂得蛮多的 也太厉害了 原文地址 www.cnblogs.com 目录 一.计算机系统概论 二.数据表示 三.运算方法与运算器 四.存储系统 五.指令系统 六.中央处理器 七.总线 八 ...

  2. 【计组 期末版】计算机组成原理笔记目录

    [计组 期末版]计算机组成原理笔记目录 前言 参考教材:<计算机组成原理>(第三版) 唐朔飞 主要参考视频: <计算机组成原理>期末四小时讲完附赠讲义 发布者:乐智教学 主讲人 ...

  3. 【计组理论期末考试模拟题】21级计科专业计算机组成原理

    [计组理论期末考试模拟题]21级计科专业计算机组成原理 一.选择题 二.多选题 三.填空题 四.程序填空题 五.编程题 一.选择题 2-1 在定点二进制运算器中,减法运算一般通过()来实现. A.原码 ...

  4. 计算机组成实验六MIPS汇编器,杭电计组实验6-MIPS汇编器与模拟器实验.doc

    <杭电计组实验6-MIPS汇编器与模拟器实验.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<杭电计组实验6-MIPS汇编器与模拟器实验.doc> ...

  5. 【Computer Organization笔记15】清华计组大作业布置:奋战二十天,做台计算机!

    本次笔记内容: P29 计算机组成原理(29):第25分钟起 P30 计算机组成原理(30) 我的计组笔记汇总:计算机组成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 108 ...

  6. 计组——彻底搞懂cache主存映射以及cache容量的计算

    cache主存映射以及cache容量 一.三种映射方式 1. 全相联映射 2. 直接映射 3. 组相联映射 二.cache容量计算 1. 先计算cache行标记项位数 2. 再计算cache块位数 3 ...

  7. 计组期末复习之例题与解析

    计组例题与解析 第一章:概论 无 第二章:运算方法和运算器 例2-1 求补码 对于正数,不变 对于负数,符号位不变,数值位取反加一 例2-2 数轴形式表示原码.反码.补码范围 第一位符号位,后面是数值 ...

  8. 【面试】计网知识点复习与总结

    [面试]计网知识点复习与总结 1. 计算机网络层次结构 ISO/OSI七层网络模型与TCP/IP五层网络模型的比较如图所示: 物理层:它的主要作用是传输比特流,进行模数转换与数模转换,这一层的数据叫做 ...

  9. 计组期末复习---个人版

    (一)计算机系统概论 1.1计算机分类与发展历史 分类:电子模拟计算机和电子数字计算机 电子模拟计算机:数值由连续量来表示,运算过程是连续的 电子数字计算机:按位运算,并且不是连续地跳动运算 专用计算 ...

  10. 计组之中央处理器:7、指令流水线基本概念性能指标、影响因素

    7. 指令流水线基本概念 指令流水的定义 指令的执行方式 流水线的表示方法 流水线的性能指标 1. 吞吐率 2. 加速比 3. 效率 指令流水线的影响因素 五段式指令流水线 影响因素 1.结构相关(互 ...

最新文章

  1. 为什么 Linux的开发者要转到Windows 10 平台!
  2. 如何在程序中生成崩溃转储dump文件以及如何分析dump
  3. [原]动态打jar包程序,可用于手机图片音乐游戏的动态打包
  4. Linux学习资料-万用字符与特殊符号
  5. Android recyclerView/listview的点击变色、点击换背景颜色
  6. Qt拖放 drag and drop
  7. 微课|中学生可以这样学Python(例7.2):三维向量类
  8. 【COGS 1873】 [国家集训队2011]happiness(吴确) 最小割
  9. python使用os.system()方法进行多模块安装
  10. GridView控件 Reapter控件 DataList控件 的区别和用法
  11. 廖雪峰网站python学习笔记——字符串和编码
  12. windows基线加固
  13. 相机光学(五)——对运动物体的曝光时间的计算
  14. 实战剖析:13步设计出一个ITSM系统
  15. python 英语分词_自然语言处理 | NLTK英文分词尝试
  16. c语言进行数据统计分析的研究报告,统计分析报告范文
  17. 126篇殿堂级深度学习论文分类整理,从入门到应用
  18. maven中的一些依赖
  19. 2018 之后,Android 工程师将何去何从?
  20. 微信小程序 tab选项卡,可点击,可滑动

热门文章

  1. 集成软件开发环境WipeOut
  2. 30天自制操作系统——第二十四天增加命令行窗口
  3. 推荐一个免费的JSP空间
  4. 荒野行动pc版显示连接不到服务器,荒野行动PC版连接不上服务器怎么办 进不去游戏...
  5. 怎样利用闲鱼赚差价?教你在闲鱼卖货赚钱!
  6. java struts json_json与java对象的转换,以及struts2对json的支持,实现ajax技术
  7. 【虹科技术分享】如何测试 DNS 服务器:DNS 性能和响应时间测试
  8. Cesium 修改鼠标样式
  9. 飞龙在天之DB面试资料
  10. 树莓派ONVIF推流做网络摄像头