我在理解以下文本时遇到问题,
8088
支持1
Mbyte的外部存储器。从软件的角度来看,该存储空间被组织为存储在地址范围内的连续地址中的单个数据00000
字节FFFFF
。
现在我不明白作者是如何从 1 MB 转换为 FFFFF 的。谁能帮帮我?
谢谢。
我在理解以下文本时遇到问题,
8088
支持1
Mbyte的外部存储器。从软件的角度来看,该存储空间被组织为存储在地址范围内的连续地址中的单个数据00000
字节FFFFF
。
现在我不明白作者是如何从 1 MB 转换为 FFFFF 的。谁能帮帮我?
谢谢。
1 兆字节是2^20
. 这意味着您需要 20 位来表示它。该范围00000-FFFFF
包含所有可能的 20 位值。
在描述8086的页面中有很好的解释(8088 具有相同的指令集架构,但引脚略有不同)。
基本上,段寄存器给出了一个(16 位)基地址乘以 16,然后添加了一个 16 位偏移量。
并且0xfffff
是 2 20 -1,即 1048575
请区分容量和地址。容量计数从 1 开始,但在内存中寻址从 0 开始(地址 0 计入 1)。
一个比喻。如果我们有 10 个容量,并且我们从 0 开始寻址,那么它将是从 0 到 9。
所以寻址的诀窍是 Last Address = Capacity - 1。
对于容量 1MB(十进制),十六进制 = 10.0000h 对于寻址,最后一个地址是 10.0000 - 1 = F FFFF 因此,1MB 容量的寻址是从 0 到 F FFFF。(记住地址0,算1)。