如何编译多个.asm文件并为每个文件创建exe文件?

时间:2014-05-21 18:25:40

标签: assembly compilation exe tasm dosbox

我在不同的文件夹中有很多.asm文件。 通常,要编译和链接一个文件,我们使用两个命令:

tasm /zi FILENAME
tlink /v FILENAME

我想使用相同的编译方法,但是在大量的.asm文件中,都放在不同的文件夹中,并为每个文件创建一个同名的.exe文件。

我是否可以写一行以便立即执行此操作? 我应该写一个简短的程序来帮我吗?怎么样?

最后,我想要.exe文件,我可以通过DOS-BOX拖放。

谢谢, NAOR。

1 个答案:

答案 0 :(得分:2)

如果您在Windows中运行TASMTLINK,则可以使用Windows批处理文件:

@ECHO OFF
SETLOCAL enableextensions enabledelayedexpansion

rem adjust the following lines to your needs
rem path to tasmx.exe and tlink.exe
PATH C:\Turbo.DOS\TASM.5\BIN;%PATH%
rem this directory and subdirectories
PUSHD C:\TMP\Tasm

FOR /R %%i IN (*.asm) DO (
    SET P=%%~psni
    DEL !P!.obj !P!.exe !P!.com !P!.map 2>NUL
    ECHO !P!
    tasmx.exe /t !P!,!P!.obj >NUL
    IF EXIST !P!.obj (
        tlink.exe /x !P! >NUL
    )
)

POPD

DOSBox中没有FOR指令。如果必须使用DOSBox进行组装和链接(64位Windows),则在Windows中构建批处理文件,为DOSBox构建批处理文件:

@ECHO OFF
SETLOCAL enableextensions enabledelayedexpansion

rem adjust the following lines to your needs
rem this directory and subdirectories
PUSHD C:\TMP\Tasm

>dosbox.bat     echo @ECHO OFF
>>dosbox.bat    echo IF EXIST X:NUL mount -u X ^>NUL
>>dosbox.bat    echo MOUNT X X:\ ^>NUL
>>dosbox.bat    echo X:

FOR /R %%i IN (*.asm) DO (
    SET P=%%~sni
    SET D=%%~psi
    DEL !P!.obj !P!.exe !P!.com !P!.map 2>NUL
    ECHO !P!
    >>dosbox.bat echo CD !D!
    >>dosbox.bat echo tasm.exe /t !P!
    >>dosbox.bat echo IF EXIST !P!.obj tlink.exe /x !P!
)

POPD

在Windows下运行此批处理文件。您将获得一个可以在DOSBox中运行的文件dosbox.bat。我认为TASM.EXETLINK.EXE的路径已经在DOSBox中已知。