在汇编语言中调用DOS命令

Author: 王建民 Date: 1993-11-19

        (一)、直接找到DOS解释程序的入口,作为子程序调用。如DOS中CATALOG的入口地址为$A56E,我们可在汇编语言中直接用JSR$A56E命令调用。
        (二)、对于有预置参数的DOS命令,可以模拟键入DOS命令后,由DOS解释执行的方法,在键盘缓冲区$200开始的单元,依次放入DOS命令及预置参数的ASCII码,再调用入口为$9FCD的DOS命令扫描子程序,即可达到调用DOS的目的。如DOS命令LOCKHELLO的ASCII码依次为:CCCFC3CBC8C5CCCCCF8D,可用如下汇编程序来实现这一功能。
        程序中,$320单元存放DOS命令的ASCII码的总数(含回车键),从$321单元开始,依次放入DOS命令的ASCII码,且最后必须有CTRL_M(回车)的代码8K,这一点千万不可忽略。这样,我们就可以用JSR$0300来达到DOS命令LOCKHELLO的目的。对于其它的DOS命令,亦可仿照所示的汇编程序编写。
        0300-LDY  #$00
        0302-LDA  $0321,Y
        0305-STA  $0200,Y
        0308-INY
        0309-CPY  $0320
        030C-BNE  $0302
        030E-JSR  $9FCD
        0311-RTS
        0320:0A  CC  CF  C3  CB
        0325:C8  C5  CC  CC  CF  8D
        (王建民)