Board logo

标题: 原创:DOS启动教学初步(四):COMMADN.COM模块 [打印本页]

作者: yiyesong     时间: 2002-11-20 00:00    标题: 原创: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命令处理不可分割的整体:暂驻模块完成命令处理的主体工作,常驻模块确保系统的正常运行。这样安排的结果,为用户提供了一个尽可能大的主存空间。
作者: laochang409     时间: 2004-6-23 00:00
very good!
作者: linux1234     时间: 2004-7-13 00:00
好好学习,天天向上