【计算机组成原理】第4章 指令系统

4.1 指令系统的发展与性能需求

4.1.1指令系统的发展

程序:计算机的程序是由一系列的机器指令组成的。
指令就是计算机执行某种操作的命令。

这里某种操作???其实很有意思啊
20世纪50年代,所支持的指令系统只有定点加减,逻辑运算、数据传送、转移等十几至几十条指令。
60年代后期,除以上基本指令,还设置了乘除运算、浮点运算、十进制运算、字符串处理,指令数目多达几百条,寻址方式也趋多样化

计算机的指令有微指令机器指令宏指令

微指令:微程序级的命令,属于硬件。
宏指令:若干条机器指令组成的软件指令,属于软件。
机器指令:介于微指令和宏指令之间,通常简称为指令。
每一条指令可完成一个独立的算术运算或算术逻辑运算操作。

4.1.2指令系统的性能要求

完备性

指令系统丰富、功能齐全、使用方便。

有效性

该指令系统编写的程序能够高效率地运行。
高效率主要表现在程序占据存储空间小、执行速度快。

规整性

对称性
匀齐性
指令格式和数据格式的一致性

兼容性

系列机各机种之间具有相同的基本结构和共有的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用。

4.2 指令格式

机器指令

机器指令是机器字来表示。
表示一条指令的机器字,就称为指令字,通常简称指令。
指令格式,则是指令字用二进制代码来表示的结构形式,通常由操作码字段和地址码字段组成。

一条指令的结构如下形式来表示:

操作码字段OP地址码字段A

操作码

设计计算机时,对指令系统的每一条指令都要规定一个操作码。

操作码字段应该执行怎样的操作?
加法,减法,乘法,除法,取数,存数等等。

一般来说,一个包含 n 位的操作码最多能表示 2n 条指令。

地址码

有几个操作数地址,称为几操作数 或 几地址指令。

在早期,一般操作数有被操作数、操作数和操作结果这三种数,所以就形成了三地址指令格式。
后来发展成二地址格式、一地址格式和零地址格式。

(1)零地址指令:只有操作码,没有地址码。
(2)一地址指令只有一个地址码,指定一个操作数,另一个操作数是隐含的。

例数学含义:AC<–(AC)op(A)
累加寄存器AC中的数据位隐含的被操作数,操作结果又回到累加寄存器AC中,而累加寄存器中原来的数随即被冲掉。
op表示操作性质:加、减、乘、除…
(AC)表示累加寄存器中AC的数;(A)表示内存中地址A的存储单元中的数;然后运算完又送回到(AC).

(3)二地址指令,有两个地址码字段 A1,A2 ,分别指明参与操作的两个数在内存中或运算器中通用寄存器的地址,其中 A1 兼做存放操作结构的地址。so数学含义:

A1<(A1)op(A2)

在二地址指令格式中,从操作数的物理位置来说,可以归结为三种类型:
1.访问内存的指令格式,称为存储器-存储器(SS)型
2.访问寄存器的指令格式,称为寄存器-寄存器(RR)型
3.即要访问内存单元,又要访问寄存器,称为寄存器-存储器(RS)型

(4)三地址指令中有三个操作数 A1,A2,A3 ,其数学含义:

A3<(A1)op(A2)

指令字长度

一个指令字中包含二进制代码的位数,称为指令字长度。
机器字长:计算机能直接处理的二进制数据的位数,他决定了计算机的运算精度

半字长指令:指令字长度等于半个机器字长度的指令。
单字长指令:指令字长度等于机器长度的指令。
双字长指令:指令字长度等于两个机器长度的指令。

多字长指令的缺点:必须两次或三次访问内存以取出一整条指令,这就降低了CPU的运算速度,同时又占用了更多的空间

例题考察
分清楚单字长还是双字长;
操作码字段OP可以指定 2n 条指令
二地址指令格式中,根据访问的物理位置来判断RR\SS\RS型

4.3 操作数类型

4.3.1 一般的数据类型

地址数据

无符号整数

数值数据

①定点整数或定点小数;②浮点数;③压缩十进制数,一个字节用两位BCD码表示

字符数据

目前广泛使用ASCII码

逻辑数据

一个单元有若干二进制位项组成,每个位的值可以是1或0.

4.4 指令和数据的寻址方式

寻址方式分为 指令寻址方式 和 地址寻址方式。
在冯·诺依曼型结构的计算机中,内存中指令的寻址和数据的寻址是交替进行的。

4.4.1 指令的寻址方式

有两种;

顺序寻址方式

指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序进行。

指令的顺序寻址方式,必须使用程序计数器PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。

跳跃寻址方式

所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。

4.4.2 操作数基本寻址方式

隐含寻址

不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。

操作数在专用寄存器中

立即寻址

指令的地址字段指出的不是操作数的地址,而是操作数本身。
特点:指令中包含的操作数立即可用,节省了访问内存的时间。

操作数=A.

直接寻址

特点:在指令格式的地址字段中直接指出操作数在内存的地址A。
如果用D表示操作数,那么直接寻址的表达式为:D=(A).

EA=A.

间接寻址

相对于直接寻址而言,指令地址字段中的形式地址A不是操作数D的真正地址,而是操作数地址的指示器。
两次访存,影响指令执行速度。

EA=(A).

寄存器寻址

当操作数不在内存中,而是放在CPU的通用寄存器中,可采用寄存器寻址方式。
指令结构中的RR型指令,就是采用寄存器寻址方式的例子。

EA=R

寄存器间接寻址

与寄存器寻址的区别
指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。

EA=(R).

偏移寻址

直接寻址寄存器间接寻址的结合。

EA=A+(R);

常用的三种偏移寻址:

相对寻址:EA=A+(PC);引用的专用寄存器是程序计数器(PC).
基址寻址:EA=A+(R);引用的专用寄存器是基址寄存器.
变址寻址:EA=A+(R);引用的专用寄存器是变址寄存器.

段寻址方式

EA=A+(R);

堆栈寻址

EA=栈顶

作业题作业题

一种二地址RS型指令的结构如下所示:

6位4位1位2位16位
OP通用寄存器间接寻址标志 I 寻址模式字段X 偏移量字段D

给出寻址方式

有效地址E算法 说明
E=D
E=(PC+D) PC为程序计数器
E=(R2)+D R2 为变址寄存器
E=(R2)
E=(D)
E=(R1)+D R1 为基址寄存器

写出6种寻址方式的名称。(简单呐!)

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值