中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-17 04:48
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 请问DOS下怎么才能让系统自动运行用户自己的应用程序? 查看 1,480 回复 7
楼 主 请问DOS下怎么才能让系统自动运行用户自己的应用程序? 发表于 2005-08-09 21:52 ·  中国 北京 教育网
初级用户
积分 38
发帖 8
注册 2005-08-09 21:43
20年会员
UID 41500
状态 离线
我想在DOS下移植一个操作系统(UC/OS),一但CPU上电起动后,DOS起动完后,让移植好的操作系统自动运行起来,不用在DOS命令提示符下用操作命令调出应用程序。但是我现在不知道怎么才能让DOS启动后自动运行用户应用程序?是不是在AUTOEXEC.BAT中可以更改加入自己的应用程序就可以?请大家执教!

[ Last edited by Evelent on 2005-8-10 at 09:35 ]
2 发表于 2005-08-09 21:59 ·  IANA 局域网IP(Private-Use)
钻石会员
★★★★★
积分 10,046
发帖 3,039
注册 2002-11-11 00:00
23年会员
UID 223
性别 男
状态 离线
是的。
简单就是美
3 谢谢! 发表于 2005-08-09 22:12 ·  中国 北京 教育网
初级用户
积分 38
发帖 8
注册 2005-08-09 21:43
20年会员
UID 41500
状态 离线
非常感谢,那我就往这个方向去看看,以后有问题还请多指教!有类似的例子?
4 发表于 2005-08-09 22:16 ·  IANA 局域网IP(Private-Use)
钻石会员
★★★★★
积分 10,046
发帖 3,039
注册 2002-11-11 00:00
23年会员
UID 223
性别 男
状态 离线
其实我对你说的uc/os一无所知。我只是回答你的最后一句话,不要被我误导了,呵呵。
简单就是美
5 没关系:) 发表于 2005-08-10 09:33 ·  中国 北京 教育网
初级用户
积分 38
发帖 8
注册 2005-08-09 21:43
20年会员
UID 41500
状态 离线
我用的那个UC/OS是一种源代码开放的操作系统。我想移植过去应该没什么问题,然后在C编译通过生成一个可执行文件,最后DOS启动就能执行生成的可执行文件就可以。现在看了些关于修改autoexex.bat方面的知识,但还不是很明白。有相关把自己的应用程序加到autoexec.bat中的例子吗?
6 试试看吧 发表于 2005-08-10 12:10 ·  中国 辽宁 沈阳 联通
高级用户
★★
积分 739
发帖 111
注册 2004-11-30 00:00
21年会员
UID 34209
性别 男
来自 辽宁沈阳
状态 离线
在freedos\utils下,有个文件exeflat.c,编译成可执行文件exeflat.exe;
假设你编译通过生成的自己的应用程序可执行文件名为UC_OS.exe;
如下操作:
exeflat UC_OS.exe kernel.sys 96;
然后将kernel.sys拷贝到freedos根目录下(覆盖原来的文件);重新启动freedos,就加载你的程序,而不会有其他程序加载到内存,UC_OS.exe基本是裸机执行(除了BIOS和BOOT LOADER);
注意:如果UC_OS.exe 是使用BC3.1编译的,一般没问题,BC5.02则不一定好用


[ Last edited by taowentao on 2005-8-10 at 12:20 ]
7 发表于 2005-08-10 19:43 ·  IANA 局域网IP(Private-Use)
钻石会员
★★★★★
积分 10,046
发帖 3,039
注册 2002-11-11 00:00
23年会员
UID 223
性别 男
状态 离线
原来如此,照此说来,autoexec.bat可做不到。系统运行autoexec.bat时,已经加载了若干程序了。
简单就是美
8 去掉UC_OS.exe 启动代码中的DOS调用 发表于 2005-08-11 08:52 ·  中国 辽宁 沈阳 联通
高级用户
★★
积分 739
发帖 111
注册 2004-11-30 00:00
21年会员
UID 34209
性别 男
来自 辽宁沈阳
状态 离线
如果UC_OS.exe 的启动地址是0000:0000,并且去掉启动代码中的DOS调用的话,freedos的BOOT LOADER肯定能成功加载并执行UC_OS.exe 。
BC3.1编译结果一般都有DOS调用,不过你可以修改它的启动代码:BORLANDC\LIB\STARTUP\C0.ASM,并重新编译它,以达到此目的。
执行exeflat后,UC_OS.exe 的启动地址是0060:0000。freedos的BOOT LOADER将跳至此处执行。
实际上此时的UC_OS.exe 已经是个执行系统(不能叫操作系统)。


[ Last edited by taowentao on 2005-8-11 at 09:07 ]
论坛跳转: