一条指令通常要包括操作码字段和地址码字段两部分
一条指令可能包含0个、1个、2个、3个、4个...地址码,根据地址码数量不同,可以将指令分为零地址指令、一地址指令......
零地址指令:
1、不需要操作数,如空操作、停机、关中断等操作
2、堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶(参考后缀表达式)
一地址指令:
1、只需要单操作数,如加1,减1,取反,求补等
指令含义:OP(A1)->A1
完成一条指令需要3次访存:取指->读A1->写A1
2、需要两个操作数,但其中一个操作数隐含在某个寄存器(如ACC)
指令含义:(ACC)OP(A1)->ACC
完成一条指令需要2次访存:取指->读A1
二地址指令:
常用于两个操作数的算数运算、逻辑运算相关指令
指令含义:(A1)OP(A2)->A1
完成一条指令需要4次访存:取指->A1->读A2->写A1
三地址指令:
也是常用于两个操作数的算数运算、逻辑运算相关指令
指令含义:(A1)OP(A2)->A3
完成一条指令需要4次访存:取指->A1->读A2->写A3
四地址指令:
指令含义:(A1)OP(A2)->A3,A4=下一条将要执行指令的地址
完成一条指令需要4次访存:取指->A1->读A2->写A3
正常情况下:取指令后PC+1,指向下一条命令
但是在四地址指令中:执行指令后,将PC的值修改为A4所指地址
指令字长:一条指令的总长度(可能会变)
指令还可以按操作码长度来分类:
定长操作码:指令系统中所有指令的操作码长度都相同
可变长操作码:指令系统中各指令的操作码长度可变
指令也可以按操作类型分类:
1、数据传送(LOAD、STORE等)
2、算数逻辑操作
3、移位操作
4、转移操作
5、输入输出操作