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不能使用。
总是感觉表达不太好,可能还不太了解吧
转载于:https://www.cnblogs.com/Jinux/archive/2012/04/10/2440730.html