阅读:1045回复:1
请教版主
看到你的回帖后,我写了一个dos下的测试程序。但是,我发现读回的数据总是ff,不知是什么原因。我将我的测试代码贴在后面,请你帮我检查一下其中的问题。如果你能提供一个dos下直接对物理内存操作的程序例子,那就不胜感谢。我所需要直接操作的物理内存地址在A0000~D0000之间。
#include \"conio.h\" #include \"stdio.h\" #include \"stdlib.h\" #include \"dos.h\" #define BUFLEN 4096 #define W_BUFLEN 4096 char chBuf[BUFLEN],chWBuf[W_BUFLEN]; int main() { FILE *fp; unsigned seg, off; unsigned i; fp = fopen(\"ram.txt\",\"w\"); if(!fp){ printf(\"不能打开文件!\"); return -1; } seg = 0xa000; off = 0x0000; for(i=0; i<W_BUFLEN/2; i++) { chWBuf[2*i] = 0x00; chWBuf[2*i+1] = 0x00; } for(i=0; i<W_BUFLEN; i++) { pokeb(seg, off, chWBuf); off++; } off=0; for(i=0; i<BUFLEN; i++) { chBuf = peekb(seg,off); off++; } for(i = 0; i<BUFLEN; i++) { if(i%16 == 0) fprintf(fp, \"\\n%xd\\t\", i); fprintf(fp, \"%x \", chBuf); } fclose(fp); printf(\"Have recorded file!\\n\"); return 0; } [编辑 - 4/23/02 作者: hubert] |
|
沙发#
发布于:2002-04-23 10:45
具体的写法我现在有些记不清了,我记得好像要先定义一个指针,利用了一个宏,公司里有人写过,但现在人不在,等他回来了我问一下.
一定要在纯的dos下调试程序. |
|
|