[计组] №7. 指令系统

CU

Ⅰ. 机器指令

1.1 指令的一般格式

指令的一般格式
1.1.1 操作码

反映机器做什么操作

  • 长度固定
  • 长度可变
  • 扩展操作码技术
    扩展操作码技术
    • (n+1)地址指令操作码每减少一种,就可以增加24种n地址指令操作码
    • 根据指令操作码的使用频率,可采用哈夫曼树的方式对操作码进行编码,使得使用频率最高的采用短指令码
1.1.2 地址码

地址码的优化改进
  • 四地址->三地址:将PC(程序计数器)代替A4
  • 三地址->二地址:将结果A3用A1或A2代替,即将结果存于操作数所给内存单元
  • 二地址->一地址:将ACC(累加器)中内容与内存单元所给出的操作数A1进行操作
  • 一地址->零地址:当操作不需要给出操作数时,如将ACC中的内容取反,清零

1.2 指令字长

指令字长

Notes

小结

Ⅱ. 操作数类型和操作类型

2.1 操作数类型

  • 地址:(相对地址)——(有符号整数);(绝对地址)——(无符号整数)
  • 数字:定点数、浮点数、十进制数
  • 字符:用ASCII表示
  • 逻辑数:逻辑运算

2.2 数据在存储器中的存放方式

a. 从任一位置开始:
  • (顺序存储,见缝插针)不会浪费存储资源,但由于存储字长的不确定性,会导致除了访问一个字节外,访问其他内容均会花费两个周期的时间。读写控制较为复杂
b. 从一个存储字的起始位置开始:
从一个存储字的起始位置开始存储
  • 可以看出采用这种存储方式,将会在一个存储周期的时间内访问任何一种类型的数据,读写控制简单;但缺点也显而易见,黑色部分表示被浪费的存储资源,而这种浪费对资源而言是巨大的
c. 边界对准方式:从地址的整数倍位置开始(如图)
边界对准方式
  • 可以看出,虽然这种方法仍有不少存储资源被浪费,但相对而言,其是上述两种方法的折中,可以在一个存储周期内完成存储;在保证了效率的同时,存储空间的浪费也有所减少

2.3 操作类型

2.3.1 数据传送
数据传送
2.3.2 算术逻辑操作
  • 加、减、乘、除、增1、减1、求补、浮点运算、十进制、与、或、非、异或、位操作、位测试、位清除、位求反;如在8086中,ADD、SUB、MUL、DIV、INC、DEC、CMP、NEG、AAA、AAS、AAM、AAD、AND、OR、NOT、XOR、TEST
2.3.3 移位操作
  • 算术移位
  • 逻辑移位
  • 循环移位(带进位和不带进位)
2.3.4 转移
转移操作

转移的调用和返回

转移的陷阱与陷阱指令
2.3.5 输入输出
  • 入——指的是端口中的内容输入到CPU的寄存器中
  • 出——指的是CPU的寄存器中的内容输出为端口的内容


    输入输出

Ⅲ. 寻址方式

确定本条指令的操作数地址 or 下一条要执行的指令的地址


为什么要在指令当中设置多种类型的寻址方式?

3.1 指令寻址

3.1.1 顺序寻址 [ (PC+1)→PC ]
  • 由于指令的地址保存在PC中,当取完一条指令,将PC的内容加上“1”,再送入PC当中;这个“1”根据内存的编址单位进行确定(如果编址单位是字节,指令长度是32位,即4个字节,那么“1”代表的是4;如果指令长度是64位,即8个字节,那么“1”代表的是8)
3.1.2 跳跃寻址
  • 由转移指令指出下一条指令的地址


    跳跃寻址
  • 上述指令中,当运行至3 JMP指令时,由于JMP是一个无条件的转移指令,故会略去4,5,6的指令直接执行7 STA指令,随后继续顺序寻址执行8 LDA指令

3.2 数据寻址

数据寻址
3.2.1 立即寻址
  • 寻址特征为“#”;形式地址A即为操作数
    立即寻址
3.2.2 直接寻址
直接寻址
3.2.3 隐含寻址
隐含寻址
  • 结合前面学习的内容,可以得知在 ADD这个操作中,尽管只给出了一个操作数的地址,但其实还有一个操作数是存放于累加器ACC当中的,而这种隐含了一部分操作数的寻址方式即为隐含寻址
