指令系统

计算机组成原理 | 2021-10-08 16:14:15 | 阅读 84 次 | 评论(0)

指令:计算及执行某些操作的指令

指令系统:一台计算机所有指令的集合

 

指令格式

机器指令的基本格式

一条指令就是机器语言的一个语句,是一组有意义的二进制代码。

操 作 码 
地 址 码 ( 操 作 数 地 址 )

操作码:指明操作的性质及功能

地址码:指明操作数的地址

 

指令长度:一条指令中包含的二进制代码的位数,取决于操作码字段的长度、地址码的个数及长度。

在一个指令系统中,若所有指令长度相等,称为定长指令字结构;若各种指令长度岁指令工能不一样,称为变长指令字结构。

 

地址码结构

双操作数指令除操作码外,还应包含以下信息:

第一操作数地址,A1

第二操作数地址:A2

操作结果存放地址:A3

下条将要执行指令的地址:A4

这些信息在指令中明显的给出,称为显地址;用隐含的方式给出,称为隐地址

四地址指令

A1opA2->A3

 Ai表示地址,(Ai)表示存放于该地址中的内容

三地址指令

A1opA2->A3

PC+1->PC (隐含)

执行一条三址的双操作数运算指令,至少需要访问四次主存。第一次取指令本身,第二次取被操作数,第三次取操作数,第四次保存运算结果

二地址指令

A1OPA2->A1

PC+1->PC (隐含)

A1为目的操作数地址,A2为源操作数地址

同样访问四次主存

一地址指令

Acc)OP(A1)->Acc

PC+1->PC (隐含)

执行一条一地址指令只需要访问两次主存。第一次取指令本身,第二次取操作数。被操作数与结果放在累加寄存器中,读取和存入都不需要访问主存。

零地址指令

零地址指令用在堆栈寄存器

 

用三地址编写的程序最短,指令长度最长,二一零程序长度变长,但指令变短

 

指令的操作码

指令系统每一条指令都有唯一的操作码,指令不同,操作码编码不同

  1. 规整型

操作码字段的位数和位置固定。也称定长编码。

假定:指令系统共m条指令,指令中操作码地址为N位,N>=log2m(2N>=m)

  1. 非规整型

操作码字段位置不固定,分散的放在指令字的不同位置上

增加指令译码和分析的难度,使控制器设计复杂化

寻址技术

寻址:寻找操作数地址或下一条将要执行的指令地址

编制方式:

  1. 编制单位
    1. 字编制

编制单位=访问单位

每个编址单位包含的信息量与读或写一次寄存器、主存所获得的信息量是相同的。

  1. 字节编址

字节编址为了适应非数值计算的需要。字节编址方式使编址单位与信息的基本单位相一致。

编址单位<访问单位

  1. 位编址
  1. 指令中地址码的位数

指令格式中每个地址码的位数是与主存容量和最小寻址单位有关联。

主存容量越大,所需地址码位数越长;相同容量,如果以字节为最小寻址单位,地址码的位数需要长些;如果以字为最小寻址单位,地址码位数可以减少。

( 1) 若 最 小 寻 址 单 位 为 字 节 ( 按 字 节 编 址 ) 
寻 址 范 围 220 , 其 地 址 码 应 为 20 位 
( 2 ) 若 最 小 寻 址 单 位 为 字 ( 按 字 编 址 ) 
寻 址 范 围 218 , 其 地 址 码 只 需 18 位 。

指令寻址和数据寻址

指令寻址:寻找即将要执行的指令地址

顺序寻址:程序计数器PC1,自动形成下一条指令的地址;跳跃寻址需要通过程序转移类指令实现

跳跃寻址转移地址形成方式:直接、相对、间接寻址,寻找到的不是操作数的有效地址而是转移的有效地址

数据寻址:寻找操作数的地址

根据指令中给出的地址码字段寻找真实操作数地址的方式。

指 令 中 的 形 式 地 址 A 
寻 址 方 式 
有 效 地 址 EA 
操 作 数 s

  1. 立即寻址

指令中给出操作数本身,数据就包含在指令中,取出指令也就取出了操作数

