第七章:指令系统


在这里插入图片描述

7.1 机器指令

在这里插入图片描述

一、指令的一般格式

在这里插入图片描述
操作码:对什么样的数据做什么操作及操作数的寻址方式
在这里插入图片描述
扩展操作码技术扩展操作码长度:保留码点方式
扩展操作码是:一种指令优化技术,即让操作码的长度随地址数的减少而增加,不同地址数的指令可以具有不同的操作码长度
在这里插入图片描述

  • 为使机器识别:短操作码不能是长操作码的前缀
  • 经常出现的高频指令用短操作码表示,不经常出现的低频指令用长操作码表示
    在这里插入图片描述
  • 如果地址字段均指示主存的地址,则完成一条四地址指令,共需访问4次存储器(取指令一次,取两个操作数两次,存放结果一次)。
  • 一般PC表示下一条指令的地址。地址码字段由6增加到8位
    在这里插入图片描述
  • 2次访存:取指令和取A1操作数各一个
  • 对ACC中的数据操作,堆栈类指令是零地址的

二、指令字长

在这里插入图片描述

小结

在这里插入图片描述

7.2 操作数类型和操作种类

一、操作数类型

在这里插入图片描述

二、数据在存储器中的存放方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如:一个字的长度是4个字节,起始地址找地址编码是4的倍数的地方存储

三、操作类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.3 寻址方式

在这里插入图片描述

一、指令寻址

在这里插入图片描述
并不是所有计算机都加的是1;上图中地址为3存储的指令是一条跳跃指令跳到7

二、数据寻址

在这里插入图片描述
立即寻址,操作数在取指令时已经被取入到CPU中
在这里插入图片描述
直接寻址:有效地址=形式地址。寻址特征表示是直接寻址:后面的A给出的是内存单元的物理地址
在这里插入图片描述
隐含寻址:参与运算的某一个数据所在的位置由操作码直接给出;指令中给出一个操作数的地址,另外一个操作数在ACC中。缩短了指令长度

在这里插入图片描述
间接寻址

  • 操作数的地址保存在某一个内存单元当中,指令当中出现的是这个内存单元的地址,有效地址在给定的内存单元当中进行保存。可以通过修改EA来修改真正的操作数所在的地址,指令当中的形式的地址不需要发生变化,操作数的真正地址就会发生变化。
  • 多次间址图中的1表示当前这个地址还是一个间接地址不是有效地址,当变为0,表示这个里面存的是最终地址再次按最终地址访存取出
    在这里插入图片描述
  • 若80是调用子程序的调用指令,81就是程序断点;为了可以返回必须要保存断点,可以将它保存在A地址单元当中。但要返回到之前的程序,是跳转到A地址中保存的地址那里,返回到了主程序的程序断点。
  • 若201依然是调用子程序的调用指令,那么断点就是202.把断点保存在A的地址单元中
    在这里插入图片描述寄存器寻址:寄存器在CPU内部,访问速度快也叫寄存器直接寻址
    在这里插入图片描述寄存器间接寻址:操作数地址在寄存器中,要修改操作数地址,只需要修改寄存器中的内容。
    在这里插入图片描述
  • 基址寻址:有效地址为基址寄存器中保存的内容加上形式地址。BR+A得到的地址才是操作数在内存单元当中的地址。利用这个地址去访问内存单元就可以得到操作数。可扩大寻址范围:BR是基值给出了一个寻址的起点,A是偏移量。通过调整BR的位置扩大寻址范围。
  • 有利于多道程序:多道程序分时执行时,程序的起始地址可以放在BR中,执行过程中动态形成操作数的地址,这叫做程序的动态定位
  • 用户不能修改BR的地址,只能修改形式地址。采用专用的寄存器作为基值寄存器,动态修改指令中的形式地址,进行程序的装入或内存中的定位。
    在这里插入图片描述
  • 采用通用寄存器作为基址寄存器:R0的内容+A的内容得到的地址是内存单元的地址,利用这个地址访问计算机系统的内存得到操作数,程序执行过程中基址寄存器的内容由操作系统或管理程序决定,用户不能修改指定的基值寄存器的内容或R0的内容,形式地址A可变
  • 基址寻址EA=(BR)+ A,其中BR为基址寄存器(专用),也可用通用寄存器作为基址寄存器。
    在这里插入图片描述
    变址寻址:
  • 指定变址寄存器,这个寄存器的内容加上形式地址得到有效地址
  • A可以做数组的起始地址,IX可以作为数组的下标

