指令及指令系统

1.指令的基本格式 

1.1指令系统

指令(机器指令)是指示计算机执行某种操作的命令。一台计算机的所有指令的集合构成该机的指令系统,也称指令集。

指令系统是指令集体系结构(ISA)中最核心的部分,ISA完整定义了软件和硬件之间的接口,是机器语言或汇编语言程序员所应熟悉的。

ISA规定的内容主要包括:指令格式数据类型格式操作数的存放方式程序可访问的寄存器个数位数和编号存储空间的大小和编址方式寻址方式指令执行过程的控制方式等。

1.2指令格式

条指令就是机器语言的一个语句,它是一组有意义的二进制代码。条指令通常要包括操作码字段和地址码字段两部分:

操作码(OP)地址码 (A)
用户要干什么?对谁进行操作?
停机,中断,求反,求补,加减乘除不需要操作对象需要一个操作对象需要两个操作对象

1.3指令-按地址码数目分类

 

1.4指令-按指令长度分类

指令字长:一条指令的总长度(可能会变)


机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)

存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)


半字长指令、单字长指令、双字长指令--指令长度是机器字长的多少倍指令字长会影响取指令所需时间。

如:机器字长=存储字长=16bit,则取一条双字长指令需要两次访存


定长指令字结构:指令系统中所有指令的长度都相等

变长指令字结构:指令系统中各种指令的长度不等

1.5指令-按操作码长度分类

指令由操作码和若干个地址码组成。


定长指令字结构:指令系统中所有指令的长度都相等 

变长指令字结构:指令系统中各种指令的长度不等


定长操作码:指令系统中所有指令的操作码长度都相同

变长操作码指:令系统中各指令的操作码长度可变中


定长指令字结构 + 可变长操作码 = 扩展操作码指令格式 

定长操作码:指令系统中所有指令的操作码长度都相同n位→2^n条指令控制器的译码电路设计简单,但灵活性较低
可变长操作码:指令系统中各指令的操作码长度可变控制器的译码电路设计复杂,但灵活性较高
定长指令字结构+可变长操作码扩展操作码指令格式

1.6指令一按操作类型分头类

1.数据传送LOAD作用:把存储器中的数据放到寄存器中作用:把寄存器中的数据放到存储器中
2.算术逻辑操作算术:加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算逻辑:与、或、非、异或、位操作、位测试、位清除、位求反
3.移位操作算术移位、逻辑移位、循环移位(带进位和不带进位)
4.转移操作无条件转移JMP
条件转移JZ:结果为0;J0:结果溢出;JC:结果有进位
调用和返回CALL和RETURN
陷阱(Trap)与陷阱指令
5.输入输出操作CPU寄存器与10端口之间的数据传送(端口即I0接口中的寄存器)

2.扩展操作码指令格式 

 

在设计扩展操作码指令格式时,必须注意以下两点:

1)不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。

2)各指令的操作码一定不能重复。

通常情况下,对使用频率较高的指令,分配较短的操作码;对使用频率较低的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间。 

扩展操作码举例


设指令字长固定为16位,试设计一套指令系统满足:

a)有15条三地址指令

0000-1110A1A2A3
123456789101112131415
000000010010001101000101011001111000100110101011110011011110 

 

b)有12条二地址指令

1111 XXXX XXXX XXXX11110000-1011A1A2
123456789101112
11110000~0001~0010~0011~0100~0101~0110~0111~1000~1001~1010~1011

 

c)有62条一地址指令

1111 11XX XXXX XXXX1111

1100-1111

0000-1111

A1
12345678910111213141516
000000000001000010000011000100000101000110000111001000001001001010001011001100001101001110001111
010000~0001~0010~0011~0100~0101~0110~0111~1000~1001~1010~1011~1100~1101~1110~1111
10~~~~~~~~~~~~~~~
11~~~~~~~~~~~~~

d)有32条零地址指令

1111 1111 111X XXXX111111111110-11110000-1111

 

设地址长度为n,上一层留出M种状态,下一层可扩展出mx2^n种状态

【2017统考真题】某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令 29 条、二地址指令 107条,每个地址字段为6位,则指令字长至少应该是()

二地址指令有 29条,所以其操作码至少为5位。以5位进行计算,它剩余32-29=3种操作码给二地址。而二地址另外多了6位给操作码,因此其数量最大达3x64=192。所以指令字长最少为23位,因为计算机按字节编址,需要是8的倍数,所以指令字长至少应该是24位。

【2022 统考真题】设计某指令系统时,假设采用 16 位定长指令字格式,操作码使用扩展编码方式,地址码为6位,包含零地址、一地址和二地址3种格式的指令。若二地址指令有 12条,一地址指令有 254条,则零地址指令的条数最多为( )。

地址码为6位,一条二地址指令会占用2条一地址指令的空间,一条一地址指令会占用2条零地址指令的空间。如果全都是零地址指令,则最多有2条,减去一地址指令和二地址指令所占用的零地址指令空间,即2^16-254x2^6-12x2^6x2^6=(2^10-254-12x2^6)x2^6=2x2^6=128。 

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值