宏汇编MASM系统
2007-01-28 23:44
169 查看
1.1、宏汇编MASM系统
在宏汇编MASM系统中,程序员可用二种方法来处理源程序:命令行和集成环境。1.1.1 命令行命令
1、编写源程序可用计算机系统中各种能编辑文本文件的编辑器来编辑汇编源程序。常用的编辑器有:EDIT、Q、Word、记事本和写字板等。源文件的后缀为:ASM。
2、汇编程序
当源程序编写好后,可用MASM命令来汇编该源程序。如果源程序没有语法错误,那么,将生成目标文件(OBJ文件),为最终生成可执行文件作准备,但如果源程序有错误,汇编程序将显示出错误位置和原因,也可用列表文件(LST文件)来查看出错位置和原因。
下面给出一些使用该命令的实例情况。
例1.1 查看MASM命令的功能。(其中:用户输入的命令用下划线,系统显示的内容没有下划线。以下与此相同)
…>masm /?
usage: masm/options source(.asm),[out(.obj)],[list(.lst)],[cref(.crf)][;]
……
常用的选项有:/Zi和/Zd,因为它们与符号跟踪有关。
例1.2 用MASM命令汇编源程序
…>masm test
Microsoft (R) MASM Compatibility Driver
Copyright (C) Microsoft Corp 1993. All rights reserved.
Invoking: ML.EXE /I. /Zm /c test.asm
Microsoft (R) Macro Assembler Version 6.11
Copyright (C) Microsoft Corp 1981-1993. All rights reserved.
Assembling: test.asm
如果MASM命令显示了类似如上的处理结果,那么,表示源文件TEST.ASM已成功汇编,并已生成了其目标文件TEST.OBJ。
例1.3 用MASM命令汇编源程序
…>masm test
……
Assembling: test.asm
test.asm(10): error A2070: invalid instruction operands
如果MASM命令显示了类似如上的处理结果,那么,表示源文件有错,没有生成其目标文件。在本例中,显示第10行有语法错:非法的指令操作数。这时,要用编辑器阅读源程序的第10行,看看输入指令时是否有误。
假如源程序有许多错误,很难记住全部出错位置,那么,可用列表文件来辅助查错。
例1.4 在汇编源程序的同时,生成其列表文件。
…>masm test, ,test
……
Assembling: test.asm
test.asm(10): error A2070: invalid instruction operands
列表文件TEST.LST是一个文本文件,可用编辑器直接阅读,并可看出其错误的位置和原因。下面是一个列表文件的实例。
…>edit test.lst | |||
Microsoft (R) Macro Assembler Version 6.11 08/26/00 18:42:57 | |||
test.asm | Page 1 - 1 | ||
.model small | |||
.486 | |||
0000 | .data | ||
.radix 7 | |||
0000 2A 08 0F | w2 db 60,11,18 ;0000是偏移量,2A 08 0F是数据 | ||
0003 000A 0009 | w1 dw 10T, 1001B ;0003是偏移量,000A 0009是数据 | ||
0000 | .code | ||
.startup | |||
mov dl, 7777h | |||
test.asm(10): error A2070: invalid instruction operands | |||
mov ax, dx | |||
0012 0F A4 C2 01 | shld dx, ax, 1 | ||
0016 D1 D0 | rcl ax, 1 | ||
.exit 0 | |||
end |
3、连接程序
当由源文件汇编成功后,即可用连接程序(LINK.EXE)生成其可执行文件。
例1.5 查看连接程序(LINK.EXE)的具体选项。
…>link /?
LINK <objs>,<exefile>,<mapfile>,<libs>,<deffile>
Valid options are:
……
常用的功能选项有:/?、/HELP、/CODEVIEW和/STACK
例1.6 用连接程序生成执行文件。
方法1:
…>link test
……
Run File [test.exe]:
List File [nul.map]:
Libraries [.lib]:
Definitions File [nul.def]:
LINK : warning L4021: no stack segment
这种方法需要确认连接过程中的各种文件名,如果使用文件名的默认值,那么直接按“回车”键即可。
在上面四个文件名中,最重要二个文件名是:执行文件名和库文件名。一般情况下,无需更换最终生成的执行文件名;如果在连接过程中需要其它的库文件,则在显示第三行提示时,输入所需要的库文件名。
最后一行显示一个警告信息,提出本程序没有定义堆栈段,该警告信息可以不必理会,因为该执行文件是可运行的,在操作系统装入时会自动为其添加一个默认的堆栈段。
方法2:在文件名后面加上分号“;”,默认使用各类文件的缺省值。
…>link test;
……
LINK : warning L4021: no stack segment
4、运行程序
当要运行所生成文件时,可直接输入其文件名即可。
…>test
5、符号调试程序
当程序的运行结果不是预期结果时,就需要调试程序,找出错误的语句或逻辑关系。MASM系统提供了可用于源程序一级的调试工具CV(CodeView)。有关CV的使用参见“调试工具”中CodeView的介绍。
例1.7 用符号调试工具CV来调试程序TEST.ASM所生成可执行文件。
…>masm /Zi /Zd test ;假设其没有语法错
…>link /Co test
…>cv test.exe
相关文章推荐
- 如何在64位的linux系统上使用汇编和C语言混合编程-32汇编移植64位系统
- 若用MASM写操作系统的启动部分如何实现? 其他开发语言 / 汇编语言 - CSDN社区 community.csdn.net
- Linux内核分析课程--使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- Masm汇编语言伪指令
- Win32汇编--使用 MASM
- 不装虚拟机,简单几步在Win7 64位系统下实现Debug汇编的方法
- [汇编]8086指令系统---数据传送指令
- 汇编常用int 21H系统功能调用
- Window7的64位系统下配置32位的汇编环境的心得
- MS-DOS 6.22 +Vim+masm 汇编环境
- 8086汇编语言自学经验分享 Masm for windows 2012.5调试经验
- 用MASM汇编语言实现从10进制/16进制到2进制的转换
- 汇编--学习笔记(六)-指令系统
- 系统服务创建和服务-win32汇编完整版
- linux下64位汇编的系统调用(1)
- linux下64位汇编的系统调用(2)
- linux下64位汇编的系统调用(3)
- linux下64位汇编的系统调用(5)
- 用汇编写系统服务程序