阅读:928回复:0
感谢arthurtu,在运行此VxD之前,先运行DOS下的程序才行,为何?
感谢arthurtu,由于我将不重要的部分删了,因此造成变量没有初始化,其实语句:
pi=(WORD *)(0x400+i); 可看成: pi=(WORD *)0x400; 主要是从物理地址0x400处取出串口的地址 现在的问题是,只要我先运行DOS下的程序: /* -------------------------- 仅运行,直到按Esc键 -------------------------- */ #include \"stdio.h\" #include \"stdlib.h\" #include \"conio.h\" #include \"dos.h\" #include \"io.h\" #include \"string.h\" /*===============================================*/ int i,j,k,m,n; main() { i=0x2f8; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; i=0x3f8; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; i=0x2f8; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; i=0x3f8; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; outportb(i,0); i++; k=0; while(k!=0x1b) k=bioskey(0)&0xff; exit(0); } 而且不能退出,再调用VxD,运行就一切正常,一旦退出DOS程序,VxD就不工作了,为何? |
|
|