最近在学8086! 提问“8086 CPU可提供20位地址信息,可直接访问1M个存储单元,但CPU内部可用于提供地址信息的寄存器均为16位。 如何用16位寄存器实现20位寻址”,这一点我很清楚。
逻辑地址是指允许在程序内组织的地址,8086的逻辑地址分为段值和段内偏移两部分,表示为“薄蜗牛:段内偏移地址”。
以前,20位的地址信息可以访问1M个存储单元,是地址00000H~FFFFFH,但段发射机CS、DS、SS、ES中存储着这些地址的前4位。 12345H时,某段寄存器保存1234H的高位4位信息。 这就是轻薄的蜗牛。
然后,段内偏移地址是移动后相对于薄蜗牛的偏移量。
物理地址是指通过地址总线提供的20位地址信息。 物理地址=薄蜗牛*10H段内偏移地址。 将10H挂在薄蜗牛上是因为薄蜗牛是在当时取第4位的高度得到的,还原后,将薄蜗牛向左取第4位(10H=10000B ),例如(cs )=20A8H,)=2008H
我的认识:
8086CPU的内存空间为1MB,而8086CPU的地址总线只有16位。 2的16次方=65536 (0到65535 )是十六进制的FFFF,65536B/1024=64kb,即1段的长度。 最后引入了轻薄蜗牛* 16 (十进制)偏移地址=物理地址。 物理地址的表示方法是16进制*16,因此将16进制前进了1位。 四个二进制文件为十六进制,fffff(10485575 )/1024=1023kb ) 0到0~1023kb )。 【2的20次方为10485575/1024=1024KB】1024kb为1MB,所以轻薄蜗牛只需错开1个数量级进行偏移寻址,采用【轻薄蜗牛:偏移地址】的方法接入8086CPU1MB
斜体是参照