在这里插入图片描述

  • 直接寻址:加法累加结果放在ACC中,做除法:除法结果保存在ACC当中。ACC中的值再保存在内存单元当中。
  • 变址寻址:
    • ACC先清0,立即数寻址方式然后清零IX;
    • 变址寻址将ACC当中的内容和给定的内存单元中的内容做加法。
    • 编制寄存器的内容依然是0, D是数组首地址,将D0累加到ACC中,增加变址寄存器的值,使变址寄存器的值由0 变为1。
    • 下一步判断变址寄存器的值是否等于N,和N进行比较。
    • 如果不等则跳转到M即ADD的那条指令,通过这个循环进行累加,将D0到Dn-1N个数据累加到ACC当中,IX每累加一次就加1,加到N则累加结束计算平均值再进行保存。
      非常方便的完成数组操作

在这里插入图片描述
 相对寻址:相对当前的PC值,PC的内容加上A形式地址的值得到内存单元的地址。这个地址中保存着需要的操作数,形式地址A的值相当于操作数相对于当前指令PC值的位移量(偏移量),相对距离可能正也可能负数,要看寻址向那一个方向寻址。
 程序浮动:程序在内存单元当中的存储位置发生变化。这种相对寻址应该归入到指令寻址当中。
在这里插入图片描述
BNE M:跳转到M,可以据相对位移量直接找到跳转后的位置,对程序浮动非常有利
指令BNE M 可以直接改为BNE * -3,这样有效地址就是M。
在这里插入图片描述
 计算机有可能取出指令还没执行,PC的值就改为2002H。因此要想跳转到正确的目标地址,我们必须对JMP指令后面的偏移地址进行修改,这个偏移地址实际上是06,这样这条指令的位移量应该是06。

设相对寻址的转移指令占两个字节 ,第一个字节是操作码,第二个字节是相对位移量(可正可负),则寻址范围是(256)。

在这里插入图片描述
堆栈寻址:堆栈是先进后出的队列。
硬堆栈:两个或三个多一点的寄存器作为栈顶,栈底在内存当中。两个操作数都在栈顶,运算结果在栈顶,这个栈顶是寄存器。多个寄存器构成一个栈顶。
SP寄存器,堆栈栈底是地址最高的,栈顶是低地址。往下是地址增加的方向。
每进栈一个编址单位的数据,SP的内容就会-1,栈顶向上升起
出栈:SP的内容就会+1,栈顶下移

  • 入栈操作:SP是2000H,它表示当前堆栈的栈顶在2000H这个位置;如果要进行进栈操作则SP的内容就要-1(压入堆栈的数据要正好占用了一个编址单位);2000H-1变为1FFFH(16进制),因为是进栈操作,所以栈顶上移。
  • 出栈操作:当前的栈顶在1FFFH,若要出栈,SP+1变为2000H,栈顶下移

在这里插入图片描述
A 表示寄存器的内容,要把这个寄存器的内容压入堆栈,若A表示CPU中累加器ACC,SP指定栈顶的地址,栈顶当中保存X。
PUSH:首先把SP-1然后把15这个值压入新的栈顶
POP:栈顶15送到给定的寄存器ACC当中,然后栈顶下压(SP-1由1FFH变为200H)
在这里插入图片描述
若不是1个编址单位的话,SP不一定是-1或+1
存储字长16位,一个存储字占了两个字节,则SP就是+2或-2
存储字长是32位占了4个编址单位(4个字节),则SP就是-4或+4

7.4 指令格式举例

在这里插入图片描述
要能向上兼容:低等的要能用到高等上
扩大指令寻址空间:①使用间接寻址②扩大指令字长③使用基值/变址寻址
寄存器-寄存器型最快
存储器-存储器型最慢
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 寄存器-寄存器型(RR):两个寄存器参加操作,结果保存在一个寄存器中,操作码长8位,指令长度16位
  • 寄存器-存储器(R-M):两地址,X变址寄存器,B基址寄存器,从寄存器所占的地址位数看有共16个寄存器,D是偏移地址,采用基址加变址的方式寻址
  • 寄存器-存储器:可以应用于数据的成组传送,三地址,将R1到R3的寄存器的内容成组传送到内存中,内存的起始地址用基值寻址的方式来做;B是基值寄存器,D是偏移地址。
  • 立即数和内存操作数(SI):两地址,地址长度32位
  • 存储器-存储器(M-M):指令在内存当中进行传输,比如B1、D1采用基值寻址的方式给定内存块的首地址,把从B1开始的长为L的转存到从B2地址开始的内存块当中,IMB360中的翻译指令就是用这个格式的
    在这里插入图片描述

7.5 RISC技术

在这里插入图片描述
RISC精简指令型计算机;CISC复杂指令型计算机
在这里插入图片描述
由于只有LOAD/STORE指令访存则其他指令进行的操作只能在寄存器-寄存器之间进行,并且结果保存在寄存器中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值