BIOS区如何写入数据?(100分)

  • 主题发起人 主题发起人 呆非4
  • 开始时间 开始时间

呆非4

Unregistered / Unconfirmed
GUEST, unregistred user!
我用TC写了一个DOS程序,往BIOS区的0x0040:00f0处写10个数据。
(此区是保留区。)
开一个MS-DOS窗口,并运行这个程序,
在同一个MS-DOS窗口下再读出此区,则结果是我写入的数据。
如果再另开一个MS-DOS窗口,再读此区数据,则没有我写入的数据。
程序如下:

#include <stdio.h>
#include <conio.h>

void main(void)
{
char *ptr;
int i;
char *pp;

pp=(char *)0x004000f0l;

ptr=pp;
printf("/nBefore:");
for(i=0;i<16;i++) printf("%02X ",*ptr++);

ptr=pp;
for(i=0;i<16;i++)
{
*ptr=i+'0'; ptr++;
}

ptr=pp;
printf("/nAfter:");
for(i=0;i<16;i++) printf("%02X ",*ptr++);
}
 
windows95/98的特性:每一个dos程序都有自己的虚拟空间运行
 
应该用汇编的吧? 以BIOS为关键字搜索一下应该会有所收获。
 
windows NT 下运行的是虚拟机,其实并没有写入地址的 0 段。95/98下不太清楚,
你可以试试,在98中,dos窗口下,把 0 段的地址都写成 0, 看死不死机,就知道
是否管用了。我记得是应该管用的。单纯写入一些地址不一定能真正改变,因为可能
有其他的程序在同时往里写入,把你的东西改了。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
742
import
I
I
回复
0
查看
706
import
I
I
回复
0
查看
856
import
I
后退
顶部