文章目录

  • 1 指令格式
    • 1.1 指令定义
    • 1.2 指令格式
    • 1.3 指令格式-地址码
    • 1.4 指令格式-操作码
    • 1.5 操作码分类
    • 1.6 操作类型
  • 2 数据存放指令寻址
    • 2.1 数据存放方式
    • 2.2 指令寻址
    • 2.3 操作数类型
    • 2.4 数据寻址
      • 2.4.1立即寻址
      • 2.4.2 直接寻址
      • 2.4.3 间接寻址
      • 2.4.4 寄存器寻址
      • 2.4.5 寄存器间接寻址
      • 2.4.6 隐含寻址
    • 2.5 数据寻址-2偏移寻址
      • 2.5.1 基址寻址
      • 2.5.2 变址寻址
      • 2.5.3 相对寻址
      • 2.5.4 相对寻址举例
      • 2.5.5 寻址方式小结
      • 2.5.6 堆栈寻址
    • 2.6 CISC和RISC
    • 2.7 指令系统小结

1 指令格式

1.1 指令定义

指令(又称机器指令):

是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。

一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。

注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。

1.2 指令格式

一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。

一条指令通常要包括操作码字段和地址码字段两部分:

1.3 指令格式-地址码

指令含义(A1)OP(A2)→A3,A4=下一条将要执行指令的地址
设指令字长为32位,操作码占8位,4个地址码字段各占6位
设存储字长为32位,即 4B

  • Ai 可直接表示 26=64 个不同的位置
  • 一条指令的执行(假设每个地址都是主存地址):

取指令访存1次(假设指令字长=存储字长)
取两个操作数访存2次
存回结果访存1次
总计共访存4次

设指令字长及存储字长均为32位,操作码占8位


指令含义(A1)OP(A2)→A3,A4=下一条将要执行指令的地址

4个地址码字段各占6位,指令操作数直接寻址范围为 26=64;
完成一条指令需要访存4次


指令含义(A1)OP(A2)→A3

3个地址码字段各占8位,指令操作数直接寻址范围为 28=256;
完成一条指令需要访存4次


指令含义(A1)OP(A2)→A1

2个地址码字段各占12位,指令操作数直接寻址范围为 212=4K;
完成一条指令需要访存4次


指令含义

  1. OP(A1)→A1,如加1、减1、取反、求补等完成一条指令需要访存3次
  2. (ACC)OP(A1)→ACC,隐含约定的目的地址为 ACC
    完成一条指令需要访存2次
    1个地址码字段占24位,指令操作数直接寻址范围为 224=16M


指令含义

  1. 不需要操作数,如空操作、停机、关中断等指令
  2. 堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶

指令字结构

  • 定长指令字结构:指令长度固定
  • 变长指令字结构:指令长度不等

1.4 指令格式-操作码

定长操作码:n位→ 2n 条指令
扩展操作码:操作码长度可变

扩展操作码举例
扩展思想:即动态的把地址码用作操作码,而为了识别变化,上一层操作码字段留出一个状态表示下一层

在设计扩展操作码指令格式时,必须注意以下两点:

  1. 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同
  2. 各指令的操作码一定不能重复。
    通常情况下,对使用频率较高的指令,分配较短的操作码;
    对使用频率较低的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间。

设地址长度为 n,上一层留出 m 种状态,下一层可扩展出 mx2n 种状态

1.5 操作码分类

  • 操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。
  • 操作码是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息。例如,指出是算术加运算,还是减运算;是程序转移,还是返回操作。
  1. 定长操作码:在指令字的最高位部分分配固定的若干位(定长)表示操作码。
    一般 n 位操作码字段的指令系统最大能够表示 2n 条指令。

:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利;
:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。

  1. 扩展操作码(不定长操作码):全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。
    最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。

:在指令字长有限的前提下仍保持比较丰富的指令种类;
:增加了指令译码和分析的难度,使控制器的设计复杂化。

1.6 操作类型

  1. 数据传送源目的
  • LOAD作用:把存储器中()的数据放到寄存器中(目的
  • STORE作用:把寄存器中的数据放到存储器
  1. 算术逻辑操作
  • 算术:加、减、乘、除、增1、减1、求补、浮点运算、十进制运算
  • 逻辑:与、或、非、异或、位操作、位测试、位清除、位求反
  1. 移位操作

算术移位、逻辑移位、循环移位(带进位和不带进位)

  1. 转移操作
  • 无条件转移JMP
  • 条件转移JZ:结果为0;JO:结果溢出;JC:结果有进位
  • 调用和返回CALLRETURN
  • 陷阱(Trap)与陷阱指令
  1. 输入输出操作

CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)

