
在某计算机字长位32位,其存储容量为16MB,若按双字编址,它的寻址范围是?详细过程

2022-05-15 广告
1MB=1024*1024=1048576=0x100000
16MB=16*1048576=16777216=0x1000000
因为计算机以0开始计算地址,因此,16MB的寻址空间:
16*1024*1024-1=0x00000000至0x00FFFFFF
完毕。
这题是按双字编址,重点是 寻址范围 ×(计算机字长 × 双字)= 存储容量 。
存储容量16 M B = 2^4(即16) × 2^20(即M) × 2^3(即Byte)= 2^27 bit
代入题目数据得 X(寻址范围) × 32位(计算机字长) × 2(双字) = 2^27 bit(存储容量)
即 X(寻址范围) × 2^5(32bit的字长)× 2^1(双字)= 2^27 bit(存储容量)
解得 X = 2^21 bit = 2M 为寻址范围
某计算机字长为 32 位,存储器的存储容量为 16MB,
若按双字编址,它的寻址范围是?
--------------------
字长是 32 位,就是说,每次读写,就是 32 位数。
在 intel 的 系列 CPU 中,一贯是把 16 位数,当做一个字。
这是在 8086 时代,就定下来的。
虽然,在 80386 出现之后,字长已经是 32 位或 32 位以上!
但是,依然是以 16 位为一个字。
例如在编程时:DB,就叫做定义“字节”变量,这是 8 位的;
DW,这就叫做定义“字”,这就是 16 位的变量;
DD,这叫做定义“双字”,这就是 32 位的变量。
那么,以 32 位为一个存储单元来编址,这就是“按双字编址”了。
--------------------
因为,一个“双字”是 32 位,即四个字节(Byte)。
所以,16MB 的存储器,也就是:4M双字。
那么,这个存储器的地址范围就是:0 ~ 2^2 × 2^20 - 1。
写成十六进制,就是:00 0000H ~ 3F FFFFH。
--------------------
再说寻址范围。
一般来说,32 位 CPU 的地址线也有 32 条,可以寻址 4G 个存储单元。
那么,CPU 的寻址范围,就是:0000 0000 ~ FFFF FFFFH。
16MB 存储器的寻址范围,肯定就在 CPU 的寻址范围之内!
究竟位于那个角落呢? 不确定!
你要记住这个公式:
● 某存储器的寻址范围 = 起始地址 + 该存储器的地址范围。
起始地址是多少? 题目应该给定。
或者,题目也可以给出存储器的电路图,按图分析起始地址。
但是,这个题目,什么条件也没有给啊!
那就假设一下吧。
如果起始地址是:8800 0000H,
这个存储器的寻址范围就是:8800 0000H ~ 883F FFFFH。
如果起始地址是:FF00 0000H,
这个存储器的寻址范围就是:FF00 0000H ~ FF3F FFFFH。
。。。
这题的出题人,显然是计算机专业的外行!