对于具有32 MB RAM的PC,"最后"字节的8位十六进制数字地址是多少?

Fre*_*ult 0 memory hardware assembly processor memory-address

我正在读一本关于装配的书; Jones和Bartlett出版社80x86大会简介

作者给出了练习但没有答案.显然,在进一步发展之前,我想确保我完全理解章节概念.

donc,

对于具有32 MB RAM的PC,"最后"字节的8位十六进制数字地址是多少?

这是我的解决方案:

1)转换为32 MBytes = 268435456位

2)I减去8位以删除最后一个字节268435448

3)转换为十六进制FFFFFF8

所以我得到了FFFFFF8

这看起来不错吗?

Gen*_*ene 5

不需要.对于装配编程,能够在头脑中进行简单的2次幂计算是非常有帮助的.1K是2 ^ 10.所以1M是2 ^ 20.所以32M是2 ^ 25(因为2 ^ 5 = 32).所以最后一个字节的地址是2 ^ 25-1(因为第一个字节是0).这是全部为1的25位(因为2 ^ n-1总是n 1).在十六进制中,这是六个F(每F 4位)加上一个额外的1,因此前置零以获得8个十六进制数字,你有01FFFFFF.