本文主要涉及指令的基本格式及寻址方式;
指令是一组具有特殊含义的二进制数,用于指示计算机执行某些操作,也称为机器语言或指令语言,是计算机执行的最小功能单元。 一台计算机上所有指令的集合构成该计算机的指令系统,也称为指令集。 指令系统是计算机的主要属性,在软硬件界面。
指令字长度:个指令中包含的二进制位数
机器字长:计算机可以直接处理的二进制位数通常与主存储单元的位数一致
命令字长=机器字长为单字长指令
命令字长=0.5 机器字长为半字长指令
命令字长=2 机器字长为双字长指令
一、基本格式:条指令通常包括操作码和地址码两部分
操作码(OP)加减乘除、内存数、提取数等,显示进行何种操作。 CPU有专用电路来解释操作码并执行相应的操作。 3位操作码最多可以表示8个不同的指令
地址码(A)提供数据或指令的地址
根据指令中的操作数地址码的数目的不同,可将指令分为以下几种。
1.零地址指令:
只有操作数,没有地址码,此命令有两种可能。
不需要停止指示等操作数
零地址的运算类指令只用于堆栈计算机,通常参与运算的两个操作数隐式跳出堆栈顶和子堆栈顶,发送到运算器进行运算,运算结果隐式推入堆栈
2.一地址指令:
只有一个地址码。 有两种可能性。
单一操作数命令,如自增1 .自减1、求反、求补等
(op(A1 )-(A1 ) ) ) ) ) ) ) ) ) ) )。
另一个操作数的地址是隐式的,并承诺由累加器(ACC )提供
(ACC ) op ) A1 )- ACC
指令字长为32位、操作码为8位、地址码为24位时,该指令操作数的直接地址范围如下。
3.二地址指令:
A1给出目标操作数的地址,A2给出源操作数的地址
(A1 ) op ) A2 )- A1
指令字长为32位、操作码为8位、两个地址码分别为12位时,该指令操作数的直接地址范围如下。
4.三地址指令:
A1给出目的操作数的地址,A2给出源操作数的地址,A3保存操作结果
((A1 ) op(a2 )-(a3 ) ) ) ) ) )。
指令字长为32位、操作码为8位、三个地址码分别为8位时,该指令操作数的直接地址范围如下。
5.四地址指令:
A1给出目标操作数的地址,A2给出源操作数的地址,A3给出存储操作结果,A4给出下一个要执行的指令的地址
((A1 ) op(a2 )-(a3 ) ) ) ) ) )。
指令字长为32位、操作码为8位、4个地址码分别为6位时,该指令操作数的直接地址范围如下。
二、寻址方式:寻址方法是指指定指令或操作数的有效地址的方法,用于确定数据地址和下一个要执行的指令的地址。 因此,地址方式为指令寻址和数据寻址
指令寻址
就是查找下一个要执行的命令的地址
1.顺序地址
按顺序向存储器取指令,逐个执行,程序计数器(PC )记录顺序
2.
strong>跳跃寻址
跳跃就是本条指令给出下条指令地址的计算方式,是否跳跃可能受状态寄存器和操作数的控制,跳跃的结果是当前指令修改PC值,下一条指令仍然是通过程序计数器PC给出
数据寻址
就是找这个指令的操作数的地址
1.隐含寻址
操作数地址隐含在操作码中,如累加寄存器(AC)
2.立即寻址
操作数就在指令中,取指令的时候就已经拿到了操作数
3.直接寻址
指令中给出操作数的地址,然后到内存中取操作数
4.间接寻址
指令中给出操作数的寻址特征位,再根据这个特征位到内存中取操作数
5.寄存器寻址
指令给出操作数的地址,然后到寄存器中取操作数
6.寄存器间接寻址
指令给出寄存器的地址,然后到寄存器中拿到操作数的地址,然后到内存中取操作数
7.偏移寻址
①相对寻址
把当前指令的地址存在在PC中,然后用形式地址+PC得到有效地址
②基址寻址
在CPU中用一个寄存器来存储一部分地址,然后再加上指令中的形式地址得到有效地址
③变址寻址
在CPU中用一个寄存器来存储一部分地址(这个地址是变动的),然后再加上指令中的形式地址得到有效地址,如遍历数组,数组下标就可以存储在变址中
8.堆栈寻址
将数据以栈的形式存储在内存或寄存器中,进栈出栈都只在栈顶操作
寄存器堆栈称为硬堆栈,主存中划分出来的堆栈称为软堆栈
寻址方式有效地址访存次数隐含寻址程序指定0立即寻址A即是操作数0直接寻址EA=A1一次间接寻址EA=(A)2寄存器寻址EA=Ri0寄存器间接一次寻址EA=(Ri)1相对寻址EA=(PC)+A1基址寻址EA=(BR)+A1变址寻址EA=(IX)+A1
下一篇:计算机组成原理 指令系统(二)