计算机指令系统

指令系统的发展和性能要求

1.1指令系统的发展

程序一一用于解决实际问题的一系列的指令;
指令一一使计算机执行某种操作的命令
从组成的层次结构来说,计算机的指令可分为如下3类:

  • 微指令:微程序级的命令,它属于硬件;
  • 机器指令(指令):可完成一个独立的算术或逻辑运算;
  • 宏指令:由若干条机器指令组成的软件指令,它属于软件

指令系统: 一台计算机中所有机器指令的集合,指令系统的格式和功能直接影响机器的硬件结构、软件系统、以及机器的适用范围。

计算机指令系统的发展过程:
● 50年代:只有定点加减、逻辑运算、数据传送、转移等十几至几十条指令。
● 60年代后期:增加了乘除运算、浮点运算、十进制运算、字符串处理等指令,指令数目多达一二百条,寻址方式也趋多样化,出现了系列计算机
● 70年代末期:复杂指令系统计算机(CISL)、精简指令系统计算机(RSC),早期的X86处理器(486之前)都是CISL指令系统,奔腾系列CPU使用了RSC和CC构架相结合的办法;

系列计算机:
基本指令系统、基本体系结构相同的一系列计算机,不过具体的器件、结构和性能都不会完全相同,一般新机种在各方面要优于旧机种。一个系列往往有多种型号,各型号计算机的指令系统是向下兼容的,新机种的指令系统包含旧机种的全部指令,如 Pentiu系列PC机。

CISC (complex instruction set computer) 采用复杂的的指令系统,来达到增强计算机的功能、提高机器速度的目的
CISC指令系统的特点:
1.指令系统复杂庞大,指令数目多
2.指令格式多,字长不固定,多种寻址方式;
3.可访存指令不受限制;
4.各种指令的执行时间相差很大;
5.大都采用微程序控制器;

RISC (Reduced instruction set computer) 从简化指令系统和优化硬件设计的角度来提高系统的性能与速度。
RISC指令系统的主要特点:
1.选取使用频率高的简单指令;
2.指令长度固定,指令格式少,寻址方式种类少
3.采用流水线技术
4.使用较多的通用寄存器,减少访存;
5.控制器以组合逻辑控制为主;
6.采用优化编译技术;

1.2 指令系统性能的要求
指令系统的性能决定了计算机的基本功能,它的设计直接关系到计算机的硬件结构和用户的需要。
一个完善的指令系统应满足如下四方面的要求:
①.完备性常用指令齐全,编程方便;
②.有效性程序占用内存少,运行速度快;
③.规整性指令和数据的使用规则统一,易学易记;
④.兼容性:同一系列的低档计算机的程序能够在新的高档计算机上运行;

指令系统的规整性要求: 规整性包括对称性、匀齐性、指令格式和数据格式的一致性三方面的要求。
1.对称性:所有的指令都可使用各种寻址方式
2.匀齐性:一种操作性质的指令可以支持各种数据类型
3.指令格式和数据格式的一致性:指令长度和数据长度有一定的关系,以方便处理和存取

1.3 低级语言与硬件结构的关系
● 低级语言: 机器语言、汇编语言,是一种面向机器的语言,和具体机器的指令系统密切相关。
● 高级语言与低级语言的比较如表所示:

比较内容高级语言低级语言
1对机器独立的程度独立不独立
2编制程序的难易程度
3编制程序所需的时间较长
4程序执行时间较长
5编译过程对计算机资源的要求
对程序员的训练要求高级语言低级语言
通用算法需要需要
语言规则了解较多了解
硬件知识不需要需要

指令格式

指令的一般格式:
指令字(简称指令):表示一条指令的机器字。
指令格式:指令字用二进制代码表示的结构形式,由操作码字段和地址码字段组成。
在这里插入图片描述
操作码字段: 表征指令的操作特性与功能
地址码字段: 通常指定参与操作的操作数的地址。

