数据,通用寄存器,段寄存器

本文详细解析了8086处理器如何通过段地址和偏移地址合成20位物理地址的方法,介绍了其内存寻址的工作原理,并解释了为何采用这种方式。
我们经常会有拿一个地址找房间的经验吧,比如说302,那么,我们知道这房间在三楼,是从东边算过来的第二间,
这个地址其实就是两个地址组成 :3楼,2号房。
注意到没,每个地址是一位数,但是通过大家熟知的规律合成了一个三位数的地址。
把这个例子带到这个问题中,你可以这样理解,段地址相当于楼层地址,偏移地址相当于房间号,最后合成的就是物理地址。
8086的地址线20根,数据线16根,
物理地址的位数取决于8086地址线的数量,
16位的数据线决定了8086的寄存器只能有16位,这样一来不管是段寄存器还是通用寄存器都是16位的。
所以,段地址和偏移量也都是16位了。
当要合成20位的物理地址时,先把段地址左移4位(就是*16的原因),变成20位的,

然后再加16位的偏移地址,得到最后的20位物理地址。

比如一个地址是00100H(一个16位表示4个2进制位,5个就是20位)

再说下,一个16进制左移1位就是2进制左移4位(代数自己试)

你可以表示成(用16位表示),0010:0000(0010*16+0000=00100)

 0000:0100(0000*16+0100=00100),结果是不唯一 



物理地址就是数据在内存中实际存放的位置.因为8086或8088有20条地址线,寻址能力有2的20次方,1MBit.

而8086或8088内部寄存器是是16位的,无法用一个位完全表示出来.

所以采用段首地址+偏移量两个寄存器来表示的方式,俗称PC或CS:IP来表示一个实际的物理地址,这就是所谓的虚拟地址.

例如段首地址为0000H,而偏移量的范围就在0000H-FFFFH之间,

就表示00000H-0FFFFH的实际内存单元.就是说一个段的大小在64Kb.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值