DOS版本不兼容的解决方法

Author: 湖北 李俊平 Date: 1993-08-27

        C>FOR  MATA:
        Incorrect  Dos  Version
        碰到这种情况时,用户往往不知道怎么处理,其实只需用DEBUG将该外部命令程序修改一个字节就可以解决。
        每一个DOS外部命令中有一段代码是检查版本号的,如果版本号是对的,就继续运行该程序;否则,将显示出错信息并终止程序运行。这样,我们就可以修改这个程序,使得无论版本号是否一致,都继续运行该程序,这种修改非常简单。
        取得DOS版本号是通过DOS功能调用INT21H的30H功能来实现的,即:
        MOV  AH,30
        INT  21
        第一行的代码为B430。我们仍以DOS3.30中FORMAT为例,作如下操作:
        C>DEBUG  FOR  MAT.COM
        -S  100  FFFEB430
        -1256:1330;找到关键代码的地址
        -U  1330
        MOV  AH,30
        INT  21;取得DOS版本号
        CMPAX,1E03;是否3.30版
        JZ××××;是3.30版则
        ……转向程序正常运行
        用DEBUG的A命令将JZ××××改为JMP××××,然后存盘退出。这样就可以跳过版本号检查,使得其他版本的DOS可以使用该版本的FORMAT.COM程序。其它DOS外部命令的修改除了关键代码的地址不同之外,其他均相同。(湖北李俊平)