立 艮

  1. 寄存器寻址

地址码给出某一个通用寄存器的编号,这个指定的寄存器Ri中存放着操作数S

S=Ri

优:从寄存器中存取数据比从主存中快得多

由于寄存器数量少,其地址码字段比主存单元地址字段短得多

  1. 直接寻址

指令中地址码字段给出的地址A就是操作数的有效地址,形式地址=有效地址

EA=A 操作数地址不可修改,又叫绝对寻址方式。

S=A

地址空间受到指令中地址码字段位数的限制

  1. 间接寻址

指令中给出的地址不是操作数的地址,而是存放操作数地址(EA)的主存单元的地址,简称操作数地址的地址。

通常在指令格式中划出一位作为直接或间接寻址的标志位,间接寻址时标志位@=1

EA=A

S=((A))

一 级 间 接 寻 址 : 
IR 
OP @ 间 接 地 址 
三 级 间 接 寻 址 : 
主 存 储 器 
OP @ 一 级 间 址 
IR 
有 效 地 址 
操 作 数 
0 
主 存 储 器 
操 作 数 
二 级 间 址 
三 级 间 址 
有 效 地 址

优:扩大了寻址范围,可用指令的短地址访问大的主存空间。

可将主存单元作为程序的地址指针,用以指示操作数在主存中的位置。操作数地址需要改变时,不必修改指令,只需修改存放有效地址的主存单元(间接地址单元)

  1. 寄存器间接寻址

指令中的地址码给出某一通用寄存器的编号,在被指定的寄存器中存放操作数的有效地址,操作数存放在主存单元中。

EA=Ri)

S=((Ri))

  1. 变址寻址

变址寄存器Rx的内容与指令中给出的形式A相加,形成操作数有效地址

EA=Rx+A     变址寄存器Rx的内容(Rx)称为变址值

S=((Rx+A

主 存 储 器 
IR OP R 
操 作 数

  1. 基址寻址

基址寄存器Rb的内容与指令中给出的位移量D相加,形成操作数有效地址

EA=(Rb+D    基址寄存器Rb的内容(Rb)称为变址值

S=((Rb+D

指令的地址码字段是一个位移量,可正可负

D 
IR OP Rb 
操 作 数 
0 二 < 
. 基 址 值 
+D 
操 作 数

  1. 相对寻址

由程序计数器PC提供基准地址,指令中的地址码字段作为位移量D,两者相加后得到操作数的有效地址

EA=PC)+D

S=((PC+D

位移量指出的是操作数和现行指令之间的相对位置

特点

操作数的地址不固定,随PC值变化而变化,与指令地址相差一个固定值+-D

对于指令地址而言,操作数地址可能在指令地址之前或之后

页面寻址

将整个主存空间分成若干个大小相同的区,每个区称为一页,每页有若干个主存单元。每页都有自己的编号,称为页面地址;页面内的每个主存单元也有自己的编号称为页内地址。

操作数的有效地址:前面为页面地址,后部为页内地址。

页 面 地 址 
页 内 地 址

页内地址由指令的地址码部分自动直接提供,与页面地址通过拼装得到有效地址,无需计算,寻址较快。

页面寻址分为三种:

  1. 基页寻址 EA=0//A,操作数S在零页面中。基页寻址实际上就是直接寻址。

主 存 储 器 
一 指 令 寄 存 器 一 
64K 
0038 
所 在 页 
255 页

  1. 当前页寻址 EA=(PC)H//A 操作数S与指令本身处于同一页面

指 令 寄 存 器 
主 存 储 器 
OP 
操 作 数 
指 令 
2E38 
64K 
2F85 
255 页 
程 序 计 数 器

  1. 区别不同的寻址方式

显式:在指令中设置专门的寻址方式字段

隐式:由指令的操作码字段说明指令格式隐含约定寻址方式

一条指令如果有两个或两个以上地址码,各地址码可采用不同的寻址方式。

文章评论,共0条
游客请输入验证码
最新评论
  • 阵背产拿:funcode小游戏插背景音乐能用吗😭