3.2.4 间接寻址
间接寻址
  • 我们可以把间接寻址方式用编程语言中高级指针(二级以上指针)的概念联系起来,那么A表示的就是一个n级指针,它直接指向了操作数的n-1级地址,而不是操作数本身,需要对其地址进行多次寻址,找到真正的操作数
3.2.5 寄存器寻址
  • 将寄存器编号作为有效地址,执行阶段不访存,只访问寄存器,执行速度快;并且寄存器个数有限,可以缩短指令字长


    寄存器寻址
3.2.6 寄存器间接寻址
  • 与间接寻址类似,不过有效地址先由寄存器给出,再在寄存器对应的地址中找到内存对应的地址,重复间接寻址的方式直至找到操作数


    寄存器间接寻址
3.2.7 基址寻址
  • (1)采用专用寄存器作基址寄存器


    基址寻址的第一种方式
  • (2)采用通用寄存器作基址寄存器


    基址寻址的第二种方式
3.2.8 变址寻址
变址寻址
  • 类似基址寻址,不过其"R0"是隐含给出的,直接给出A并与这个IX(隐含的"R0")相加得到操作数地址,按地址即可找到操作数;并且在IX的内容可变,从而使得其在应对数组处理问题时更为简便

例:设数据块首地址为D,求N个数的平均值
解:
第①种方法:

直接寻址

第②种方法:
首先以立即数寻址的方式把ACC进行清零[LDA #0],再把IX清零[LDX #0];把ACC中的内容与给定内存单元D中的内容作加法[ADD X,D],此时变址寄存器中的内容X仍为0;增加变址寄存器的值,使变址寄存器的值由0变为1[INX];判断变址寄存器的值是否为N[CPX #N],如果不等,跳转为M指令:M:(ADD X,D)[BNE M];计算平均值[DIV #N],随后进行保存[STA ANS],一共只需要8条指令
变址寻址

3.2.9 相对寻址

相对当前的PC值进行寻址


相对寻址
3.2.10 堆栈寻址
堆栈寻址
  • 对于入栈操作,若SP的记录原先为2000H,一个数据入栈,那么SP的值应-1变为栈顶数据的地址,即1FFFH;对于出栈操作,若SP的记录原先为1FFFH,一个数据出栈,那么SP的值应+1变为栈顶数据的地址,即2000H
  • 对于每次出入栈引起的SP记录值的改变,其增减的“1”是同主存编址方式相关的
    SP的修改影响因素

Ⅳ. 指令格式举例

4.1 设计指令格式应考虑的各种因素

4.1.1 指令系统的兼容性
4.1.2 其他因素
  • 操作类型:包括指令数及操作的难易程度
  • 数据类型:确定哪些数据类型可以参与操作
  • 指令格式:包括指令字长,操作码位数,地址码位数,地址个数,寻址方式类型,以及指令字长和操作码位数是否可变等
  • 寻址方式:包括指令和操作数具体有哪些寻址方式
  • 寄存器格式:寄存器的多少直接影响指令的执行时间

Ⅴ. RISC技术

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

RISC的主要特征

RISC的主要特征

RISC和CISC的比较

RISC和CISC的比较


Written by Tknight9 ©

Written in 12/18/2020

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指令系统 一台计算机中所有机器指令的集合,称之为这台计算机的指令系统。指令系统是表征一台计算机性能的重要因素,他的...
    莫那一鲁道阅读 627评论 0 0
  • 典型的指令格式 操作码 OP——指明操作性质的命令码,提供指令的操作控制信息。 操作对象——说明操作数存放的地址,...
    Githubforusc阅读 1,448评论 0 1
  • 指令系统 程序功能:求两个数据之和并输出 运行结果:sum is 25 基本概念: 指令:是计算机硬件能够直接理解...
    我可能是个假开发阅读 5,085评论 0 5
  • 计算机组成原理----学习笔记2020-06-12 第一章 计算机系统概论 1. 计算机的分类 (1)电子模拟计算...
    倾慕_ff96阅读 1,882评论 0 2
  • 指令系统概述 指令:要求计算机执行特定操作的命令,是程序员指挥计算机工作的最小单位。 指令系统:指一台计算机全部指...
    _属于我阅读 1,578评论 0 3