第四章 指令系统

更新时间:2024-01-05 03:17:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第四章 指令系统

4.1指令系统的发展

指令是要计算机执行某种操作的命令。从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令之分。

微指令:微程序级的命令,属于硬件;

宏指令:由若干条机器指令组成的软件指令,它属于软件; 机器指令(指令):介于微指令与宏指令之间,每条指令可完成一个独立的算术运算或逻辑运算。

指令系统:一台计算机中所有机器指令的集合,它是表征一台计算机性能的重要因素,其格式与功能不仅直接影响到机器的硬件结构,也直接影响到系统软件,影响到机器的适用范围。 一、计算机指令系统的发展过程

50年代:指令系统只有定点加减、逻辑运算、数据传送、转移等十几至几十条指令。

60年代:增加了乘除运算、浮点运算、十进制运算、字符串处理等指令,指令数目多达一二百条,寻址方式也趋多样化。

60年代后期:开始出现系列计算机(指基本指令系统相同、基本体系结构相同的一系列计算机)一个系列往往有多种型号,它们在结构和性能上有所差异。同一系列的各机种有共同的指令级而且新推出的机种指令系统一定包含所有旧机种的全部指令,旧机种上运行的各种软件可以不加任何修改便可在新机种上运行,大大减少了软件开发费用。

70年代末期:大多数计算机的指令系统多达几百条。我们称这些计算机为复杂指令系统计算机(CISC)。但是如此庞大的指令系统难以保证正确性,不易调试维护,造成硬件资源浪费。为此人们又提出了便于VLSI技术实现的精简指令系统计算机(RISC)。 二、对指令系统性能的要求

一个完善的指令系统应满足如下四方面的要求: 完备性 用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现。 有效性 利用该指令系统所编写的程序能够高效率的运行。程序占据存储空间小、执行速度快。

规整性 规整性包括: 1.在指令系统中所有的寄存器和存储器单元都可同等对待; 2.一种操作性质的指令可以支持各种数据类型; 3.指令格式和数据格式的一致性。

兼容性 系列机各机种之间具有相同的基本结构和共同的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用。但由于不同机种推出的时间不同,在结构和性能上有差异,做到所有软件都完全兼容是不可能的,只能做到“向上兼容”,即低档机上运行的软件可以在高档机上运行。

三、低级语言与硬件结构的关系

计算机语言分高级语言和低级语言。 高级语言:如C,FORTRAN等,其语句和用法与具体机器的指令系统无关。 低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 4.2 指令格式 一、操作码

指令字(简称指令)即表示一条指令的机器字。

指令格式则是指令字用二进制代码表示的结构形式,由操作码字段和地址码字段组成。操作码字段表征指令的操作特性与功能;地址码字段通常指定参与操作的操作数的地址。

二、地址码

根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令。

一般的操作数有被操作数、操作数及操作结果这三种数,因而就形成了三地址指令格式。在此基础上,后来又发展成二地址格式、一地址格式和零地址格式。

二地址指令格式中,从操作数的物理位置来说,又可归结为三种类型。

存储器-存储器(SS)型指令:参与操作的数都放在内存里,从内存某单元中取操作数,操作结果存放至内存另一单元中,因此机器执行这种指令需要多次访问内存。

寄存器-寄存器(RR)型指令:从寄存器中取操作数,把操作结果放到另一寄存器。机器执行寄存器-寄存器型指令的速度很快,因为执行这类指令,不需要访问内存。

寄存器-存储器(RS)型指令:执行此类指令时,既要访问内存单元,又要访问寄存器。 三、指令字长度

指令字长度:一个指令字中包含二进制代码的位数。 机器字长:计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。 等长指令字结构:各种指令字长度是相等的。这种指令字结构简单,且指令字长度是不变的。 变长指令字结构:各种指令字长度随指令功能而异。结构灵活,能充分利用指令长度,但指令的控制较复杂。 四、指令助记符 由于硬件只能识别1和0,所以采用二进制操作码是必要的,但是我们用二进制来书写程序却非常麻烦。为了便于书写和阅读程序,每条指令通常用3个或4个英文缩写字母来表示。这种缩写码叫做指令助记符。

典型指令 指令助记符 二进制操作码 加 法 ADD 001 减 法 SUB 010 传 送 MOV 011 跳 转 JMP 100 转 子 JSR 101 存 储 STR 110 读 数 LDA 111

在不同的计算机中,指令助记符的规定是不一样的。因此,指令助记符还必须转换成与它们相对应的二进制码。这种转换借助汇编程序可以自动完成,汇编程序相当于一个“翻译”。 五、指令格式举例

