- [younggay] 看来博主显存那块没弄清楚啊。 显存中偶数地址存放的是要显示的字符的ascii,而奇数地址存放的是颜 08/18 08:33
- [iamqwy] 网友fishboy的一番话很有道理: 首先,段空间最大为64K应该很明确了,是因为对段空间数据进行 08/01 23:55
- [tomato] 正确。 08/01 22:34
- [iamqwy] 对,我想了一晚,是这样的 我是这样理解的:两个相邻段地址相差1H,那么物理地址应该差10H(换成1 08/01 10:41
- [游客] 在8086体系下,段最小为16字节。这个在后面第五章的实践中会更好的体会的。 08/01 08:45
[ 游客 发表于 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个字节。
所以,本人认为,段最大空间和最小空间的设计是相辅相成的,这跟计算机寻址方式的设计也有很大的关联。在这里就不再去推测编译器设计者当初的理念了。
不知道楼主对我的分析是不是满意。