汇编语言的一般上机过程:1.建立ASM文件 2.产生OBJ文件 3.产生EXE文件 4.程序的调试和执行
MASM 6.15包含文件:
***************************************************
MASM.EXE 汇编器
EDIT.COM DOS下的文本编辑器
EDIT.HLP EDIT帮助文件
LIB.EXE 过程库管理程序
LINK.EXE 连接器
DOSXNT.EXE
ml.err 汇编的错误信息文件
ml.exe(masm and link) 汇编连接器
***************************************************
DEBUG.EXE 调试器(一般是系统自带)
***************************************************
对于MASM 6.10以下的版本,汇编器和连接器是分开的,分别是MASM.EXE和LINK.EXE,使用时要先用MASM.EXE生成.OBJ文件,再使用LINK.EXE生成.EXE
文件。ml.exe把MASM.EXE和LINK.EXE整合到一起,可以一步生成.EXE文件。
ml命令有许多参数,可以使用ml /?命令查看。下面介绍几个低级实用的参数:
/AT Enable tiny model (.COM file)
/c Assemble without linking 只汇编不连接
/Fe<file> Name executable 指定.EXE文件名
/Fl[file] Generate listing 生成列表文件(.LST)
/Fm[file] Generate map 生成映像文件(.MAP)
/Fo<file> Name object file 指定.OBJ文件名
/I<name> Add include path 指定include文件的路径名
两种开发环境:
1.32位Windows控制台(CMD.EXE)
①解压缩MASM6.15.ZIP到D:/
②开始-程序-附件-命令提示符-右键-发送到桌面快捷方式
③修改桌面命令提示符属性:
目标:%SystemRoot%/system32/cmd.exe
起始位置:D:/MASM
④双击命令提示符图标即可进入基于32位Windows控制台下的汇编程序环境。
2.16位DOS环境(COMMAND.COM)
和32位Windows控制台环境建立不同的是属性修改那一步。装入的是一个16位的DOS命令解释器。
目标:%SystemRoot%/system32/command.exe
两种开发环境的比较:某些16位的汇编程序可能无法在32位的Windows控制台中运行。
一个简单实例:
1. 在D:/MASM/下建立包含下列内容的.ASM文本文件(EDIT.EXE)
DATA SEGMENT WORD1A DW 7F7AH WORD1B DW 8548H WORD2A DW 346BH WORD2B DW 2ABCH WORD3A DW ? WORD3B DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX CALL STA MOV AH,4CH INT 21 STA PROC CLC MOV CX,02 MOV SI,OFFSET WORD1A MOV DI,OFFSET WORD1B MOV BX,OFFSET WORD3A NEXT: MOV AX,[SI] ADC AX,[DI] MOV [BX],AX INC SI INC SI INC DI INC DI INC BX INC BX LOOP NEXT RET STA ENDP CODE ENDS END START
2. D:/MASM>ML EXP.ASM
Microsoft (R) Macro Assembler Version 6.15.8803
Copyright (C) Microsoft Corp 1981-2000. All rights reserved.
Assembling: EXP.ASM
Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992
Copyright (C) Microsoft Corp 1984-1992. All rights reserved.
Object Modules [.obj]: EXP
Run File [EXP.exe]:
List File [nul.map]:
Libraries [.lib]:
Definitions File [nul.def]:
LINK : warning L4021: no stack segment
3.调试程序DEBUG.EXE
4.输入EXP.exe便可以执行该程序