也可以分为以下四类:

  • 数据传送类:进行主存与CPU之间的数据传送
  • 运算类
  • 程序控制类:改变程序执行的顺序
  • 输入输出类(I/O):进行CPU和I/O设备之间的数据传送

2 数据存放指令寻址

2.1 数据存放方式

三个字长:

  • 机器字长:CPU一次能处理的二进制数据的位数,受寄存器能够存放二进制位数的限制。
  • 指令字长:一个指令字中包含二进制代码的位数。
  • 存储字长:一个存储单元存储二进制代码的长度。
    :这三个字长没有固定大小的关系,但这些长度都是字节的整数倍

单字长指令:指令长度=机器字长
半字长指令、双字长指令

2.2 指令寻址

指令寻址

顺序寻址:(PC)+1→PC
跳跃寻址:由转移指令指出

2.3 操作数类型

2.4 数据寻址


数据寻址即根据寻址方式的要求将形式地址转化为实际地址的过程

2.4.1立即寻址

立即寻址:形式地址A就是操作数本身,又称为立即数,一般采用补码形式。
#表示立即寻址特征。

一条指令的执行:

取指令访存1次
执行指令访存0次
暂不考虑存结果
共访存1次

  • 优点:指令执行阶段不访问主存,指令执行时间最短
  • 缺点:A的位数限制了立即数的范围。
    如A的位数为 n,且立即数采用补码时,可表示的数据范围为 - 2 n - 1 ~ 2 n - 1-1
2.4.2 直接寻址

直接寻址:指令字中的形式地址A就是操作数的真实地址EA,即 EA=A。


一条指令的执行:

取指令访存1次
执行指令访存1次
暂不考虑存结果
共访存2次

  • 优点:简单,指令执行阶段仅访问一次主存,不需专门计算操作数的地址。
  • 缺点:A的位数决定了该指令操作数的寻址范围。
    操作数的地址不易修改。
2.4.3 间接寻址

间接寻址:指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即 EA=(A)。

  • 优点:可扩大寻址范围(有效地址EA的位数大于形式地址A的位数)。
    便于编制程序(用间接寻址可以方便地完成子程序返回)。
  • 缺点:指令在执行阶段要多次访存
    一次间址需两次访存,多次寻址需根据存储字的最高位确定几次访存。
2.4.4 寄存器寻址

寄存器寻址:在指令字中直接给出操作数所在的寄存器编号,即 EA=Ri,其操作数在由Ri所指的寄存器内。


与直接寻址类似,只是把主存换成了寄存器

一条指令的执行:

取指令访存1次
执行指令访存0次
暂不考虑存结果
共访存1次

  • 优点:指令在执行阶段不访问主存,只访问寄存器,指令字短且执行速度快,支持向量/矩阵运算。
  • 缺点:寄存器价格昂贵,计算机中寄存器个数有限。
2.4.5 寄存器间接寻址

寄存器间接寻址:寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即 EA=(Ri)。

一条指令的执行:

取指令访存1次
执行指令访存1次
暂不考虑存结果
共访存2次

  • 特点:与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存(因为操作数在主存中)。
2.4.6 隐含寻址

隐含寻址:不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。

  • 优点:有利于缩短指令字长。
  • 缺点:需增加存储操作数或隐含地址的硬件。

小结

寻址方式 有效地址 访存次数(指令执行期间)
隐含寻址 程序待定 0
立即寻址 A即是操作数 0
直接寻址 EA=A 1
一次间接寻址 EA=(A) 2
寄存器寻址 EA=Ri 0
寄存器间接一次寻址 EA=(Ri 1

2.5 数据寻址-2偏移寻址

2.5.1 基址寻址

基址寻址:将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,即EA=(BR)+A

:基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。
在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)

当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由操作系统确定。

  • 优点:可扩大寻址范围(基址寄存器的位数大于形式地址A的位数);
    用户不必考虑自己的程序存于主存的哪一空间区域,故有利于多道程序设计,以及可用于编制浮动程序。
