一、总览
二、指令的定义
指令(又称机器指令):
是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。
注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。
三、指令格式
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。
一条指令通常要包括操作码字段和地址码字段两部分:
A1这个地址里面的值 与 A2这个地址里面的值 执行OP操作后,将结果存到A3这个地址中
四、指令格式-地址码
指令含义:(A1)OP(A2)——>A3,A4=下一条将要执行指令的地址
设指令字长为32位,操作码占8位,4个地址码字段各占6位
设存储字长为32位,即4B
- Ai可直接表示2^6=64个不同的位置
- 一条指令的执行(假设每个地址都是主存地址):
取指令访存1次(假设指令字长=存储字长)
取两个操作数访存2次
存回结果访存1次
共访存4次
设指令字长及存储字长均为32位,操作码占8位:
定长指令字结构:指令长度固定 指令字长=存储字长
变长指令字结构:指令长度不等 按字节的倍数变化
定长操作码:n位——>2^n条指令
扩展操作码:操作码长度可变
指令含义:(A1)OP(A2)→A3,A4=下一条将要执行指令的地址
4个地址码字段各占6位,指令操作数直接寻址范围为2^6=64;完成一条指令需要访存4次
指令含义:(A1)OP(A2)→A3
3个地址码字段各占8位,指令操作数直接寻址范围为2^8=256;完成一条指令需要访存4次
指令含义:(A1)OP(A2)→A1
2个地址码字段各占12位,指令操作数直接寻址范围为2^12=4K;完成一条指令需要访存4次
指令含义:
- OP(A1)→A1,如加1、减1、取反、求补等,完成一条指令需要访存3次
- (ACC)OP(A1)→ACC,隐含约定的目的地址为ACC完成一条指令需要访存2次,1个地址码字段占24位,指令操作数直接寻址范围为2^24=16M
注:ACC为累加器
指令含义:
1.不需要操作数,如空操作、停机、关中断等指令
2.堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶
小结:
当用一些硬件资源代替指令字中的地址码字段后
- 可扩大指令的寻址范围
- 可缩短指令字长
- 可减少访存次数
五、扩展操作码
在设计扩展操作码指令格式时,必须注意以下两点:
1)不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
2)各指令的操作码一定不能重复。
通常情况下,对使用频率较高的指令,分配较短的操作码;对使用频率较低的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间。也还有其他扩展操作码设计方法。
六、指令操作码
操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。
操作码是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息。例如,指出是算术加运算,还是减运算;是程序转移,还是返回操作。
操作码分类:
- 定长操作码:在指令字的最高位部分分配固定的若干位(定长)表示操作码。
- 一般n位操作码字段的指令系统最大能够表示2”条指令。
- 优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利;
- 缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。
- 扩展操作码(不定长操作码):全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。
- 最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。
- 优:在指令字长有限的前提下仍保持比较丰富的指令种类;
- 缺:增加了指令译码和分析的难度,使控制器的设计复杂化。