指令系统中的寻址范围总结
1.首先区分寻址范围与寻址空间
寻址范围:是一个数字范围,无单位;
寻址空间:能够寻址的最大容量;
例题:
设有一个1MB容量的存储器,字长32位,问:按字节编址,字编址的寻址范围以及各自的寻址范围大小?
如果按字节编址,则
1MB = 2^20B 2^20B/1B = 2^20
地址范围为0~(2^20)-1,也就是说需要二十根地址线才能完成对1MB空间的编码,所以地址寄存器为20位,寻址范围大小为2^20=1M
如果按字编址,则
1MB=2^20B 1字=32bit=4B
(注意:字长是32位,就是指1字=32bit,该信息只有在按字编址时才有用。这里的字长说的是存储字长)
2^20B/4B = 2^18
地址范围为0~2^18-1,也就是说我们至少要用18根地址线才能完成对1MB空间的编码。因此按字编址的寻址范围是2^18
寻址方法:
寻址范围:
立即寻址:直接放一个数
直接寻址:A的字长
间接寻址:存储字长=?(机器字长)
相对寻址:(PC附近)A的字长
基址寻址:
变址寻址:机器字长=存储字长
注意:
机器字长:CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。
存储字长:存储器中一个存储单元(存储地址)所存储的二进制代码的位数,即存储器中的MDR的位数。
指令字长:计算机指令字的位数。
数据字长:计算机数据存储所占用的位数。
通常早期计算机:存储字长 = 指令字长 = 数据字长。所以访问一次可取一条指令或一个数据。