2.5.2 变址寻址

变址寻址:有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,即EA=(IX)+A,其中IX为变址寄存器(专用),也可用通用寄存器作为变址寄存器。

:变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量),形式地址A不变(作为基地址)。

  • 优点:可扩大寻址范围(变址寄存器的位数大于形式地址A的位数);
    在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。

变址寻址与基址寻址配合使用:EA=A+(BR)+(IX)
变址寻址与间接寻址配合使用:

  • 如先变址后间址,EA=(A+(IX))
  • 先间址后变址,EA=(A)+(IX)
2.5.3 相对寻址

相对寻址:把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(PC)+A,其中A是相对于当前指令地址的位移量,可正可负,补码表示。

  • 优点:操作数的地址不是固定的,它随着PC值的变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动。。
    相对寻址广泛应用于转移指令。
2.5.4 相对寻址举例

某机器指令字长为16位,主存按字节编址,取指令时,每取一个字节PC自动加1。当前指令地址为2000H,指令内容为相对寻址的无条件转移指令,指令中第一个字节为操作码,第二个字节为形式地址,当前形式地址为40H。
(1)求取指令后及指令执行后PC内容。
(2)若要求转移到1F00H,求形式地址的内容。

(1)PC中一开始存放2000H,多字节指令,第一次取出的是操作码,PC更新为2001H,在2001H中取出地址码,取数过程结束,PC更新为2002H

CPU分析指令的结果:是一条无条件转移指令,EA=(PC)+A =2002H+40H =2042H
故取指令后PC内容为2002H,指令执行后PC内容为2042H

(2)即(PC)+A=2002H+A=1F00H
A=1F00H-2002H=1EFFH+1H-2002H =1EFFH-2002H+1H=FEFDH+1H=FEFEH

说明:(1EFFH-2002H=FEFDH,F(15)-2=13→D,1-2 不够减,向上借位,若是10进制,+10,这是16进制,+16为17,17-2=15,15的16进制就是F)
形式地址就是偏移量