[例1]指令格式如下所示,其中OP为操作码,试分析指令格式的特点。 15 9 7 4 3 0 OP -------- 源寄存器 目标寄存器 [解]:

(1)单字长二地址指令。

(2)操作码字段OP可以指定128条指令。

(3)源寄存器和目标寄存器都是通用寄存器(可分别指定16个),所以是RR型指令,两个操作数均在寄存器中。

(4)这种指令结构常用于算术逻辑运算类指令。

[例2] 指令格式如下所示,OP为操作码字段,试分析指令格式特点。 15 10 7 4 3 0 OP ----------- 源寄存器 变址寄存器 位移量(16位) [解]: (1)双字长二地址指令,用于访问存储器。 (2)操作码字段OP为6位,可以指定64种操作。

(3)一个操作数在源寄存器(共16个),另一个操作数在存储器中(由变址寄存器和位移量决定)所以是RS型指令。

4.4 指令和数据的寻址方式

一、指令的寻址方式

操作数或指令在存储器中的地址:某个操作数或某条指令存放在某个存储单元时其存储单元的编号。 在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式和堆栈存取方式。当采用地址指定方式时,形成操作数或指令地址的方式,称为寻址方式。 寻址方式分为两类:指令寻址方式和数据寻址方式,前者比较简单,后者比较复杂。指令的寻址方式有两种,一种是顺序寻址方式,另一种是跳跃寻址方式。 1. 顺序寻址方式

