中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 原创:DOS启动教学初步(四):COMMADN.COM模块
作者:
标题: 原创:DOS启动教学初步(四):COMMADN.COM模块 取消高亮 | 上一主题 | 下一主题
yiyesong
元老会员




积分 1987
发帖 632
注册 2002-10-27
状态 离线
『楼 主』:  原创:DOS启动教学初步(四):COMMADN.COM模块

COMMAND.COM是命令处理程序模块,为DOS的外壳。构成MS-DOS操作系统与用户之间的接口。它接受用户输入的DOS命令,进行解释并加以执行。该模块由3部分组成:
    1、外壳初始化程序CMDINIT;
    2、COMMAND.COM的暂驻内存模块CCPT;
    3、COMMAND.COM的常驻内存模块CCPR;
    在SYSINIT把COMMAND.COM读入主存后,就把系统的控制权交给了CMDINIT,自己随之被覆盖而消失。CMDINIT接过控制权后,要做如下3方面的工作:
    1、设置DOS的有关中断向量;
    2、检查有无AUTOEXEC.BAT,若有,调入并执行;
    3、让COMMAND.COM暂驻模块投入运行,以等待用户键入的命令。
    COMMAND.COM暂驻模块CCPT由SYSINIT初始化程序将其装入,并定位于主存储器的高端。该模块主要由4部分程序组成:A、命令接收及解释程序;B、内部命令程序;C、批命令处理程序;D、外部命令装入程序。
    该模块负责接收并解释由用户键入的命令及其参数,若是内部命令,则调用此模块中的相应子程序执行;若是外部命令(用户应用程序等也相当于外部命令)。则使用INT 21H的4BH号功能(即EXEC功能),将外部命令读入并执行。
    CCPT实际上被放在供用户程序使用的暂驻程序区的顶端,因此有可能发生这样的情形:CCPT被加载的用户程序所覆盖,这正是把它取名为暂驻模块的原因。之所以这样安排,主要是出自“尽量的给用户程序留出较大的内存空间”之故。但如果CCPT被用户程序覆盖,一旦用户程序运行完毕,DOS系统也就无法再去接收键盘命令,所以为了既能给用户提供大的内存空间,又能确保正常的系统运作,势必还需要COMMAND.COM常驻模块的支持。
    COMMAND.COM常驻模块CCPR主要由一个检查并重新安装暂驻模块程序构成。在CCPT加载用户程序时,就把用户程序运行完毕后的返回点指向CCPR。因此在用户程序运行完毕后,常驻模块CCPR立即取得控制权。如果检查发现暂驻模块CCPT被覆盖,则就启动重新安装程序,把它从磁盘上再次装入暂驻程序区的顶端。要注意,这时当前磁盘驱动器必须是DOS系统盘,这样安装程序才会找到COMMAND.COM暂驻模块,顺利完成装入任务。
   综上述,把COMMAND.COM模块分成两部分,各占一个主存区,一个暂驻,一个常驻,但它们却是完成DOS命令处理不可分割的整体:暂驻模块完成命令处理的主体工作,常驻模块确保系统的正常运行。这样安排的结果,为用户提供了一个尽可能大的主存空间。



[flash=550,93]http://dos.e-stone.cn/dosbbs
uploadImages/200311161145850422.swf[/flash]
2002-11-20 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
laochang409
中级用户




积分 297
发帖 44
注册 2004-6-15
状态 离线
『第 2 楼』:  

very good!

2004-6-23 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
linux1234
中级用户




积分 293
发帖 42
注册 2003-10-17
状态 离线
『第 3 楼』:  

好好学习,天天向上

2004-7-13 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: