计算机指令系统

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

1.1指令系统的发展

  • 程序一一用于解决实际问题的一系列的指令;

  • 指令一一使计算机执行某种操作的命令

  • 从组成的层次结构来说,计算机的指令可分为如下3类:

    • 微指令:微程序级的命令,它属于硬件;
    • 机器指令(指令):可完成一个独立的算术或逻辑运算;
    • 宏指令:由若干条机器指令组成的软件指令,它属于软件
  • 指令系统:一台计算机中所有机器指令的集合。
    指令系统的格式和功能直接影响机器的硬件结构、软件系统、以及机器的适用范围。

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

  • 系列计算机

    • 基本指令系统、基本体系结构相同的一系列计算机。
      不过具体的器件、结构和性能都不会完全相同,一般新机种在各方面要优于旧机种。
    • 一个系列往往有多种型号,各型号计算机的指令系统是向下兼容的。
      新机种的指令系统包含旧机种的全部指令,如 Pentiu系列PC机。
  • CISC (complex instruction set computer)
    采用复杂的的指令系统,来达到增强计算机的功能、提高机器速度的目的
    ●特点:
    ①.指令系统复杂庞大,指令数目多
    ②.指令格式多,字长不固定,多种寻址方式;
    ③.可访存指令不受限制;
    ④.各种指令的执行时间相差很大;
    ⑤.大都采用微程序控制器;

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

1.2 指令系统性能的要求

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

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

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

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

2. 指令格式

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

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

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

2.3 指令字长度

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

2.4 指令助记符

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

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

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

4.令和数据的寻址方式

  • 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作为基准地址,
    变址寄存器作为可修改量;
    ○变址寄存器可自动增减量
    ●适用于数组、字符串等
    成批连续数据的处理;
    ●变址寄存器
    ○可用通用寄存器充当,一般包含多个
    ○在指令中要用一个字段指明当前所用的变址寄存器;
    ◆上图中采用通用寄存器R0作为变址寄存器

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

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

  • 堆栈寻址方式
    ●隐含寻址方式的一种变形○其隐含的操作数在堆栈段中○由栈顶指针指定
    ●8086堆栈指令举例○入栈指令 PUSH SRC
    ◆sP-2→sP;sRC→[SP
    O出栈指令 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可正可负。

猜你喜欢

转载自blog.csdn.net/Lzy410992/article/details/106366768