指令格式
指令(机器指令)
是指计算机执行某种操作的命令,是计算机运行的最小功能单位
指令集:一台计算机的所有指令的集合构成该计算机的指令系统
注:
一台计算机只能够执行自己计算机上指令系统的指令
格式
指令的结构:操作码+地址码
操作码:表明用户想要做什么
地址码:对谁进行操作
地址指令
设指令地址及存储字长均为32位,操作码占8位
四地址指令
指令含义: ( A 1 ) (A_1) (A1)OP ( A 2 ) (A_2) (A2)–> A 3 A_3 A3, A 4 = A_4= A4=下一条要执行指令的地址
一条指令的执行(假设每个地址都是主存地址)
取指令:访存一次(假设指令字长等于存储字长)
取两个操作数:访存两次
存回结果:访存一次
共访存4次
三地址指令
指令含义: ( A 1 ) (A_1) (A1)OP ( A 2 ) (A_2) (A2)–> A 3 A_3 A3
三个地址码字段均为8位,指令操作数直接寻址范围为 2 8 = 256 2^8=256 28=256;完成一条指令需要访存4次
二地址指令
指令含义: ( A 1 ) (A_1) (A1)OP ( A 2 ) (A_2) (A2)–> A 1 A_1 A1
两个地址码字段各自占12位,指令操作数的直接寻址范围为 2 12 = 4 K 2^{12}=4K 212=4K;完成一次指令需要访存4次
一地址指令
指令含义:
- OP ( A 1 ) (A_1) (A1)–> A 1 A_1 A1;完成一次指令需要访存3次
- (ACC)OP( A 1 A_1 A1)–>(ACC),隐含约定的目的地址,完成一次指令需要访存2次
地址码字段各占24位,指令操作数的直接寻址范围为 2 24 = 16 M 2^{24}=16M 224=16M;
零地址指令
指令含义:
- 不需要操作数,如空操作、停机、以及关中断
- 堆栈计算机,两个操作数依次存放在栈顶和次栈顶,结果压回栈顶
定长指令字结构:在减少地址的过程中,我们并没有改变整个指令的长度
变长指令字结构:在减少地址的过程中,我们并没有整个指令的长度
定长操作码:n位–> 2 n 2^n 2n条指令
扩展操作码:操作码长度可变
指令字长为16位:
前4位为基本操作码字段OP,另有3个4位长的地址字段
A
1
A_1
A1、
A
2
A_2
A2和
A
3
A_3
A3
4位基本操作码若全部用于三地址指令,则有16条。
但至少须将1111留作扩展操作码之用,即三地址指令为15条;
11111111留作扩展操作码之用,二地址指令为15条;
1111 1111 1111留作扩展操作码之用,一地址指令为15条;
设计思路:设地址长度为n,上一层留出m种状态,则下一层可以扩展出 m ∗ 2 n m*2^n m∗2n种状态
扩展操作码的注意事项:
- 不允许短码是长码的前缀,即短操作码不能与长操作码的前面的部分的代码相同
- 各个指令的操作码一定不能够重复
- 通常,对于经常使用的指令,分配较短的操作码,反之,分配较长的操作码,减少指令译码和分析的时间
定长操作码
- 优点:简化计算机硬件的设计,有助于提高指令译码和识别的速度
- 缺点:指令数量增加会占用更多的操作位,留给操作数地址的位数有限
扩展操作码
- 优点:在指令字长有限的前提下仍保持比较丰富的指令种类
- 缺点:增加了指令译码和分析的难度,使控制器的设计复杂化
指令功能的类型
- 数据传输
- LOAD 作用:把存储器中的数据放到寄存器中
- STORE 作用:把寄存器中的数据放到存储器中
- 算数逻辑操作
- 算数:加减乘除…
- 逻辑:与、或、非…
- 移位操作
- 算术移位
- 逻辑移位
- 循环移位
- 转移操作
- 无条件转移 JMP
- 条件转移 JZ: 结果为0;JO:结果溢出;JC:结果有进位
- 调用和返回CALL和RETURN
- 陷阱和陷阱指令
- 输入输出操作
- CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)