int 15h

int 15h
ax=0e820h 用来获取内存信息
ebx=0 int 15h每次会設它的值,来继续找下一个ARDS,我们要在首次调用是置0,以后注意不要对它操作。
es:di int 15h会返回ARDS到es:di,所以我们要每次设定好,以使ARDS保存在我们想要保存的地方
ecx=20  有些bios会根据ecx的值来填充es:di,有些则默认填充20,所以统一起见ecx=20
edx=0534d4150h bios会使用此值来对信息校验
设定好上述值然后调用中断就可以了
如果我们想读出所有的内存信息只要通过循环每次di+20就可以,为了判断信息结束,要判断cf是否为1并且ebx=0.

ARDS是一个数据结构,存储着一块地址的信息。
它的结构如下
偏移        意义
0        基地址低32位
4        基地址高32位
8        长度低32位
12        长度低32位
16        类型                类型取值1表示可用ram    2表示正被使用或被保留,os不能使用。

总是感觉表达不太好,可能还不太了解吧

posted @ 2012-04-10 16:04  金国梁  阅读(1175)  评论(0编辑  收藏  举报