汇编程序编写平台的搭建与测试

 

最近接触到了汇编程序,在自己的电脑上安装了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然后复制到上面的目录中。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值