教材里采用了三种方式获取内存的参数,这里我只用了一种方法,那就是int 0x15中断的0xe820方式。
内存读取程序:
xor ebx,ebx
mov edx,0x534d4150
mov di,ards_buf ;ards_buf 返回结构的存储地址
e820_mem_get_loop:
mov eax,0x0000e820 ;因为每次返回值会覆盖eax,所以需要重新赋值
mov ecx,20
int 0x15
add di,cx ;内存增加,为下一次保存留出空间,防止覆盖上一次的保存值
inc word [ards_nr] ;读取的次数,保存在ards_nr地址处
cmp ebx,0