指令寻址
指令寻址
一般取指令后PC自动加一
注意加的是一个指令字长
采用不同寻址方式的目的
- 缩短指令字长
- 扩大寻址空间
- 提高编程灵活性
- 但提高了指令译码的复杂度。
程序控制的实现是靠转移指令实现的
转移类指令实现的跳跃寻址的结果是修改PC值,所以下一条指令仍然是通过PC给出的
使用寄存器寻址可以有效的缩短地址段的位数
- 因为CPU中寄存器的数量不会太多,用很短的编码就可以指定寄存器。
- 立即寻址看似可以缩短地址段位数
- 但是操作数保存在指令中,若地址段位数太小,则操作数表示的范围会很小
可以使用隐地址来简化地址结构
- 隐地址不给出明显的操作数地址,而在指令中隐含操作数的地址,因此可以简化地址结构,如零地址指令
获取操作数最快的寻址方式
- 立即寻址最快 指令直接给出操作数
- 寄存器寻址次之,只需访问一次寄存器
- 直接寻址再次之,访问一次内存
- 寄存器间接寻取操作数的速度接近直接寻址
- 直接寻址最慢,要访问内存两次或以上
进出堆栈对栈顶指针的操作顺序不同
- 进栈先压入数据后修改指针,说明栈指针是指向栈顶的空单元的
- 出栈要先修改指针,然后才能弹出数据
在多道程序设计中,除了基址寻址外
- 各个程序段可能要在内存中浮动,而相对寻址特别有利于程序浮动
转移指令、子程序调用与返回指令用于解决变动程序中指令执行次序的需求
寄存器等硬件中的地址表示都是无符号数