一:零地址指令
1只有操作码,没有操作数(即没有地址码);使用情况:空操作,停机,关中断
2对堆栈计算机来说,他的两个操作数隐含存放在栈顶和次栈顶,将计算结果压入栈顶
二:一地址指令
只需要单操作数,如加一,减一,取反,求补等
指令含义:op(A)->A 完成这样一条指令需要两次访存,第一次从主存中取出指令op,第二次根据A所指向的地址从主存中读出操作数,因为最后的结果存放在ACC中,所以存结果不需要访存
2:需要两个操作数,但其中一个操作数隐含在某个寄存器(eg:ACC)
指令含义:(ACC) op (A)->ACC
注:A指某个主存地址【类比指针】,(A)表示A所指向地址中的内容【类比指针所指内容】
三:二地址指令(常用)
1常用于需要两个操作数的算数运算,逻辑运算相关指令
指令含义:(A1)op(A2)->A1
完成这样一条指令需要四次访存,第一次从主存中取出指令,第二次根据A所指向的地址从主存中读出操作数A1,第三次根据A所指向的地址从主存中读出操作数A2,最后将结果写入主存
四:三地址指令(与二地址指令区别在于结果的存放位置)
1常用于需要两个操作数的算数运算,逻辑运算相关指令
指令含义:(A1)op(A2)->A3
完成这样一条指令需要四次访存,第一次从主存中取出指令,第二次根据A所指向的地址从主存中读出操作数A1,第三次根据A所指向的地址从主存中读出操作数A2,最后将结果写入主存
五:四地址指令
指令含义:(A1)op(A2)->A3 A4=下一条将要执行指令的地址
完成这样一条指令需要四次访存,第一次从主存中取出这条四地址指令,第二次根据A所指向的地址从主存中读出操作数A1,第三次根据A所指向的地址从主存中读出操作数A2,最后将结果写入主存
正常情况下:取指令后PC+1,指向下一条指令
但在四地址指令中:执行指令后,将PC的值修改为A4所指地址。
零散知识点总结
1.指令通常有操作码和地址码两部分组成,操作码指出指令应该执行什么性质的操作和具有何种功能;地址码指出指令中操作数所在的存储器地址、寄存器地址或I/O地址。
2关中断和开中断其实就是像我们生活中的开关一样。 关中断是为了保护一些不能中途停止执行的程序而设计的,在关中断情况下处理机不允许被其他的程序打扰的
3:PC为程序计数器,具有自动加一功能
4:n位地址码的直接寻址范围=2^n,所以地址码位数越长,寻址范围越大。
所以,当规定指令总长不变时,地址码的数量越多,寻址能力越差(因为单个地址码的长度越短,其n越小)
5:指令字长:一条指令的总长度(可能会变)
6:机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)
7:存储字长:一个存储单元中的二进制代码位数(通常与MDR位数相同,即与主存有关)
8:MDR:地址寄存器
9:半字长指令,单字长指令,双字长指令——指令长度是机器字长的多少倍
显然,指令字长会影响取指令所需时间