指令格式
指令是表示指示计算机执行操作的命令,一组二进制代码
指令系统是所有指令的集合,也称为指令集
指令的基本格式
一般由操作码和地址码两部分构成,其中操作码在前,地址码在后,地址码的个数可变
操作码:表示指令的操作,特性与功能不可缺少
地址码:参与操作数的地址
指令的分类
按地址码分类
-
零地址指令
-
零地址:[OP]
只给出操作码OP
1)不需要操作数的指令,如空操作指令、停机指令、关中断指令等。
2)零地址的运算类指令仅用在堆栈计算机中。
通常参与运算的两个操作数隐含地从 栈顶和次 栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。
一地址指令
-
零地址:[OP][A1]
两种类型
1)只有目的操作数指令,取出A1,进行OP操作后,结果存回原地址
OP(A1)—>a1 完成一条指令进行三次访存
2)隐含约定目的的双操作数指令,取出A1,与ACC的隐含操作数进行OP操作,结果存回原地址
(ACC)OP(A1)—>ACC 完成一条指令进行两次访存
二地址指令
-
零地址:[OP][A1][A2]
(A1)OP(A2)—>A1 完成一条指令进行四次访存
三地址指令
-
零地址:[OP][A1][A2][A3(
结果)]
(A1)OP(A2)—>A3 完成一条指令进行四次访存
四地址指令
-
零地址:[OP][A1][A2][A3(
结果)][A4(
下一条执行的地址)]
(A1)OP(A2)—>A3 完成一条指令进行四次访存
按指令长度分类
定长指令字结构:
: 指令系统中所有指令的长度都相等 变长指令字结构:
变长指令字结构:
: 指令系统中各种指令的长度不等
半字长指令、单字长指令、双字长指令 ——指令长度是机器字长的多少倍
按操作码分类
定长操作码
操作码长度不变:[OP][A1][A2]
一般n位操作码字段的指令系统最大能够表示2n条指令。
- 优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利;
- 缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。
变长操作码
操作码长度可变:[OP ---- ][A2]
定长指令字结构+可变长操作码—>扩展操作码指令格式
-
扩展操作码
-
扩展操作码==定长指令字结构+可变长操作码
注意事项:
• 1)不允许短码是长码的前缀,即短操作码不能与长操作码的前 面部分的代码相同。
• 2)各指令的操作码一定不能重复。
通常情况下,对使用频率较高的指令,分配较短的操作码;对使用 频率较低的指令,分配较长的操作码,从而尽可能减少指令译码和 分析的时间。
最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的 指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。
- 优:在指令字长有限的前提下仍保持比较丰富的指令种类;
- 缺:增加了指令译码和分析的难度,使控制器的设计复杂化。
按指令操作类型分类
/