关于微机原理的20位偏移地址计算

微机原理中计算20位偏移地址为16位段地址左移4位再加上16位偏移地址得20位物理地址.为什么不加上4位偏移量就得到20位偏移地址了?如果加上16位偏移地址,很可能在高位... 微机原理中计算20位偏移地址为16位段地址左移4位再加上16位偏移地址得20位物理地址.为什么不加上4位偏移量就得到20位偏移地址了?如果加上16位偏移地址,很可能在高位进位造成不同的段地址和不同的偏移地址算得同样的物理地址,这样不是出错了吗? 展开
 我来答
百度网友079c8dd
2010-01-30 · TA获得超过117个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:0
展开全部
首先,没有你说的4位偏移地址的说法,具体来说是因为在8086中,寄存器都是16位,这样你就只能访问16位地址的空间,不过8086还有段寄存器,就是CS,DS等,他们也是16位,也许你会说,16位加16位岂不是可以访问32位的4G地址吗?不过很可惜,之前的内存都没有这么大,所以当时只用了1M。所以在计算方法上,用两个16位的寄存器来访问20位的地址,就采用了段地址+偏移地址的作法,即:段地址*16+偏移地址,这样,你就可以使用一个固定的段地址,随意的访问64K的段地址空间的所有存储空间了。
其实,Intel为了之后的芯片向上兼容,还在使用段地址加偏移地址的做法,即使现在其他寄存器是32位或是64位了,段寄存器依然是16位,只不过现在不是*16了,而把他作为段描述符,其实也是用来描述一个段地址空间,只是这个段地址空间可能就不止64K了,32位机上就是4G了。这个就扯远了。呵呵。
利穗科技
2025-10-22 广告
利穗科技(苏州)有限公司于2009年在苏州生物纳米园成立,为国家高新技术企业。目前,利穗拥有45000平米的生产基地及3500平米的应用开发实验中心,员工人数超过450人。利穗是生物制药行业下游纯化设备制造商和工程解决方案提供商,服务超过1... 点击进入详情页
本回答由利穗科技提供
锚击
2010-01-29 · 超过14用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:55.3万
展开全部
段地址乘以16,相当于左移4位,这样就有20位,加上4位偏移量就是实际地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2010-01-29 · TA获得超过4309个赞
知道大有可为答主
回答量:2496
采纳率:44%
帮助的人:1631万
展开全部
左移4位移位操作相当于做了乘法,得到的是20位的值;如果直接加上4位偏移量虽然是得到20位的值,但是高位至少有三个值是零,并不能扩展到有效地20位;
加上16位偏移地址,是有可能在高位进位造成不同的段地址和不同的偏移地址算得同样的物理地址,也可以说,不同的逻辑地址可以对应同一个物理地址,并不出错。原因是由于微机的寻址方式决定的。这部分不容易理解,不过你可以自己写几个小汇编程序,debug进去,用R命令、D名观察一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式