指令中的操作码格式

(2)指令中的操作码格式

操作码是用来指示机器执行什么样的操作的,每一条指令都有一个确定的操作码,不同指令的操作码用不同的编码表示。操作码位数越多,所能表示的操作种类就越多。目前在指令操作码设计上主要采用以下两种编码方式。

1)定长操作码,变长指令码

操作码的长度固定,且集中放在指令字的第一个字段中,指令的其余部分全部用于地址码。IBM370机和VAX一11系列机,PC系列机均采用这种定长操作码格式。若操作码的长度均为8位,可表示256种不同的操作。

操作码不同所涉及的操作数的个数是不同的,例如加指令ADD、减指令SUB可以有3个操作数:第一操作数地址、第二操作数地址和结果存放地址。比较指令CMP将两个操作数做比较。传送指令MOV将操作数从一处移往另一处,指令中仅需要两个操作数地址。加1指令NC将操作数加1:转移类指令将程序转向另一地址执行,指令中只需要一个地址。还有些指令,像返回指令RET、空操作指令NOP不涉及任何操作数。由于不同的指令需要的操作数个数不同,使得指令的长度随操作码而变化。这种方式的操作码字段规整,有利于简化操作码译码器的设计,广泛用于指令字长较长的大、中型及超级小型机中。因为字长较长的机器(32位或更长)并不十分在意每位二进制的编码效率。精简指令系统计算机(RISC)中也广泛采用定长操作码,因为RISC机指令条数少(操作码少),所需的操作码字段的进制位数当然也少。

2)变长操作码,定长指令码

这是操作码长度不固定,但指令码的长度是固定的一种设计。由于不同的指令需要的操作数个数不同,为了有效地利用每一位二进制位,采用扩展操作码的办法。即操作码和地址码位数不固定,操作码位数随地址码位数的减少而增加:对地址数少的指令,允许操作码长些,对地址数多的指令则操作码就短些。

豫ICP备19006514号 网站地图 免责声明:如果侵犯了你的权益,请发邮件至:419017772@qq.com,我们会及时删除侵权内容,谢谢合作!