实验二 汇编编译工具MASM的使用
2.1. 实验目的
1、 学习如何安装MASM
2、 学习如何使用和使用编译和链接汇编语言程序。
2.2. 基础知识
1、常用汇编语言工具
软件名称
运行平台
软件说明
下载地址
Masm V6.11
DOS
微软
汇编工具
202.116.77.47/
Masm32 V6.0
Windows 98/2000/XP
微软Win32
汇编工具
www.vckbase/tools/dev/masm32v6.zip
Masm32 V8.0
Windows 98/2000/XP
微软Win32汇编工具
www.lwp.ca/masm32/masm32v8.zip
61.133.63.176/ddcrack/assembler/tools/masm32v8.zip
Tasm V5.0
DOS
Borland
汇编工具
ang/home/tools/tasm5.zip
61.133.63.176/ddcrack/assembler/tools/tasm50.zip
2DOS汇编与WIN32汇编
DOS下编写汇编程序,程序员可以管理系统的所有资源,访问和改动系统中所有的内存,修改内存控制块,修改中断向量表截获中断,直接对I/O端口进行读写。DOS是个单任务操作系统,只有一个运行级别,任何进程和DOS操作系统都是同等级别的。因此,DOS系统中各个进程会互相影响,如果某个进程死机的话,整个系统都会垮掉。DOS工作在实模式下,程序员可以寻址1M的内存,通过段寄存器来指定段的初始地址,每个段的大小为64K。超过1M的部分,就只能把他作为XMS使用。1M以上的内存空间只能用作数据存放而无法在其中执行程序。
Win32汇编语言大小写字母转换是指32位的Windows操作系统,进程有多种运行级别,操作系统工作在最高级别——0级,而应用程序工作在3级。在第三级别,进程无法直接访问I/O端口,无法访问其它进程运行的内存,连向自己的运行代码写入数据都是非法的。只有对于最高级别的进程,系统才是全开放的。Windows工作在保护模式下,所有的资源对进程来说都是被“保护”的。在内存方面,Windows使用了处理器的分页机制,程序员不必用一个段寄存器去指定段的地址,因为在保护模式下,段寄存器的含义是不同的(参见80386手册方面的书
籍)。程序员可以直接指定一个32位的地址来寻址4GB的内存。在程序结构方面,Windows程序也有很大的不同,它是“基于消息”的。
在上面列举的汇编工具中,一些是DOS汇编工具,一些是Win32汇编工具。初学者可以从DOS汇编入手,先掌握汇编编程的思路、基本语法和编程技巧,待入门后再学习Win32汇编。
当然,学习DOS汇编并不一定需要安装和使用DOS操作系统。程序员可以在Win32环境中安装MASM 6.0或其它16位汇编工具,在命令提示符状态下编译和链接DOS汇编程序。DOS汇编程序在Win32环境中运行时,操作系统会模拟实模式运行16位进程。对于一些可能会影响整个操作系统工作的指令,Win32操作系统会拒绝执行。
2.3. MASM的安装
首先从Internet下载masm60.zip,这是一个ZIP压缩文件。可以用WINZIPWINRAR等压缩解压软件指定一个目录将其解压,目录名例如为F:\MASM60
运行“命令提示符”,在解压目录中运行setup程序,开始安装MASM
在主菜单界面选择“Install the Microsoft Macro Assembler”继续。
在系统设置界面选择“DOS/Windows & NT”操作系统继续。
选择安装Windows有关文件,继续。
选择安装PWDProgrammer’s WorkBench,继续。
无须安装“Brief compatibility”(常见编辑器兼容),继续。
选择复制微软鼠标驱动器“Microsoft Mouse Driver”,继续。
选择安装MASM工具,继续。
选择安装帮助文件,继续。
选择安装例程(sample program),继续。
选择系统的安装目录,例如将系统安装在E盘。
接下来是询问各部分程序的安装目录,一般情况下由系统自行决定即可。
参数设置完毕后最后检查一次。
检查如果无需改动,则选择“NO CHANGES”开始安装。
安装完毕后系统会提示MASM 6.115.1版本有一些区别,具体的内容可以观看安装菜单中的“Special Note for MASM v5.1 users”,或者编程指南中的附录A
设置MASMDOS操作系统环境参数需要修改autoexec.batconfig.sys两个文件,MASM提供了NEW-VARS.BATNEW-CONF.SYS两个文件作为参考。如果MASM安装在Windows 98/NT/2000/XP操作系统环境下,需要参考文件NEW-VARS.BAT的内容进行设置,设置方式稍后介绍。
接下来是Windows 3.x操作系统环境下的设置要求。如果MASM 6.11安装在Windows 3.0/3.1/3.11/3.2操作系统中,需要参考文件NEW-SYS.INI修改系统环境配置文件SYSTEM.INI。如果MASM 6.11安装在32Windows中,无须理会NEW-SYS.INI的内容。
然后是关于PWDProgrammer’s WorkBench的设置,安装系统会提供一个参考文件TOOL.PRE
最后是有关内存方面的设置。当MASM工作在非DOS环境下时,不需要理会这些方面的内容。
在安装结束前最好看一看“Special Note for CodeView users”、“Special Note for MASM v5.1 users”、“README.TXT”和“PACKING.TXT”的内容。最后再退出安装。
2.3. WIN32操作系统中MASM的环境参数设置
安装完MASM后,需要设置一下MASM的环境参数。步骤如下:
在桌面“我的电脑”上点击鼠标右键,在弹出式菜单上选择“属性”项,在“系统属性”窗口里打开“高级”页。
点击“环境变量”按钮。
在“环境变量窗口”的系统变量列表中选择“PATH”项,再点击系统变量列表下的“编辑”按钮。
在“编辑环境变量窗口”的“变量值”栏里追加MASMBINBINBINCLUDE目录的路径参数。例如:当MASM安装在E:\MASM611目录,则在“变量值”栏里追加“; E:\MASM611\BINR; E:\MASM611\BIN”。
除此之外,还需要增加以下环境变量:
LIB=E:\MASM611\LIB
INCLUDE=E:\MASM611\INCLUDE
INIT=E:\MASM611\INIT
HELPFILES=E:\MASM611\HELP\*.HLP
ASMEX=E:\MASM611\SAMPLES
说明:环境参数改变后需要重新启动计算机才能生效。有些机房在计算机中使用了磁盘保护卡,一旦重新启动所有安装的文件和设置的参数都将消失。在这种情况下,可以在DOS命令行模式中输入一些临时命令设置MASM的环境参数。(假设MASM安装在E:\MASM611目录)
SET PATH=E:\MASM611\BINR;E:\MASM611\BIN;%PATH%
SET LIB=E:\MASM611\LIB
SET INCLUDE=E:\MASM611\INCLUDE
SET INIT=E:\MASM611\INIT
SET HELPFILES=E:\MASM611\HELP\*.HLP
SET ASMEX=E:\MASM611\SAMPLES
2.4. MASM.EXE的使用
MASM.EXE用于将汇编源程序汇编成目标文件。当MASM汇编环境参数配置好之后,在“命令提示符”窗口中键入“MASM /H”指令,将显示出MASM的使用介绍。
MASM的命令格式如下:
MASM [] source(.asm),[out(.obj)],[list(.lst)],[cref(.crf)][;]
可选部分是MASM的各种汇编参数。source(.asm)指定汇编源文件的名称,缺省的扩展名是ASMout(.obj)指定输出的目标代码文件。缺省的文件名与汇编源文件相同,扩展名改为OBJlist(.lst)指定输出的列表文件,缺省的扩展名是LST。缺省情况下MASM不生成列表文件。cref(.crf)指定输出的交叉参考文件,缺省的扩展名是CRF。缺省情况下MASM不生成交叉参考文件,交叉参考文件的后缀为SBR。最后的分号表示其后的项目按缺省情况处理。
以下就各个汇编参数逐个加以说明。
参数名
作用
/C
生成交叉参考文件
/D<sym>[=<val>]
定义一个符号sym并对其赋值val
/E
模拟浮点运算指令和IEEE格式
/H
显示MASM的使用帮助
/HELP
显示MASM的使用帮助
/I<path>
寻引入文件(INC)的目录
/L
生成列表文件
/La
生成全部列表文件
/ML
区分所有标识符号的大小写
/MU
将全局标识符号转换为大写
/MX
区分全局标识符号的大小写
/N
隐藏列表文件中的符号表
/T
隐藏成功汇编时的显示消息
/W[0/1/2]
设置告警等级(0:无;1:严重;2:劝告)
/X
列举错误条件
/Zi
生成CodeView的行号信息
/Zd
生成CodeView的标识符号信息
下面用一个汇编程序说明MASM.EXE的使用方法。汇编程序名称为HELLO.ASM,内容如下:
data1    segment
        msg    db    "Hello, world.",0dh,0ah,"$"
data1    ends
code1    segment
        assume cs:code1, ds:data1
start:   
    mov    ax, data1
        mov    ds, ax
    mov    dx, offset msg
        mov    ah, 9
    int    21h
        mov    ax, 4c00h
    int    21h
code1 ends
    end start
输入“masm hello;”指令,指令后的分号表示一切按缺省情况进行。运行后显示以下内容:
Microsoft (R) MASM Compatibility Driver
Copyright (C) Microsoft Corp 1993.  All rights reserved.
Invoking: ML.EXE /I. /Zm /c hello.asm
Microsoft (R) Macro Assembler Version 6.11
Copyright (C) Microsoft Corp 1981-1993.  All rights reserved.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。