我有很多 .asm 文件,位于不同的文件夹中。通常,要编译和链接一个文件,我们使用两个命令:
tasm /zi FILENAME
tlink /v FILENAME
我想使用相同的编译方法,但是在大量的 .asm 文件上,它们都放在不同的文件夹中,并为每个文件创建一个具有相同名称的 .exe 文件。
我可以写一行以便立即执行此操作吗?我应该写一个简短的程序来为我做吗?如何?
最后,我想拥有可以通过 DOS-BOX 拖放播放的 .exe 文件。
谢谢,纳奥。
我有很多 .asm 文件,位于不同的文件夹中。通常,要编译和链接一个文件,我们使用两个命令:
tasm /zi FILENAME
tlink /v FILENAME
我想使用相同的编译方法,但是在大量的 .asm 文件上,它们都放在不同的文件夹中,并为每个文件创建一个具有相同名称的 .exe 文件。
我可以写一行以便立即执行此操作吗?我应该写一个简短的程序来为我做吗?如何?
最后,我想拥有可以通过 DOS-BOX 拖放播放的 .exe 文件。
谢谢,纳奥。
如果您在 Windows 中运行TASM
,TLINK
则可以使用 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.EXE
和TLINK.EXE
已知路径。