鱼C论坛

 找回密码
 立即注册
查看: 1941|回复: 8

[已解决]求问关于段地址和偏移地址的问题!

[复制链接]
发表于 2017-4-26 17:52:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
经过一下午查论坛以及查其他网站的资料,我了解了由于当时总线是20位,但是段地址和偏移地址都是16位是因为受到了当时寄存器大小只有16位的限制。

但是有些地方一直都无法理解:

1.
偏移量是16位,那表示的范围从0000h~ffffh;段地址是16位,那表示的范围也是0000h~ffffh。
如果一个段地址是0000h,偏移地址是0010h,那么根据段地址*16+偏移地址,得到物理地址是0000h+0010h=0010h;
如果另一个段地址是0001h,偏移地址是0000h,那么得到的物理地址是0010h+0000h=0010h。
那这两个值的是同一个寄存器吗?

2.
段地址是怎么决定的?偏移量默认都是0000h~ffffh这个范围吗?

3.
我理解了段地址*16相当于二进制的左移4位,但是为什么要这样做?物理地址=段地址*16+偏移地址这个公式是如何得来的?

希望朋友们说说自己的看法,拯救一下陷入苦思冥想的小白同学 T T
最佳答案
2017-4-26 18:37:10
1.
偏移量是16位,那表示的范围从0000h~ffffh;段地址是16位,那表示的范围也是0000h~ffffh。
如果一个段地址是0000h,偏移地址是0010h,那么根据段地址*16+偏移地址,得到物理地址是0000h+0010h=0010h;
如果另一个段地址是0001h,偏移地址是0000h,那么得到的物理地址是0010h+0000h=0010h。
那这两个值的是同一个寄存器吗?



应该说  得到的是同一个物理地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-26 18:37:10 | 显示全部楼层    本楼为最佳答案   
1.
偏移量是16位,那表示的范围从0000h~ffffh;段地址是16位,那表示的范围也是0000h~ffffh。
如果一个段地址是0000h,偏移地址是0010h,那么根据段地址*16+偏移地址,得到物理地址是0000h+0010h=0010h;
如果另一个段地址是0001h,偏移地址是0000h,那么得到的物理地址是0010h+0000h=0010h。
那这两个值的是同一个寄存器吗?



应该说  得到的是同一个物理地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-26 18:38:27 | 显示全部楼层
2.
段地址是怎么决定的?偏移量默认都是0000h~ffffh这个范围吗?


段地址 你可以随意
偏移地址范围 是0000h~ffffh范围
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-26 18:45:55 | 显示全部楼层
物理地址=段地址*16+偏移地址

十进制 16 等于 十六进制 10h

物理地址=段地址*10h+偏移地址

10h 等于 二进制 10000

也就是 段地址左移4位 + 偏移地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-29 20:15:34 | 显示全部楼层
人造人 发表于 2017-4-26 18:37
1.
偏移量是16位,那表示的范围从0000h~ffffh;段地址是16位,那表示的范围也是0000h~ffffh。
如果一个段 ...

谢谢回答!
请问同一个不同的段地址+偏移地址能够表示同一个物理地址的话,那在实际用到的时候不会出错吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-29 20:15:43 | 显示全部楼层
人造人 发表于 2017-4-26 18:38
2.
段地址是怎么决定的?偏移量默认都是0000h~ffffh这个范围吗?

谢谢回答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-29 20:17:02 | 显示全部楼层
人造人 发表于 2017-4-26 18:45
物理地址=段地址*16+偏移地址

十进制 16 等于 十六进制 10h

谢谢回答!

我能理解16进制和10进制相互转换后,段地址*10h=段地址左移4位。
但是为什么要进行这一步操作再加上偏移地址呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-29 20:48:33 | 显示全部楼层
yvc220 发表于 2017-4-29 20:17
谢谢回答!

我能理解16进制和10进制相互转换后,段地址*10h=段地址左移4位。

为了生成20位的物理地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-29 20:49:18 | 显示全部楼层
yvc220 发表于 2017-4-29 20:15
谢谢回答!
请问同一个不同的段地址+偏移地址能够表示同一个物理地址的话,那在实际用到的时候不会出错 ...

一般不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 01:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表