指令系统
- 指令要求计算机完成什么功能? - - - -设置操作码
- 指令要求计算机处理什么数据? - - - -设置数据源/目
- 计算机怎样得到要处理的数据? - - - -设置寻址方式
不同地址数量的指令
分为三地址指令、双地址指令、单地址指令、零地址指令
①三地址指令:一般地址域中A1、A2分别确定第一、第二操作数地址,A3确定结果地址。下一条指令的地址通常由程序计数器按顺序给出。
②二地址指令:地址域中A1确定第一操作数地址和结果地址,A2确定第二操作数地址。
③单地址指令:地址域中A 确定第一操作数地址。固定使用某个寄存器存放第二操作数和操作结果。因而在指令中隐含了它们的地址。
④零地址指令:在堆栈型计算机中,操作数一般存放在下推堆栈顶的两个单元中,结果又放入栈顶,地址均被隐含,因而大多数指令只有操作码而没有地址域。
三地址指令 | 操作码op | address1 | address2 | address3 | (address1) op (address2)-> (address3) |
双地址指令 | 操作码op | address1 | address2 | (address1)op (address2)-> (address1)or(address2) | |
单地址指令 | 操作码op | address1 | (address1)op ->(address1) (address1)op(ACC)-> (address1) |
零地址指令:
- 机器指令无地址码
- 空操作、停机操作、中途返回
寻址方式及指令寻址
顺序寻址
CPU中设置有PC计数器。注意PC+1中的1是一条指令的长度,不是一个字节。
跳跃寻址
就是JMP。
操作数寻址方式
立即数寻址
地址码字段就是操作数本身。
优点:因为将数据和指令一并送入CPU内部的寄存器中,执行指令速度快。便于程序设计。,不需要访问内存
缺点:数据大小受字段位数限制。
MOV AX .2000H
寄存器寻址
操作数已经在CPU的内部寄存器中。
优点:执行速度快。不需要访问内存
缺点:能访问的数据大小一般与计算机字长有关。也受寄存器数量限制
MOV AX ,BX
直接寻址
地址码字段直接给出操作数在内存的地址。
特点:提供了访问主存的操作。
缺点:速度慢。地址字段的位数决定了访问空间大小
MOV AX ,[2000H]
间接寻址
地址码字段给出的是操作数地址的地址。第一次访问主存:获得操作数的地址。第二次访问主存:获得操作数。
明显用速度换访问空间。
MOV AX ,[SOMETHING] //something在内存中。
寄存器间接寻址
地址码字段给出的是寄存器编号。也是两次访问:第一次访问寄存器:获得操作数地址。第二次访问主存:获得操作数。
例如:MOV AL , [BX]
相对寻址
可用于跳转指令。
有效地址为程序计数器PC中的内容+指令中的形式地址。
注意:因为在执行指令的时候,PC会变。这里取的PC的值是下一条将要执行指令的地址。
基址寻址
指定一个基址寄存器,与本指令地址无关。
例如:MOV AX ,32[B]
变址寻址
MOV AX , 32[SI]
可以用在循环中。
和基址寻址的不同点是SI是可以修改的。基址B是不可修改的。
指令格式设计
- 根据指令数量的要求是否支持操作码扩展,确定操作码字段的位数
- 根据对操作数的要求确定地址码字段的个数
- 根据寻址方式的要求,为每个地址码字段确定寻址方式字段位数
- 确定采用定长指令还是变长指令
例题:
MIPS指令概述
只有三种指令格式
- R型指令
操作数只能来自寄存器,运算结果也只能存入寄存器。是RR型指令
如果表示移位运算,则表示对Rt的内容进行移位,所移位数有shamt确定。
- I型指令
立即数指令。
- J型指令
无条件转移指令。无条件转移的目标地址有PC高4位与26位直接地址左移后的值拼接而成。
注意:不单设寻址方式说明字段。
每一条指令都只有一种寻址方式。
寻址方式
立即数寻址
目标寄存器在右边,源寄存器在左边 和汇编语言恰好相反???
寄存器直接寻址
基址寻址
相对寻址
MIPS指令详解
R型指令
三种不同类型