id="c_n9"width="1920"height="990"style="position: fixed; top: 0px; left: 0px; z-index: -1; opacity: 0.5;">

关于8086下“段”的理解

相关的概念

首先对于8086下ta的地址总线是20bit,而其ta的数据总线是16bit;所以ta每次可以寻址的存储空间是1MB,而因为8086是16bit的,所以只能寻址64kb的空间。所以为了能寻找到1MB的空间,所以这里采用的是通过段来实现,将1MB的空间划分为多个64kb的空间;而低16位是64kb的空间,而高四位可以表示就是段号。

解决方法

因为在8086架构下,只存在16bit的寄存器,所以高4位也同样是通过16bit来存储的,为了实现20bit的地址线,那么就将16bit << 4,然后将这个和16位的偏移量相加,那么就可以得到一个20bit的数据。这就是在8086下解决方法。

物理地址 = 段基址 * 16 + 偏移量 ,而我们规定将段的起始地址设为段基址 * 16,所以那么其起始地址是可以被16整除的;用十六进制表示其实也就是最后一位是0,举个例子:段基址为1000H,所以向左移一位,那么其就是10000H,这个也就是段起始地址。所以总的而言,起始地址的最后一位是0H

posted @ 2022-09-07 21:26  hellozmc  阅读(40)  评论(0编辑  收藏  举报