-
-
[旧帖]
[求助]比较怀旧的问题:win98下的物理内存访问
0.00雪花
-
发表于:
2009-6-29 10:19
3008
-
[旧帖] [求助]比较怀旧的问题:win98下的物理内存访问
0.00雪花
在《虚拟设备驱动程序开发起步与进阶》中看到这样一个例子,说是可以访问物理内存.
#include <stdio.h>
#include <wtypes.h>
DWORDLONG gdtr,savegdt;
WORD descriptor[4]={0xFFFF,0x0F00,0xF200,0x0040};
int result[10];
int main(int argc, char* argv[])
{
int i;
_asm
{
push ebp
sgdt gdtr;
mov ebp,dword ptr[gdtr+2]
add ebp,58h
lea edi,savegdt
mov esi,ebp
movsd
movsd
mov edi,ebp
lea esi,descriptor
movsd
movsd
push es
mov ax,005Bh
mov es,ax
lea edi,result
mov eax,1
mov ebx,1
}
_asm
{
mov cx,10
a1: mov es:[eax],eax
add eax,4
loop a1
}
_asm
{
mov cx,10
a2: mov eax,es:[ebx]
mov [edi],eax
add ebx,4
add edi,4
loop a2
}
_asm
{
pop es
pop ebp
}
printf("result=");
for(i=0;i<10;i++)
printf("%d , ",result[i]);
return 0;
}
但是我在98下试了不行,在movsd 时出错,我也奇怪按说保护模式下肯定访问不了[gdtr]所在的段啊,为啥这书能写出这个例子呢???
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课