2.5.5 寻址方式小结
寻址方式 有效地址 访存次数(指令执行期间)
隐含寻址 程序待定 0
立即寻址 A即是操作数 0
直接寻址 EA=A 1
一次间接寻址 EA=(A) 2
寄存器寻址 EA=Ri 0
寄存器间接一次寻址 EA=(Ri 1
相对寻址 EA=(PC)+A 1
基址寻址 EA=(BR)+A 1
变址寻址 EA=(IX)+A 1
  • 相对寻址:指令中的形式地址给出一个位移量A,基准地址由程序计数器PC提供,通常用于转移指令中转移目标或公共子程序中的操作数的寻址
  • 变址寻址:通常用于循环体中对数组元素的访问
2.5.6 堆栈寻址

堆栈寻址:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址。

堆栈是存储器(或专用寄存器组)中一块特定的按后进先出(LIFO)原则管理的存储区,该存储区中被读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。

2.6 CISC和RISC

CISC:Complex Instruction Set Computer(复杂指令系统计算机)

  • 设计思路:一条指令完成一个复杂的基本功能。
  • 代表:×86架构,主要用于笔记本、台式机等

RISC:Reduced Instruction Set Computer(精简指令系统计算机)

  • 设计思路:一条指令完成一个基本“动作”;多条指令组合完成一个复杂的基本功能。
  • 代表:ARM架构,主要用于手机、平板等

2.7 指令系统小结

5 计算机组成原理第四章 指令系统相关推荐

  1. 计算机组成原理第四章ppt,计算机组成原理-第四章--指令系统.ppt

    计算机组成原理-第四章--指令系统.ppt 1,第四章 指令系统,4.1 指令系统的发展与性能要求 4.2 指令格式 4.3 操作数类型 4.4 指令和数据的寻址方式 4.5 典型指令 4.6 ARM ...

  2. (王道计算机组成原理)第四章指令系统-第一节2:扩展操作码

    王道考研复习指导获取:密码7281 专栏目录首页:[专栏必读]王道考研408计算机组成原理万字笔记.题目题型总结.注意事项.目录导航和思维导图 文章目录 一:重述几个概念 二:为什么要扩展操作码 三: ...

  3. 计算机组成原理 第四章 指令系统

    4.1 指令格式 指令是计算机执行某种操作的命令.一条指令就是机器语言的一个语句,是一串有意义的二进制代码,一般为分操作码和地址码两部分. 操作码指示应该执行什么性质的操作和具有什么样的功能.地址码则 ...

  4. (计算机组成原理)第四章指令系统-第一节2:扩展操作码

    上一节说过,指令由操作码和地址码构成.其中,如果指令系统中所有指令的长度都相等则称为定长指令字结构,如果指令系统中各种指令的长度不等则称为变长指令字结构 另外,如果指令系统中所有指令的操作码长度都相同 ...

  5. (计算机组成原理)第四章指令系统:本章习题

    第一节 第二节

  6. (计算机组成原理)第四章指令系统-第二节1:指令寻址

    文章目录 一:顺序寻址 二:跳跃寻址 注意指令寻址和数据寻址的区别 指令寻址:下一条欲执行指令的地址会由程序计数器 P C PC PC给出,分为顺序寻址和跳跃寻址 数据寻址:执行一条指令时,解释出这条 ...

  7. 计算机组成原理白朔飞,计算机组成原理(第四章复习).ppt

    计算机组成原理(第四章复习) 计算机组成原理 第四章 指令系统 本章复习要点: 1. 理解指令的基本格式. 定长与扩展操作码格式 2. 掌握指令寻址方式的基 本概念.常见寻址方式 及其有效地址的计算 ...

  8. 计算机组成原理第四章例4.1,计算机组成原理第四章.ppt

    文档介绍: 第四章指令系统4.1序4.2指令格式4.3指令类型4.4寻址方式舅骇引袜米匣栅撬井井芬庙从赚懂一纱灶诛呸仆苔樊能侮柿卸鲤兹掷摆牧计算机组成原理第四章计算机组成原理第四章14.1序指令:完成 ...

  9. 计算机组成原理指令寻址方式,计算机组成原理第四章第4讲指令和数据的寻址方式.ppt...

    <计算机组成原理第四章第4讲指令和数据的寻址方式.ppt>由会员分享,可在线阅读,更多相关<计算机组成原理第四章第4讲指令和数据的寻址方式.ppt(51页珍藏版)>请在装配图网 ...

最新文章

  1. html语言书写注意事项,CSS命名规范参考及书写注意事项
  2. 绩效管理领域对管理者的任务和能力要求
  3. jsp+ajax+servlet+sqlserver实现分页查询_SXT DAY063 分页
  4. 微视已死,腾讯战略放弃微视,大牛纷纷离职,PMcaff--行业内部解读
  5. Oracle 原理:逻辑备份和恢复
  6. JS获取当前对象大小以及屏幕分辨率等
  7. eclipse在ubuntu13.04下崩溃crash
  8. 【Tyvj - 1305】最大子序和(单调队列优化dp)
  9. C#设计模式之20-状态模式
  10. 分配任务的代码PHP,php计划任务的示例代码分享
  11. css不继承上级样式_CSS基础知识(一)
  12. Linux的学习笔记~
  13. 计算机视觉(三)——人脸识别
  14. 【辨异】inverse, reverse, converse
  15. kmeans算法详解与spark实战
  16. ◎Vbs调用MsAgent组件,很有趣
  17. html外链怎么做,外链铺广之路如何走?外链实操战术整理
  18. Python入门习题(89)——OpenJudge百练习题:二分法求函数的零点
  19. 32位计算机如何升级,32位改64位系统怎么安装 32位怎么升级64位系统
  20. mysql的binlog开启方式,查看方式.三种binlog模式介绍.以及使用binlog恢复数据.删除binlog

热门文章

  1. 人体反应测试仪 c语言,人体反应速度测试仪毕业设计说明
  2. 大数据工具使用——安装Hadoop(多台服务器)和Hive、Hbase
  3. mysql中%3c%3e和=_Grafana+Prometheus 监控 MySQL
  4. 人工智能在语音和数字图像处理领域有哪些具体化应用_智能呼叫中心系统有哪些优势...
  5. java中自定义异常的_java中的自定义异常(标准)
  6. Chapter7-5_Multilingual BERT
  7. LeetCode 1562. 查找大小为 M 的最新分组
  8. LeetCode 683. K 个空花盆(set/滑动窗口)
  9. LeetCode 1100. 长度为 K 的无重复字符子串(滑动窗口)
  10. LeetCode 748. 最短完整词