如何用C语言 读取内存中的数据 要不要将实模式改为保护模式,实怎么改的呢,希望高手指点

来源:百度知道 编辑:UC知道 时间:2024/06/09 10:06:45
这是我写的读取地址F000:7820处的内容,但是,跟在dos下,用debug看到的结果实不一样的? 请问问题出在哪里?
#include <stdio.h>
#include <stdlib.h>
main()
{
int i;
unsigned char far*p=(unsigned char far*)0x0007910;
for(i=1;i<=256;i++)
{
printf(" %02x",*p);
p++;
}

getch();
}
是如何在保护模式和实模式之间切换的呢,有没有较为详细的说明啊? 有源码的话,可以给一个吗??

你的程序和Debug中相同的地址实际上是被映射到不同的物理地址空间的,当然你看到的内容不一样了。

Windows是不会让你的程序进入实模式的。

如果你实在感兴趣,这里有让CPU切换模式的代码http://jc.finaleden.com/A/2001-12-10/7366.html,不过它只是表示了CPU进行模式切换的方法,不能在Windows环境之下使用的。

如果对Windows结构感兴趣的话,你需要看更多的Windows系统结构的资料了,关于驱动程序的发展,可以参考:http://funnypig.bokee.com/3235076.html

高手 ,能认识你吗,很想跟你学学C语言