厚重的心 发表于 2014-8-15 10:04:55

关于8086的寻址

看小甲鱼的汇编视频的时候不明白这里,为什么说8086是16位的结构呢?

haiouda 发表于 2014-8-15 10:10:07

8086外部地址是,20位,而内部是16位(总线);
16位的要与外部20位的对应上,就要增加4位(即把16位的内部地址变成20位的,才能寻找外部地址)

8086用,段地址+偏移地址来寻找

厚重的心 发表于 2014-8-15 10:30:47

haiouda 发表于 2014-8-15 10:10
8086外部地址是,20位,而内部是16位(总线);
16位的要与外部20位的对应上,就要增加4位(即把16位的内 ...

嗯,谢谢,那什么是外部地址,什么是内部地址呢?

一个人在战斗 发表于 2014-8-15 10:40:44

厚重的心 发表于 2014-8-15 10:30
嗯,谢谢,那什么是外部地址,什么是内部地址呢?

其实说白了就是地址线的个数,8086CPU内部地址线有16根,外部连接其他的硬件的地址线个数是20根,所以,内部的寻址范围是2^16Byte,外部的寻址范围是2^20Byte,为了使内部与外部一致,8086CPU使用(段地址*16 +偏移地址)的方法进行寻址

厚重的心 发表于 2014-8-15 10:55:24

一个人在战斗 发表于 2014-8-15 10:40
其实说白了就是地址线的个数,8086CPU内部地址线有16根,外部连接其他的硬件的地址线个数是20根,所以, ...

嗯,明白了,谢谢啦:handshake

一个人在战斗 发表于 2014-8-15 10:58:34

厚重的心 发表于 2014-8-15 10:55
嗯,明白了,谢谢啦

小事:handshake

小靚同学Leon 发表于 2014-8-15 13:03:54

楼上说的都很详细。
但是
0.这里内部地址指的是CPU内,外部地址指的是内存地址(不是外部存储器)。
1.8086的cpu设计的是16位结构,可以访问的地址范围是64K。
2.内存地址总线是20位,说明可以访问的地址是1M。
3.那么就产生一个问题,CPU寻址范围达不到内存。当然聪明的设计者就想到一个办法,CPU想访问内存地址时,首先在CPU内部形成两个16位地址,一个叫段地址,一个叫偏移地址,通过内部的地址加法器,将段地址*16+偏移地址,刚好形成一个20位的地址。将原本64K的空间扩展到1M。

厚重的心 发表于 2014-8-15 15:08:41

小靚同学Leon 发表于 2014-8-15 13:03
楼上说的都很详细。
但是
0.这里内部地址指的是CPU内,外部地址指的是内存地址(不是外部存储器)。


多谢多谢:handshake

ZX-走样 发表于 2014-8-15 16:16:40

前来观看。。。。。。。。。
页: [1]
查看完整版本: 关于8086的寻址