指令系统包括机器指令,数据表示,寻址方式。
指令包括操作码,源操作数地址,目的操作数地址。
定点计算机也可以处理浮点数据和向量数据,只需要通过软件变换即可。
指令系统的设计原则:完备性(完备指令集),有效性(简洁加速无歧义),规整性,兼容性。
指令系统应该包括指令:
数据传送指令,输入输出指令,算术逻辑运算指令,系统控制,程序控制指令。
指令系统两大派系:CISC(复杂指令集)(各种指令都能访问存储器),
RISC(简单指令集)(寄存器到寄存器的工作模式)。
随着时代的发展,RISC与CISC相互借鉴,到如今,两者的界限已经很模糊了。
扩展操作码的指令格式:使用频率高的指令,分配短的操作码,增加指令字所能表示的操作信息。
几种常见的指令:
零地址指令:堆栈指令,空操作指令,停机指令等。
一地址指令:单目运算,累加器等(另外一个操作数默认)
二地址指令:OP|A1|A2
三地址指令:OP|A1|A2|A3
多地址指令:如向量操作等批量处理指令
寻址方式:
1.为什么不能把操作数放在地址码里面?
答:地址码位数有限,操作数大小有限。
2.为什么不能把操作数地址放在地址码里面?
答:地址码位数有限,寻址空间狭窄。
寻址分为指令寻址和操作数寻址。
指令寻址相对简单:一般来说是程序计数器加上pc增值,或者是跳转指令的目标地址。
操作数寻址:
立即数寻址:源操作数在指令当中。(MOV AX ,1000H)
存储器直接寻址:地址码中存放着源操作数在存储器中的地址。(MOV AX,[1000H])
寄存器直接寻址:地址码中存放着源操作数所在的寄存器编号。(MOV AX,BX)
存储器间接寻址:操作数和操作数地址都在存储器中,地址码字段给出操作数地址在存储器中的地址。(两次访存,速度慢)(MOV R1,@(1000H))
寄存器间接寻址:操作数在存储器中,操作数地址在寄存器中,地址码中存放着操作数地址所在的寄存器编号。(MOV AX,[BX])