hubert
驱动牛犊
驱动牛犊
  • 注册日期2002-03-30
  • 最后登录2004-03-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1045回复:1

请教版主

楼主#
更多 发布于:2002-04-23 09:58
看到你的回帖后,我写了一个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]
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-23 10:45
具体的写法我现在有些记不清了,我记得好像要先定义一个指针,利用了一个宏,公司里有人写过,但现在人不在,等他回来了我问一下.
一定要在纯的dos下调试程序.
兄弟们,给点分吧
游客

返回顶部