2.1 操作码
操作码字段的位数取决于指令系统的规模;
操作码的类型:

  • 固定长度的操作码:
    操作码字段为4位,则指令系统中的指令数目为24=16条。
    ◆特征:所有指令长度均相同。
    ◆优点:控制简单,速度快,适用于指令条数不多的场合
  • 可变长度的操作码
    ◆特征:利用操作码扩展技术将操作码扩展到地址码字段,使各类指令的操作码长度不相同;
    ◆优点:充分利用软硬件资源,适用于大规模的指令系统。

2.2 地址码
一条指令格式中有几个地址码字段,就称为是几地址指令;

  • 零地址指令:
    在这里插入图片描述
    ①无任何操作数运算。(如NOP、HALT等指令)。
    ②单操作数运算:隐含一个操作数,如Acc。(如CBW指令)
    OP (Acc) → Acc

  • 一地址指令
    在这里插入图片描述
    ①单操作数运算:OP (A1) → A1(如INC指令)
    ②双操作数运算:隐含一个操作数,如Acc
    A(cc) OP (A1)→Acc/A1 (如MUL指令)

  • 两地址指令
    在这里插入图片描述
    功能:(A1) OP (A2) → A1 (如ADD、XOR等指令)

  • 三地址指令
    在这里插入图片描述
    功能:(A1) OP (A2) → A3

  • 多地址指令(如四地址)
    这类指令功能强,一般用高档小型机或中大型机,用于实现成批数据处理,字符串处理、向量或矩阵运算指令等

两地址指令的分类:
在这里插入图片描述

  • 根据操作数的物理位置分:
    存储器-存储器(SS)型指令
    A1、A2均为存储单元;
    这类指令的操作时都涉及到内存单元,参与操作的数都放在内存内。
    寄存器-寄存器(RR)型指令
    A1、A2均为寄存器;
    这类指令执行过程中,需要多个通用寄存器或个别专用寄存器,从寄存器中取操作数,把操作数结果存放到另一个寄存器中,执行时不需要访问内存。
    寄存器-存储器(RS)型指令
    A1、A2中一个为寄存器,一个为存储单元;
    执行此类指令时,既要访问内存单元,又要访问寄存器。

  • 指令的操作码扩展技术
    一个指令系统中,若操作码长度固定,且指令格式不同
    指令格式如图:
    在这里插入图片描述
    操作码字段长度取决于指令系统中的指令总数目,地址码较少的指令,编码浪费。

    操作码扩展
    对于不需要某个地址码的指令,把它们的操作码扩充到该地址字段;既充分利用指令字的各字段,又在不增加指令长度的情况下扩展操作码的长度;
    举例:设某指令长16位,包括4位基本操作码字段和3个4位地址码字段。
    在这里插入图片描述
    ① 若全是三地址指令,则最多能有多少条指令?
    操作码为4位的,则指令条数为2<sup>4</sup>=16。

    ② 若三地址指令需15条,两地址指令需15条,单地址指令需15条零地址指令需16条应如何安排?
    可使用操作码扩展技术,缩短固定操作码长度
    在这里插入图片描述
    ① 为了缩短指令的平均长度,应用频率比较高的指令应该分配较短的操作码。
    ② 确保指令码的唯一性。

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

2.3 指令字长度

  • 机器字长
    运算器一次能处理的二进制数的位数。机器指令的长度直接决定着CPU运算的精度直接寻址能力的大小
  • 指令字长
    一个指令字中包含二进制代码的位数;
    指令字长由操作码长度操作数长度个数共同决定。
    ● 指令有半字长单字长双字长多字长等不同的长度类型。
    ● 指令系统可分为等长指令字结构变长指令字结构两种。

2.4 指令助记符

  • 指令助记符:使用3~4个英文缩写字母来表示的指令操作码
  • 在不同的计算机中,指令助记符的规定是不一样的,指令助记符只是指令操作码字段的一种表示方法;机器内部保存的还是二进制代码形式的机器指令;
    由汇编或编译程序,将助记符翻译成机器代码。
    在这里插入图片描述
    在这里插入图片描述
    指令举例:
    在这里插入图片描述

