首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

一个很郁闷的有关问题,高手来点一下,送分100.

2012-03-02 
一个很郁闷的问题,高手来点一下,送分100.....在<80x86汇编语言程序设计教程>中,有以下一段话:在80386保护

一个很郁闷的问题,高手来点一下,送分100.....
在<80x86汇编语言程序设计教程>中,有以下一段话:
在80386保护模式下,段界限用20位表示,而且段界限可以是以字节为单位或以4K字节为单位。段属性中有一位对此进行定义,把该位成为粒度位,用符号G标记。G=0表示段界限以字节位位单位,于是20位的界限可表示的范围是1字节至1M字节,增量为1字节;G=1表示段界限以4K字节为单位,于是20位的界限可表示的范围是4K字节至4G字节,增量为4K字节。当段界限以4K字节为单位时,实际的段界限LIMIT可通过下面的公式从20   位段界限Limit计算出来:  
LIMIT=limit*4K+0FFFH=(Limit   SHL   12)+0FFFH

请教高手,为何是 "   limit*4K+0FFFH   "?   而不是直接的limit*4K   ?   后面的
"(Limit   SHL   12)+0FFFH   "又是什么意思   ?
不得其解   .   请指点.

[解决办法]
Limit SHL 12
是左移12位,相当于乘4K。
[解决办法]
Limit SHL 12与limit*4K等价。
》为何是 " limit*4K+0FFFH "? 而不是直接的limit*4K ?
这个问题我也考虑过,个人认为开发者怕用户定义0大小的段,所以默认使用4K,就是表达式中加进去的0FFFH,因此即便定义为0时,也能保证段值是有效的,也可能还有其它原因。
[解决办法]
shl 12可以看作*4K,shl后的立即数可以大于1也是80386以后的改进。
0fffh可以将最小大小的段占用,同意楼上的观点。

热点排行