最近接触到了汇编程序,在自己的电脑上安装了MASM32和MASM6.11,MASM32是为了直接WIN32汇编,MASM611是为了DOS 16位汇编。这两个程序都可以在网上下到。
在开始汇编之前我们需要设置环境变量,在这里我们不到“我的电脑”里进行设置,而采用批处理的方式。在MASM32和MASM611的安装目录的bin文件加下都新建一个名为var.bat的文件(只要你喜欢,可取其他名字,但后缀名必须为bat)。在两个var.bat中分别输入如下内容:
@echo off
rem 请根据 Masm32 软件包的安装目录修改下面的 Masm32Dir 环境变量!
set Masm32Dir=C:\Masm32
set include=%Masm32Dir%\Include;%include%
set lib=%Masm32Dir%\lib;%lib%
set path=%Masm32Dir%\Bin;%Masm32Dir%;%PATH%
set Masm32Dir=
echo on
和
@echo off
rem 请根据 Masm611 软件包的安装目录修改下面的 Masm611 环境变量!
set Masm611=C:\Masm611
set include=%Masm611%\Include;%include%
set lib=%Masm611%\lib;%lib%
set path=%Masm611%\Bin;%Masm611%;%PATH%
set Masm611=
echo on
这样在我们需要编译调试程序时进入var.bat所在目录运行一次var.bat文件即可。注意:重新运行命令行窗口CMD,需要再次运行var.bat,环境变量设置才能成功。也许你不太喜欢这种方式,那你可以自己到“我的电脑”->属性->高级->环境变量在对应的变量名后添加以上内容。
安装完MASM611后在bin文件夹没有link.exe这个文件,我们需要到binr文件夹中将link.exe复制到bin中。否则在环境变量中还需添加binr的路径。由于masm32和masm611都有link.exe,我们最好把其中一个link.exe改个名字。我把masm611\bin\link.exe改为了doslink.exe。你可以改为其他的。
现在写一个程序来测试一下:
DOS版:Test.asm
*************************************************
stack segment stack
db 100 dup(?)
stack ends
data segment
szHello db 'Hello',0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
mov ah,9
mov dx,offset szHello
int 21h
mov ah,4ch
int 21h
code ends
end start
*************************************************
开始测试:先masm Test.asm 会生成Test.obj。也可使用ML /c Test.asm。然后 doslink Test.obj 回车后就会出现
看到Test.exe就成功了。在Dos下运行,会在屏幕上出现Hello。OK,MASM611已经测试成功,下面进入MASM32的测试。
Win32版:Test.asm
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
szCaption db 'A MessageBox !',0
szText db 'Hello, World !',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
start:
invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
开始测试: ml /c /coff Test.asm
Link /subsystem:windows Test.obj
运行生成的Test.exe会出现
OK,测试已经完成了,现在可以进行你的汇编程序之旅了。
其实我们完全没有必要安装了MASM32后有安装MASM611。只需安装一个MASM32就可以了。
在x:\masm32\bin目录中(假设masm32安装在x盘)有四个重要的程序,
ml.exe link.exe link16.exe rc.exe
看到了没,上面有两个连接程序,link16.exe就是为dos程序准备的。
如果你要编译dos程序,指令如下:
ml /c Test.asm
link16 Test.obj
如果你要编译32位控制台程序
ml /c /coff Test.asm
link /subsystem:console Test.obj
如果你要编译32位窗口程序
ml /c /coff Test.asm
link /subsystem:windows Test.obj
如果你的masm32软件包中没有link16.exe这个程序的话,你也不要担心,只要把masm611中那个link.exe,改成link16.exe然后复制到上面的目录中。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章