操作数类型

机器指令对数据进行操作,数据通常分为以下四类:

  • 地址数据无符号整数,通过某种运算确定操作数在主存中的有效地址;
  • 数值数据定点整数、小数;浮点数;压缩十进制数
  • 字符数据文本数据或字符串;
  • 逻辑数据由若干二进制位组成,每位的值可以是1或0。

指令和数据的寻址方式

4.1指令的寻址方式

  • 1.顺序寻址方式
    当程序执行的流向不发生变化时,指令的寻址方式;由程序计数器记录所要执行指令的地址;一般在每次取指之后,其值加本条指令所占存储单元数。

  • 2.跳跃寻址方式
    当程序转移执行时的指令寻址方式,程序计数器的内容由本条指令给出,而不是顺序改变。

    • 直接寻址方式:指令中给出要转向的有效地址
    • 相对寻址方式:指令中给出要转向单元与当前单元的偏移量
    • 间接寻址方式:指令中给出保存要转向地址的寄存器或存储单元
      在这里插入图片描述

4.2 操作数的寻址方式
一种单地址码指令的结构如下图:
在这里插入图片描述

  • 将指令中的形式地址A变换成操作数有效地址的过程,称为寻址过程。
  • 典型而常用的寻址方式有:隐含寻址、立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、偏移寻址、堆栈寻址。
隐含寻址立即寻址
在这里插入图片描述在这里插入图片描述
直接寻址间接寻址
在这里插入图片描述在这里插入图片描述
寄存器寻址寄存器间接寻址
在这里插入图片描述在这里插入图片描述
偏移寻址相对寻址
在这里插入图片描述在这里插入图片描述
变址寻址基址寻址
在这里插入图片描述在这里插入图片描述
堆栈寻址
在这里插入图片描述
  • 隐含寻址
    ● 操作数地址隐含在操作码中;
    ● 如8086的MUL指令,被乘数隐含在AX(16位)或AL(8位)中
    ●指令字中少了一个地址字段,可缩短指令字长;

  • 立即寻址
    ● 形式地址A就是操作数;
    ● 优点:指令执行阶段不需要访存,速度快
    ● 缺点:形式地址A字段的位数限制了立即数的范围

  • 直接寻址
    ● 有效地址由形式地址字段A直接给出;
    ● EA=A
    ● 特点:执行阶段访问一次存储器,A的位数决定了该指令操作数的寻址范围;操作数的地址不易修改(必须修改A)

  • 间接寻址
    ● 有效地址由形式地址字段A间接提供,
    ● EA=(A)
    ● 特点:可扩大寻址范围;A字段的长度受指令字长和指令格式的限制;寻址时,可根据需要进行多次间址;可用寻址特制字段区分直接寻址和间接寻址方式

  • 寄存器寻址
    ● 形式地址字段A为寄存器编号
    ● EA=Ri
    ● 特点:执行阶段不访存,只访问寄存器,执行速度快,寄存器个数有限,可缩短指令字长

  • 寄存器间接寻址
    ● 形式地址字段A用于指出存放有效地址的寄存器编号;
    ● OEA=(Ri)
    ● 特点:执行阶段访存;○便于编制循环程序

  • 偏移寻址
    ● 直接寻址和寄存器间接寻址方式的结合
    ● 有效地址EA=A+® A是显式的形式地址字段;OR可以是显式的,也可以隐含的,某个专用的寄存器;
    ● 常用的偏移寻址
    ○ 变址寻址:EA=(变址R)+A,变址R+1变址R
    ○ 基址寻址:EA=(基址R)+A,A+1→A
    ○ 相对寻址:EA=(专用R)+A

  • 变址寻址方式
    ● 形式地址A作为基准地址,
    ● 变址寄存器作为可修改量;变址寄存器可自动增减量
    ● 适用于数组、字符串等成批连续数据的处理;
    ● 变址寄存器:可用通用寄存器充当,一般包含多个,在指令中要用一个字段指明当前所用的变址寄存器;

  • 基址寻址方式
    ● 基址寄存器作为基准地址,形式地址A作为可修改量;
    ● 形式地址相当于位移量,可正可负;一般基址寄存器为专用寄存器
    ● 基址寻址原来用于大型机,用作将用户地址转换成物理地址;可以实现地址的重定位,和扩大直接寻址空间
    ● 用途:
    ○ 大型机中,一般用特权指令来管理;
    ○ 小、微型机中,一般与变址寻址联合使用

  • 相对寻址方式
    ● 寻址特征:是基址寻址的一种变通
    ○ 程序计数器PC提供基准地址;
    ○ 形式地址作为位移量D,专用R可正可负;OEA:(PC )+D:
    ●适用于:所要寻找的操作数与现行指令位置间隔固定的场合

  • 堆栈寻址方式
    ● 隐含寻址方式的一种变形,其隐含的操作数在堆栈段中,由栈顶指针指定
    ● 8086堆栈指令举例
    ○ 入栈指令 PUSH SRC
    SP-2→SP;SRC→[SP]
    ○ 出栈指令 POP DST
    [SP]→DST;SP+2→SP

