汇编网首页登录博客注册
iamqwy的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
友情链接

[2009-08-01 03:02] 一个段到底最小是多少呢?

看完了论坛第二章的讨论,众说纷纭啊,头都晕了
评论次数(3)  |  浏览次数(654)  |  类型(默认类型) |  收藏此文  | 

[  游客   发表于  2009-08-01 08:45  ]

在8086体系下,段最小为16字节。这个在后面第五章的实践中会更好的体会的。

[  iamqwy   发表于  2009-08-01 10:41  ]

对,我想了一晚,是这样的
我是这样理解的:两个相邻段地址相差1H,那么物理地址应该差10H(换成10进制就是16,16个地址,寻址能力为16byte),那么段的最小就是16byte了!

[  iamqwy   发表于  2009-08-01 23:55  ]

网友fishboy的一番话很有道理:
首先,段空间最大为64K应该很明确了,是因为对段空间数据进行操作的是偏移地址,而偏移地址是0000H-ffffH这么大(64K)的一个空间。要达到这个最大的段空间,偏移地址必须是从0H开始的,这就是问题的根源了。每定义一个段,编译器就会把这个段的偏移地址设置成0H,这样做的目的也是为了获得数据存储操作的最大空间。在声明一个新段的时候,对物理地址的操作有两种,一是改变偏移地址,二是改变段地址。从上面的分析来看,程序为了获得最大的数据操作空间,已经将每个段的偏移地址默认都设置成0H,那么,对物理地址进行的更改只能发生在段地址上了。段地址的最小改变单位为1,但是由于 物理地址 =  段地址 X 10H + 偏移地址 ,所以,段地址的一个最小改变单位1所造成的物理地址改变量是 1 X 10H = 10H = 16 。又因为一个内存空间最小单位是字节,所以段地址的每次声明改变的物理内存空间最小是16字节,也就是段的最小改变量就是16个字节。
所以,本人认为,段最大空间和最小空间的设计是相辅相成的,这跟计算机寻址方式的设计也有很大的关联。在这里就不再去推测编译器设计者当初的理念了。
不知道楼主对我的分析是不是满意。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码