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不能使用。

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

转载于:https://www.cnblogs.com/Jinux/archive/2012/04/10/2440730.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值