转Win32下汇编语言常用批处理文件
2009-05-17 15:16
Win32下汇编语言常用批处理文件
http://bavon.bokee.com/2771350.html
关键词: 汇编 批处理
在Win32下进行汇编语言编程时,经常需要在汇编、资源转换和连接等一系列操作之后才可能生成可执行文件,而在这些过程中如果只是仅仅使用ML.EXE、RC.EXE、CVTRES.EXE和LINK.EXE来进行的话,繁多的参数输入也挺让人烦的。鉴于此,笔者写了几个批处理文件myMasm.bat、myCvt.bat和myLink.bat分别来执行汇编、资源转换和连接等操作,最后还写了一个能将上述操作同时完成的批处理文件myMake.bat。
为了使用该处理文件,有一些规则得统一。
1. ML.EXE、RC.EXE、CVTRES.EXE和LINK.EXE这几个文件必须放在目录\masm32\bin里面。
2. 如果你还有资源文件,其命名方式为你的源文件名字(不含扩展名)加“-RC.rc”。例如你的源文件为Hello.asm,则你的资源文件应该命名为Hello-RC.rc。
3. 使用这些批处理文件的时候,只需输入相应的批处理文件名加源文件名字(不含扩展名)。例如你要操作的文件有Hello.asm和Hello-RC.rc,那么如果执行下面的操作成功的话将会产生一个Hello.exe。所用操作如下:
mymasm hello
mycvt hello (注:如果没有Hello-RC.rc,此操作可以省略)
mylink hello
或者你直接使用
mymake hello
也可以直接产生上述3个操作的结果,获得Hello.exe。
这4个批处理文件的内容如下所示,只需将其内容复制并按其文件名创建批处理文件。
REM myMasm.bat
@echo off
cls
if exist "%1.obj" del "%1.obj"
\masm32\bin\ml /c /coff /Fl "%1.asm"
if errorlevel 0 dir "%1.*"
if not exist "%1.obj" echo Assembling Failed!
if exist "%1.obj" echo Assembling Succeeded!
REM myMasm.bat
REM myCvt.bat
@echo off
cls
\masm32\bin\rc "%1-RC.rc"
\masm32\bin\cvtres /machine:ix86 "%1-RC.res"
if errorlevel 0 dir "%1.*"
if not exist "%1-RC.obj" echo Converting Failed!
if exist "%1-RC.obj" echo Converting Succeeded!
REM myCvt.bat
REM myLink.bat
@echo off
cls
if exist "%1.exe" del "%1.exe"
if not exist "%1-RC.obj" goto nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS "%1.obj" "%1-RC.obj"
goto done
:nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS "%1.obj"
:done
if errorlevel 0 dir "%1.*"
if not exist "%1.exe" echo Linking Failed!
if exist "%1.exe" echo Linking Succeeded!
REM myLink.bat
REM myMake.bat
@echo off
cls
:1_masm
if exist "%1.obj" del "%1.obj"
\masm32\bin\ml /c /coff /Fl "%1.asm"
if not exist "%1.obj" echo Assembling Failed!
if not exist "%1.obj" goto done
:2_convert
if not exist "%1-RC.rc" goto 3_link
if exist "%1-RC.obj" del "%1-RC.obj"
\masm32\bin\rc "%1-RC.rc"
\masm32\bin\cvtres /machine:ix86 "%1-RC.res"
if not exist "%1-RC.obj" echo Converting Failed!
if not exist "%1-RC.obj" goto done
:3_link
if exist "%1.exe" del "%1.exe"
if not exist "%1-RC.obj" goto nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS "%1.obj" "%1-RC.obj"
goto done
:nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS "%1.obj"
:done
if errorlevel 0 dir "%1.*" "%1-RC.*"
if exist "%1.exe" echo %1.exe was successfully made!
if not exist "%1.exe" echo %1.exe was NOT made!
REM myMake.bat
2009-05-17 15:16
Win32下汇编语言常用批处理文件
http://bavon.bokee.com/2771350.html
关键词: 汇编 批处理
在Win32下进行汇编语言编程时,经常需要在汇编、资源转换和连接等一系列操作之后才可能生成可执行文件,而在这些过程中如果只是仅仅使用ML.EXE、RC.EXE、CVTRES.EXE和LINK.EXE来进行的话,繁多的参数输入也挺让人烦的。鉴于此,笔者写了几个批处理文件myMasm.bat、myCvt.bat和myLink.bat分别来执行汇编、资源转换和连接等操作,最后还写了一个能将上述操作同时完成的批处理文件myMake.bat。
为了使用该处理文件,有一些规则得统一。
1. ML.EXE、RC.EXE、CVTRES.EXE和LINK.EXE这几个文件必须放在目录\masm32\bin里面。
2. 如果你还有资源文件,其命名方式为你的源文件名字(不含扩展名)加“-RC.rc”。例如你的源文件为Hello.asm,则你的资源文件应该命名为Hello-RC.rc。
3. 使用这些批处理文件的时候,只需输入相应的批处理文件名加源文件名字(不含扩展名)。例如你要操作的文件有Hello.asm和Hello-RC.rc,那么如果执行下面的操作成功的话将会产生一个Hello.exe。所用操作如下:
mymasm hello
mycvt hello (注:如果没有Hello-RC.rc,此操作可以省略)
mylink hello
或者你直接使用
mymake hello
也可以直接产生上述3个操作的结果,获得Hello.exe。
这4个批处理文件的内容如下所示,只需将其内容复制并按其文件名创建批处理文件。
REM myMasm.bat
@echo off
cls
if exist "%1.obj" del "%1.obj"
\masm32\bin\ml /c /coff /Fl "%1.asm"
if errorlevel 0 dir "%1.*"
if not exist "%1.obj" echo Assembling Failed!
if exist "%1.obj" echo Assembling Succeeded!
REM myMasm.bat
REM myCvt.bat
@echo off
cls
\masm32\bin\rc "%1-RC.rc"
\masm32\bin\cvtres /machine:ix86 "%1-RC.res"
if errorlevel 0 dir "%1.*"
if not exist "%1-RC.obj" echo Converting Failed!
if exist "%1-RC.obj" echo Converting Succeeded!
REM myCvt.bat
REM myLink.bat
@echo off
cls
if exist "%1.exe" del "%1.exe"
if not exist "%1-RC.obj" goto nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS "%1.obj" "%1-RC.obj"
goto done
:nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS "%1.obj"
:done
if errorlevel 0 dir "%1.*"
if not exist "%1.exe" echo Linking Failed!
if exist "%1.exe" echo Linking Succeeded!
REM myLink.bat
REM myMake.bat
@echo off
cls
:1_masm
if exist "%1.obj" del "%1.obj"
\masm32\bin\ml /c /coff /Fl "%1.asm"
if not exist "%1.obj" echo Assembling Failed!
if not exist "%1.obj" goto done
:2_convert
if not exist "%1-RC.rc" goto 3_link
if exist "%1-RC.obj" del "%1-RC.obj"
\masm32\bin\rc "%1-RC.rc"
\masm32\bin\cvtres /machine:ix86 "%1-RC.res"
if not exist "%1-RC.obj" echo Converting Failed!
if not exist "%1-RC.obj" goto done
:3_link
if exist "%1.exe" del "%1.exe"
if not exist "%1-RC.obj" goto nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS "%1.obj" "%1-RC.obj"
goto done
:nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS "%1.obj"
:done
if errorlevel 0 dir "%1.*" "%1-RC.*"
if exist "%1.exe" echo %1.exe was successfully made!
if not exist "%1.exe" echo %1.exe was NOT made!
REM myMake.bat