机器指令决定了计算机的功能,指令一般格式如下所示
指令寻址指确定本条指令的数据地址以及下一条将要执行的指令地址的方法
寻址主要包括指令寻址和数据寻址
指令寻址
指令寻址包括顺序寻址和跳跃寻址
顺序寻址通过程序计数器PC加一,自动形成下一条指令地址
跳跃寻址通过转移类指令来实现
数据寻址
指令字中设一字段来指明寻址方式
指令地址一般是形式地址A
操作数的真实地址为有效地址EA
可以由寻址特征和形式地址A来计算得出有效地址EA
1.立即寻址
形式地址A即为操作数本身
指令执行阶段不访存
A位数决定了立即数的范围
2.直接寻址
指令字中形式地址A就是操作数真实地址EA EA=A
指令执行阶段访存一次
A位数限制了操作数寻址范围,不易修改操作数的值
3.隐含寻址
操作数地址隐含在操作码或者寄存器中
例如ADD指令 一个操作数地址由A给出,另一个操作数在ACC中
4.间接寻址
有效地址由形式地址间接提供 EA=(A)
一次间址,形式地址给出有效地址的地址
多次间址,需要多次间址才能找到有效地址EA 用存储字首位来表明某个地址是否为EA
扩大了操作数的寻址范围
便于编制程序,例如可以方便完成子程序返回
当主程序执行到80时,调用子程序,此时只需要将返回地址81存入到子程序最末条指令形式地址A中
当子程序执行完毕,最后执行JMP @A,则可以实现跳转到81继续执行主程序
指令执行阶段需要多次访存
5.寄存器寻址
形式地址A给出寄存器编号Ri,Ri中存放操作数 EA=Ri
指令执行阶段不访存,只访问寄存器,执行速度快
地址阶段只指明寄存器编号,指令字较短,节省存储空间
6.寄存器间接寻址
形式地址A给出寄存器编号Ri,Ri中存放操作数地址,即EA=(Ri)
7.基址寻址
操作数地址由指令字中形式地址A和基址寄存器BR中内容相加给出 EA=A+(BR)
基址寄存器BR可以由专用寄存器或者通用寄存器来实现
基址寄存器由专用寄存器BR来实现
可扩大寻址范围
有利于多道程序
BR内容由操作系统或者管理程序确定
在程序执行过程中BR内容不变,形式地址A可变
基址寄存器由通用寄存器来实现
由用户指定通用寄存器
基址寄存器内容由操作系统确定
程序执行过程中,R0不变,A可变
8.变址寻址
有效地址EA由形式地址A和变址寄存器IX内容相加给出 EA=A+(IX)
变址寄存器可以由专用寄存器或者通用寄存器来实现
可以扩大寻址范围
IX内容由用户给出
程序执行过程中,IX可变,形式地址A不可变
便于处理数组问题
基址寻址主要用于为程序或者数据分配存储空间,BR由操作系统确定,内容不可变,形式地址A可变
变址寻址主要处理数组问题,A为数组首地址不可变,IX不断自增来遍历访问数组
利用直接寻址和变址寻址来求解数组平均值问题及其比较
9.相对寻址
有效地址EA 由程序计数器PC内容和指令字中形式地址A相加而成 EA=(PC)+A
A给出操作数距离当前指令的位移量
A的位数给出操作数的寻址范围
用于转移类指令
转移地址不固定,随PC值变化而变
10.堆栈寻址
堆栈可用寄存器组或者主存空间来实现
堆栈指针SP指出栈顶地址,操作数从SP存取,操作数地址隐含在SP中,SP可以由寄存器来存放,因此可视为寄存器间接寻址。
设计指令格式应考虑的因素
RISC技术
RISC精简指令系统计算机 CISC复杂指令系统计算机
最初,为了便于编译高级语言,尽量将每一条高级语言直接与机器指令相对应,因此增加机器指令复杂性;
研究发现,典型程序80%语句仅仅使用20%机器指令,这些指令都是简单指令
因此主要设计简单指令,由简单指令来组合实现其他复杂指令
RISC主要特征
CISC主要特征
RISC和CISC比较