汇编语言 段地址 偏移地址 是20位的 段地址 是16位的偏移地址为什么还是16位?既然段地址*16+偏移地址=物理地址

1个回答

  • 我们经常会有拿一个地址找房间的经验吧,比如说302,那么,我们知道这房间在三楼,是从东边算过来的第二间,这个地址其实就是两个地址组成 :3楼,2号房,注意到没,每个地址是一位数,但是通过大家熟知的规律合成了一个三位数的地址.

    把这个例子带到这个问题中,你可以这样理解,段地址相当于楼层地址,偏移地址相当于房间号,最后合成的就是物理地址.

    8086的地址线20根,数据线16根,物理地址的位数取决于8086地址线的数量,16位的数据线决定了8086的寄存器只能有16位,这样一来不管是段寄存器还是通用寄存器都是16位的,所以,段地址和偏移量也都是16位了.当要合成20位的物理地址时,先把段地址左移4位(就是*16的原因),变成20位的,然后再加16位的偏移地址,得到最后的20位物理地址.