寻址方式

操作数类型数据存放

存放方式

数据存放

三个字长:

机器字长:CPU一次能处理的二进制数据的位数。

指令字长:一个指令中包含二进制代码的位数。

存储字长:一个存储单元存储二进制代码的长度。

注:这些长度都是字节的整数倍

一般等于内部寄存器的位数。

单字长指令:指令长度=机器字长

半字长指令、双字长指令

通常一次并行取出一个存储字,按字节寻址时,通过移位截取存储字中的一个字节。

存放方式

一:

二:

三:折衷???????

寻址方式

寻找指令或操作数的有效方式

确定本条指令操作数地址

下一条欲执行指令指令地址

寻址方式:

  1. 指令寻址
  2. 数据寻址

指令寻址

始终由程序计数器PC给出

顺序寻址

(PC)+1->PC

永远都是+1?不一定,假设内存单元按照字节(8Bit)进行编址单位,如果指令是32位(4个字节)的,这时候就不是+1了,是+4。64位就+8

跳跃寻址

由转移指令指出

例如:

数据寻址

确定本条指令的数据地址,

如何在指令当中表示一个操作数的地址

**形式地址 **指令字中的地址

**有效地址 **操作数的真实地址

约定 指令字长 = 存储字长 = 机器字长

隐含寻址

不明显地给出操作数的地址,而是在指令中隐含着操作数的地址

优点:有利于缩短指令字长。

缺点:需增加存储操作数或隐含地址的硬件

了解即可

立即寻址

指令特征#

直接寻址

间接寻址

寄存器寻址

寄存器间接寻址

image-20200817170153143

小节回顾

偏移寻址

基址寻址

将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(BR)+A

面向操作系统

隐式的(专门就有的寄存器)

有利于多道程序设计

image-20200819164309665

编制浮动程序。

变址寻址

有效地址EA等于指令字中的形式地址A与编址寄存器IX的内容相加之和,即EA=(IX)+A,其中IX为变址寄存器(专用),也可用通用寄存器做编址寄存器。

所有过程和基址寻址差不多。

但是是面向用户的

适合编写循环程序

基址寻址+变址寻址

相对寻址

把程序计数器PC的内容就加上指令格式中的形式地址A而形成操作数有效地之,即EA=(PC)+A,其中A是相对于当前指令地址的位移量,可正可负,补码表示。

相对寻址举例:

堆栈寻址(不是很重要)

两个操作数都可以隐含起来

操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址。

CISC和RISC

CISC: Complex Instruction Set Computer

一条指令完成一个复杂的基本功能

代表:x86架构,主要用于笔记本、台式机

RISC: Reduced Instruction Set Computer

精简指令集

一条指令完成一个基本“动作”;多条指令组合完成一个复杂的基本功能。

代表:ARM架构,主要用于手机、平板等。

例如单词输出

小结

原文地址:https://www.cnblogs.com/jev-0987/p/13561183.html