我在不同的文件夹中有很多.asm文件。 通常,要编译和链接一个文件,我们使用两个命令:
tasm /zi FILENAME
tlink /v FILENAME
我想使用相同的编译方法,但是在大量的.asm文件中,都放在不同的文件夹中,并为每个文件创建一个同名的.exe文件。
我是否可以写一行以便立即执行此操作? 我应该写一个简短的程序来帮我吗?怎么样?
最后,我想要.exe文件,我可以通过DOS-BOX拖放。
谢谢, NAOR。
答案 0 :(得分:2)
如果您在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中运行的文件dosbox.bat
。我认为TASM.EXE
和TLINK.EXE
的路径已经在DOSBox中已知。