指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序执行。为此,必须使用程序计数器(又称指令指针寄存器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。 2. 跳跃寻址方式

当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。程序跳跃后,按新的指令地址开始顺序执行。指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址。采用指令跳跃寻址方式,可以实现程序转移或构成循环程序。指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。 二、操作数寻址方式

形成操作数的有效地址的方法,称为操作数的寻址方式。

一般来说,指令中所给出的地址码,并不是操作数的有效地址。 因此,寻址过程就是把操作数的形式地址,变换为操作数的有效地址的过程。 1.隐含寻址 在指令中不明显的给出而是隐含着操作数的地址。例如INC AX 是单地址的指令格式,没有在地址字段中指明第二操作数地址。 2.立即寻址 指令的地址字段指出的不是操作数的地址,而是操作数本身。这种方式的特点是指令执行时间很短,不需要访问内存取数。 3.直接寻址 特点:在指令格式的地址字段中直接指出操作数在内存的地址D。采用直接寻址方式时,指令字中的形式地址D就是操作数的有效地址E,既E=D。因此通常把形式地址D又称为直接地址。 如果用S表示操作数,那么直接寻址的逻辑表达式为 S=(E)=(D) 4.间接寻址 间接寻址的情况下,指令地址字段中的形式地址D不是操作数的真正地址,而是操作数地址的指示器,D单元的内容才是操作数的有效地址。 间接寻址方式是早期计算机中经常采用的方式,但由于两次访存,影响指令执行速度,现在已不大使用。

6. 寄存器间接寻址

寄存器间接寻址方式与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。 7.相对寻址 是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。“相对”寻址,就是相对于当前的指令地址而言。

采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,所编程序可以放在内存任何地方。此时形式地址D通常称为偏移量,其值可正可负,相对于当前指令地址进行浮动。 8.基址寻址方式 基址寻址方式是将CPU中基址寄存器的内容加上指令格式中的形式地址而形成操作数的有效地址。 它的优点是可以扩大寻址能力。同形式地址相比,基址寄存器的位数可以设置得很长,从

而可以在较大的存储空间中寻址。 9.变址寻址方式 变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。 使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律性变化。 10.段寻址方式 微型机中采用了段寻址方式,例如:8086使用20位的地址,从而有1M存储空间的直接寻址能力。为此将整个1M空间存储器以64K为单位划分成若干段。在寻址一个内存具体单元时,由一个基地址再加上某些寄存器提供的16位偏移量来形成实际的20位物理地址。 这个基地址就是CPU中的段寄存器。在形成20位物理地址时,段寄存器中的16位数会自动左移4位,然后以16位偏移量相加,即可形成所需的内存地址。这种寻址方式的实质还是基址寻址。

11 堆栈寻址方式

堆栈是一组能存储和取出数据的暂时存储单元。很多计算机把存储器的一部分用作堆栈。堆栈和其他形式的存储器之间的差别就在于,它们对数据的存取方法或寻址方法有所不同。 寄存器堆栈(串联堆栈)

一些计算机的CPU中有一组专门的寄存器,有16个或更多,它们称为寄存器堆栈(串联堆栈) ,其中每一个寄存器能保存一个字的数据。假如由于某种原因,我们需要空出某个通用寄存器时,就可将某个通用寄存器内容存入堆栈。以后若需要这部分数据时,又可以从堆栈中取回来。 所有的数据传送是在栈顶和某个通用寄存器之间进行的,通用寄存器仅和堆栈的顶部单元相联系。通常,CPU通过“进栈”指令把数据送入堆栈,而通过“出栈”指令把数据从堆栈中取出。这种结构通常称作“下压堆栈”或“串联堆栈”。

存储器堆栈

串联堆栈存在一些限制:一是寄存器的数目一般是有限的。如堆栈有8个寄存器,那么把多于8个的数据压入堆栈时,“老”的数据就从栈底压出并被丢失。

二是堆栈的读出是破坏性的。当从堆栈取出一个数时,它就不能再在堆栈中存在。 由于有上述限制,通常由程序员设置出一部分主存储器来作为堆栈,称为存储器堆栈。这种堆栈有三个优点:

⑴堆栈能够具有任意长度; ⑵可建立多个堆栈;

⑶可以用对存储器寻址的条指令来对堆栈中的数据进行寻址。 在设计计算机系统时,把主存储器的一部分用作堆栈区。一旦设定堆栈区后,这一部分就不能用作其他用途。 在存储器堆栈中,需要一个堆栈指示器,它是CPU中一个专用的寄存器。堆栈指示器指定的存储器单元,就是堆栈的栈顶。 [例3]一种二地址RS型指令的结构如下所示: 6位 4位 1位 2位 16位 OP --- 通用寄存器 I X 偏移量D 其中I为间接寻址标志位,X为寻址模式字段,D位偏移量字段。通过I,X,D的组合,可构成下表所示的寻址方式。 请写出六种寻址方式的名称。 [解]: ⑴直接寻址

⑵相对寻址 ⑶变址寻址

⑷寄存器间接寻址 ⑸间接寻址 ⑹基址寻址

[例4] 某16位机器所使用的指令格式和寻址方式如下所示,该机有两个20位基址寄存器,四

个16位变址寄存器,十六个16位通用寄存器指令汇编格式中的S(源),D(目标)都是通用寄存器,M是主存中的一个单元。三种指令的操作码分别是MOV(OP)=(A)H ,STA(OP)=(1B)H ,LDA(OP)=(3C)H。MOV是传送指令,STA为写数指令,LDA为读数指令。 要求: ⑴分析三种指令的指令格式与寻址方式特点。 ⑵CPU完成哪一种操作所花时间最短?哪一种操作所花时间最长?第二种指令的执行时间有时会等于第三种指令的执行时间吗? ⑶下列情况下每个十六进制指令字分别代表什么操作?其中如果有编码不正确,如何改正才能成为合法指令?①(F0F1)H (3CD2)H ②(2856)H ③(6FD6)H ④(1C2)H

4.5 典型指令

一、指令的分类 1.数据传送指令

主要包括取数指令、存数指令、传送指令、成组传送指令、字节交换指令、清累加器指令、堆栈操作指令等等。这类指令主要用来实现主存和寄存器之间,或寄存器和寄存器之间的数据传送。

2.算术运算指令

包括二进制定点加、减、乘、除指令,浮点加、减、乘、除指令,求反、求补指令,算术移位指令,算术比较指令,十进制加、减运算指令等。这类指令主要用于定点或浮点的算术运算,大型机中有向量运算指令,直接对整个向量或矩阵进行求和、求积运算。 3.逻辑运算指令

这类指令包括逻辑加、逻辑乘、按位加、逻辑移位等指令,主要用于无符号数的位操作、代码的转换、判断及运算。移位指令用来对寄存器的内容实现左移、右移或循环移位。 4.程序控制指令 也称转移指令。

有时机器执行到某条指令时,出现了几种不同结果,这时机器必须执行一条转移指令,根据不同结果进行转移,从而改变程序原来执行的顺序。这种转移指令称为条件转移指令。另外,还有无条件转移指令、转子程序指令、返回主程序指令、中断返回指令等。 转移指令的转移地址一般采用直接寻址和相对寻址方式来确定。 5.输入输出指令

输入输出指令主要用来启动外围设备,检查测试外围设备的工作状态,并实现外部设备和CPU之间,或外围设备与外围设备之间的信息传送。 6.字符串处理指令

字符串处理指令是一种非数值处理指令,一般包括字符串传送、字符串转换(把一种编码的字符串转换成另一种编码的字符串)、字符串替换(把某一字符串用另一字符串替换)等。这类指令在文字编辑中对大量字符串进行处理。 7.特权指令 特权指令是指具有特殊权限的指令。

这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。 在多用户、多任务的计算机系统中特权指令必不可少。它主要用于系统资源的分配和管理。 8. 其他指令

除以上各类指令外,还有状态寄存器置位、复位指令、测试指令、暂停指令,空操作指令,以及其他一些系统控制用的特殊指令。 二、精简指令系统

RISC指令系统的最大特点是:

⑴选取使用频率最高的一些简单指令,指令条数少; ⑵指令长度固定,指令格式种类少

⑶只有取数/存数指令访问存储器,其余指令的操作都在寄存器之间进行。

练习:

1.为了缩短指令中某个操作数地址的位数,有效的方法是采用( ) A.寄存器寻址 B.立即寻址 C.间接寻址 D.直接寻址

2.下列叙述中,不属于RISC特征的是( )。 A.寻址方式较少 B.使用微程序控制器 C.指令格式种类少 D.有大量通用寄存器

3. 指令系统中采用不同寻址方式的目的主要是( )。 A.提供扩展操作码的可能并降低指令译码难度;

B.缩短指令字长,扩大寻址空间,提高编程灵活性; C.实现存储程序和程序控制; D.可以直接访问外存。

4.单地址指令中为了完成两个数的算术运算,除地址码指明的一个操作数外,另一个操作数常需采用( )指定。

A.堆栈寻址方式; B.立即寻址方式; C.隐含寻址方式; D.间接寻址方式。

5.零地址运算指令在指令格式中不给出操作数地址,它的操作数来自( )。 A.立即数和栈顶; B.暂存器;

C.栈顶和次栈顶; D.累加器和暂存器。

6.对某个寄存器中操作数进行操作的寻址方式称为( ) 寻址。 A.直接; B.间接;

C.寄存器; D.寄存器间接。

7.寄存器间接寻址方式中,操作数在( ) 中。 A.通用寄存器; B.主存单元; C.程序计数器; D.堆栈。

8. 变址寻址方式中,操作数的有效地址等于( )。 A.基址寄存器内容加上形式地址(位移量); B.堆栈指示器内容加上形式地址; C.程序计数器内容加上形式地址; D. 变址寄存器内容加上形式地址。 9.程序控制类指令的功能是( ) 。 A.进行算术运算和逻辑运算;

B.进行主存与CPU之间的数据传送;

C.进行CPU和I/O设备之间的数据传送; D.改变程序执行的顺序。

10.堆栈寻址方式中,设A为累加器,SP为堆栈指示器,Msp为SP指示的栈顶单元,如果进栈操作的动作是:先(A)→ Msp,后(SP)-1 →SP;那么出栈操作的动作应为( ) 。 A.先(Msp) → A,后(SP)+1 → SP B.先(SP)+1 → SP ,后(Msp) → A C.先(SP)-1 → SP ,后(Msp) → A D.先(Msp) → A,后(SP)-1 → SP

11.采用变址寻址可扩大寻址范围,且( ) 。

A.变址寄存器内容由用户确定,在程序执行过程中不可变; B.变址寄存器内容由操作系统确定,在程序执行过程中不可变; C.变址寄存器内容由用户确定,在程序执行过程中可变。

12.就取得操作数的速度而言,下列寻址方式中速度最快的是( ) ,速度最慢的是( ) ,不需要访存的寻址方式是( ) 。 A.直接寻址 B.立即寻址 C.间接寻址

13.下列说法中不正确的是( ) 。

A.变址寻址中,有效数据存放在主存中;

B.存储器堆栈是先进后出的随机存储器;

C.堆栈指针SP的内容表示当前堆栈内所存储的数据的个数; D.内存中指令的寻址和数据的寻址是交替进行的。

14.下列几项中,不符合RISC指令系统的特点是( ) 。 A.指令长度固定,指令种类少;

B.寻址方式种类尽量减少,指令功能尽可能强; C.增加寄存器的数目,以尽量减少访存次数;

D.选取使用频率最高的一些简单指令,以及很有用但不复杂的指令。

17.在程序的执行过程中,Cache与主存的地址映射是由 ( ) 。 A.操作系统来管理的 B.程序员来调度的 C.硬件自动完成的

D.操作系统辅助相应的硬件来完成的 18.64KB的内存容量为 ( ) 。 A.64000字节 B.32768字节 C.65536字节 D.32000字节

本文来源:https://www.bwwdw.com/article/yq8x.html

Top