例题在这里插入图片描述

例题:
在这里插入图片描述

例题:
设某机字长16位,直接寻址空间为128字,变址时的位移量为-64~+63,16个通用寄存器都可以作为变址寄存器,请设计一套指令系统,满足下列寻址类型的要求:
(1)直接寻址的二地址指令3条
(2)变址寻址的一地址指令6条
(3)寄存器寻址的二地址指令8条;
(4)直接寻址的一地址指令12条;
(5)零地址指令32条。
● 直接寻址的二地址指令3条
在这里插入图片描述
○这3条指令的操作码为00、01、10;
● 变址寻址的一地址指令6条:
在这里插入图片描述
○这6条指令的操作码为:11000~11101
● 寄存器寻址的二地址指令8条:
在这里插入图片描述
这8条指令的操作码为11110000~11110111直接寻址的一地址指令12条:

这12条指令的操作码为:111110000~111111011
● 零地址指令32条:
在这里插入图片描述
这32条指令的操作码为:
111111000000000~11111110000111

例题:
某计算机数据线和地址线均是8根,有一条相对寻址的无条件转移指令存于内存的20H单元中,指令给出的偏移量是15H,设该指令占用2个字节,请计算:
(1)取该条指令时PC的内容。
(2)该指令执行结束时Pc的内容。
解答:
(1)取指令时,PC的内容为20H
(2)转移地址=PC+2+D=20H+2+15H=37H
该条指令执行结束时PC的内容是37H。

例题:
某指令系统指令字长为20位,具有双操作数、单操作数和无操作数3种指令格式,每个操作数地址规定用6位表示,当双操作数指令条数取最大值,而且单操作数指令条数也取最大值时,这3种指令最多可能拥有的指令数各是多少?
解:按操作码扩展技术来设计,双操作数指令最多28-1条,单操作数指令最多63条,因此无操作数指令条数的最大值为64条
在这里插入图片描述

例题
某机器字长为16位,主存容量是64K字,有专用的变址寄存器,采用单字长单地址指令,共有54条指令。试采用直接、立即、变址、相对四种寻址方式设计指令格式。解答
在这里插入图片描述
○54条指令,故操作码需要6位。因为四种寻址方式,所以寻址特征位取2位,余下的8位作为形式地址D。其指令格式为
O寻址模式X定义如下:
X=00直接寻址有效地址E=D(256个单元)
X=01立即寻址D=操作数
X=10变址寻址有效地址E=®+D(64K)
X=11相对寻址有效地址E=(PC)+D(64K)其中R为变址寄存器(16位)、PC为程序计数器(16位)相对寻址和变址寻址中,D可正可负。

  • 52
    点赞
  • 238
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙源lll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值