0

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

tasm /zi FILENAME
tlink /v FILENAME

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

我可以写一行以便立即执行此操作吗?我应该写一个简短的程序来为我做吗?如何?

最后,我想拥有可以通过 DOS-BOX 拖放播放的 .exe 文件。

谢谢,纳奥。

4

1 回答 1

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.bat可以在 DOSBox 中运行的文件。我假设 DOSBox 中的路径TASM.EXETLINK.EXE已知路径。

于 2014-05-23T10:14:32.300 回答