指令格式
按照地址码个数分类
零地址指令
· 标记:补充知识点的题
一地址指令
二、三地址指令
四地址指令
思考:地址码的位数有何影响?
按指令长度分类
按操作码长度是否可变分类
按操作类型
· 标记:做错的题
扩展操作码
· 标记:不是很熟练的题
· 标记:做错的题
指令寻址
引入
· 下一条指令的存放地址 - - - - 始终由PC给出
· 指令的长度是可变化的
· 不同长度的指令间如何通过PC指明下一条指令的地址?
顺序寻址
定长指令、按字编址
定长指令、按直接编址
变长指令、按直接编址
跳跃寻址
数据寻址
引入
· 有很多种不同的数据寻址方式,如何确定本条指令采用的是哪种数据寻址方式?- - -寻址方式位(寻址特征位)
· 如果本条指令是多地址指令,则指令中的每个地址前都要标明自己的寻址方式
直接寻址
· EA=A
·取指令+执行指令----- 访存次数:2次
间接寻址
· EA=(A)
· 取指令+执行指令------访存次数:3次
寄存器寻址
· EA = Ri
· 取指令+执行指令----访存次数:1次
寄存器间接寻址
· EA=(Ri)
· 取指令+执行指令----访存次数:2次
隐含寻址
立即寻址
· 取指令+执行指令–访存次数:1次
偏移寻址
基址寻址
硬件实现原理
· 专用的基址寄存器,(ER)+A=EA
· 指定某个通用寄存器做为基址寄存器的代替,将通用寄存器的内容与A在ACC中相加即可得到EA
· 考点:根据通用寄存器的总个数确定指明寄存器的二进制位数
作用
· 多道程序并发运行,每一段程序在内存中的起始地址都是不同的,当这段程序在内存中的起始地址发生变化时,操作系统只需要修改基址寄存器BR里的内容就能保证这个程序里的所有指令的操作数地址都是有效的
· 标记:不会的题
变址寻址
硬件实现原理
· 专用的变址寄存器
· 指定某个通用寄存器作为变址寄存器
· 与基址寄存器的区别:(IX)作为偏移量
作用
· 想要遍历数组中的元素时,采用直接寻址,所产生的指令数量随之数组规模的增大无限增大,访存次数也越来越多
·标记:不会的题
基址寻址 + 变址寻址
相对寻址
作用
· 标记:不会的题
堆栈寻址
· SP这个寄存器指向栈顶元素
硬堆栈
· 专门用几个寄存器实现
软堆栈
· 用主存的某个区域实现
寻址方式总结
· 标记:存在疑问的题目