关于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。