关于段地址为甚么要乘以16这个问题

1.首先我们知道我们的段地址是16位寄存器存放的但是cpu比如8086他有20根地址线,所以我们需要完整的寻址能力,一开始我也不太理解。

2.好那么首先我们可以知道的是16位寄存器最大的寻址能力是65535 + 1也就是一次可以读取出这么多数据,但是让我们回到上面的那个问题为什么要乘以16,我们首先用65536x16我们可以算出一个数为什么不是65535呢因为0-65535它是包含0的也就是65536

关于段地址为甚么要乘以16这个问题_第1张图片

这就是我们所算出的数据,现在我们把它转换成16进制

关于段地址为甚么要乘以16这个问题_第2张图片

就得到了以下结果至于为什么不是1048576呢因为要包含0

3.我们这样一算呢就是非常合理有5个16进制位就是20根地址线合理吧

关于段地址为甚么要乘以16这个问题_第3张图片

4.那么我们来解决一下为什么我们的物理地址它的公式是段地址*16+偏移地址呢

首先呢我们知道1个16进制位最多表示0000也就是16那么一个是16我们有5个

那就是16的5次方16^5就是上面的数字那么也就是FFFFF这么多但是16位寄存器只能取到FFFF这么多那么既然最多只能存储FFFF那么多出来的一个F呢就需要用到偏移地址了,因为的话如果从

家                        商店                        学校

0m                        1000m                   1800m

而有一张纸条最大只能存储三位数字,就像FFFF最多只能存储16^4一样

那么1800是四位数字,多出来的就是相当于我们的偏移地址

所以我们可以用100*10这个就相当于基础地址了这个基础地址因为基础地址已经超出最大的纸条的存储范围了所以我们就没办法把这个存放在纸条里面但是离学校还有800m我们就需要加上800就相当于偏移地址那么最终我们呢会得到物理地址也就是1800m

你可能感兴趣的:(汇编)