首页
社区
课程
招聘
[旧帖] [求助]比较怀旧的问题:win98下的物理内存访问 0.00雪花
发表于: 2009-6-29 10:19 3008

[旧帖] [求助]比较怀旧的问题:win98下的物理内存访问 0.00雪花

2009-6-29 10:19
3008
在《虚拟设备驱动程序开发起步与进阶》中看到这样一个例子,说是可以访问物理内存.

#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直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这书后面说9x的系统地址空间是不受保护的,那我在98上的实验为什么不成功呢?
2009-6-29 10:57
0
游客
登录 | 注册 方可回帖
返回
//