指令系统1

指令的一般格式

操作码

 长度固定操作码:便于硬件设计,指令译码时间短

 长度变化操作码:采用扩展操作码技术(http://blog.csdn.net/u011240016/article/details/52717315)

地址码

指出指令源操作数地址,结果地址,下一条指令的地址(这里的“地址”可以说内存地址,寄存器地址或者I/O地址)

用一些硬件资源(如PC,ACC)承担指令字中需指明的地址码可在不改变指令字长的前提下扩大指令操作数的直接寻址范围

指令字长

取决于操作码的长度,操作数地址的长度,操作数地址的个数。不同的机器字长也不相同

早期计算机指令字长,机器字长,存储字长都相同,这类机器控制方式简单

现代计算机存储容量增大,处理的数据类型增多,指令字长可变如单字长指令,多字长指令

操作数类型和操作类型

操作数类型

地址:地址也可看作数据,当计算操作数地址时可看作无符号整数

数字:定点数,浮点数,十进制数

字符:ASCII码等

逻辑数据:作逻辑运算

操作类型

数据传送:寄存器与寄存器,寄存器与存储单元,存储单元与存储单元之间的传送

算术逻辑运算:完成算术运算和逻辑运算

移位:分为算术移位,逻辑移位和循环移位。算术移位和逻辑移位可实现*2(左移)或/2(右移)

转移:无条件转移,条件转移,调用与返回(调用:调用具有特定功能的子程序,实现从一个程序转移到另一个程序的操作),

当调用子程序时可将返回地址放入专用寄存器内,子程序的入口地址内,栈内。

陷阱与陷阱指令:机器运行中出现故障,发出陷阱信号,暂停当前程序的执行转入故障处理程序进行相应的故障处理。陷阱指令分为隐指令(指令系统不提供),出现故障时,由CPU自动产生并执行,还有直接提供给用户的使用的陷阱指令,执行系统调用

输入输出:略

其他:等待指令,停机指令,空操作指令,开中断指令,关中断指令,置条件码指令等

寻址方式

确定本条指令数据地址和下一条指令地址的方法,与硬件结构相关,直接影响指令格式和指令功能

指令寻址:顺序寻址(通过程序计数器PC自动加一形成下一条指令的地址),跳跃寻址(通过转移指令实现)

数据寻址

寻址方式+形式地址(A)=有效地址/真实地址(EA

1 立即寻址

形式地址里既是操作数本身,立即寻址特征+立即数

2 直接寻址

形式地址保存操作数的地址,形式地址(A)就是有效地址(EA)直接寻址特征+操作数地址

3 隐含寻址

指令字中不明显给出操作数的地址,操作数的地址隐含在操作码或某个寄存器中,有利于缩短指令字长

4 间接寻址

指出内容为操作数有效地址的存储单元的地址,有效地址是由形式地址间接提供的,分为一次或多次间接寻址,扩大了操作数的寻址范围,方便编制程序,可以很方便的完成调用子程序时子程序的返回。缺点是执行阶段需要多次访存,使指令执行时间延长

5 寄存器寻址

将CPU中的寄存器编号,形式地址的内容即为寄存器的编号,寄存器内保存的既是操作数。执行指令阶段无需访存,但寄存器数量有限。

6 寄存器相对寻址

寄存器中的内容不是操作数而是操作数在内存中的地址

7 基址寻址

设有基址寄存器BR,有效地址EA=形式地址A+基址寄存器BR中的内容,基址寄存器可由系统默认(隐式)或由用户指定(显)。可扩大操作数的寻址范围,在多道程序中极为有用,用户不必考虑自己的程序位于内存的哪一块区域,而是由系统根据内存使用情况赋予基址寄存器内一个初始值。

8 变址寻址

设有变址寄存器BR,有效地址EA=形式地址A+变址寄存器BR中的内容

与基址寻址相比,两者的应用场合不同,基址寻址主要为程序或数据分配存储空间,基址寄存器中的内容由系统设定在程序执行过程中不能改变,形式地址A中的内容可以改变。变址寻址寄存器中的内容由用户设定,程序执行过程中可以改变,形式地址A中的内容无法改变。变址寻址主要用于处理数组问题,比如保持指令“ADD X,D”(X为变址寄存器,D为形式地址)不变,只要改变X中的内容即可将数组中的内容循环相加。

9 相对寻址

EA = (PC)+A

有效地址 = PC中的内容+形式地址

相对寻址常用于转移指令,A也可称为相对位移量

10 堆栈寻址

操作数的地址保存在栈顶SP(stack point)指针变量中。可视为一种隐含寻址,进栈出栈SP都会移动一个存储单元的位置


猜你喜欢

转载自blog.csdn.net/qq_37566910/article/details/79342641