使用MASM应这样操作:
C:\ASM\>masm[Enter] Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved. Source filename [.ASM]:prog7[Enter] (输入待编译的源程序文件名) Object filename [prog7.OBJ]:[Enter] (输入编译后生成的目标程序文件名) Source listing [NUL.LST]:[Enter] (输入列表文件名) Cross-reference [NUL.CRF]:[Enter] (输入交叉引用表文件名) 51540 + 435052 Bytes symbol space free 0 Warning Errors (警告性错误) 0 Severe Errors (严重性错误)
".LST"是编译之后生成的列表文件,默认情况是不输出这个文件,如果需要输出这个文件,则应该键入文件名,不能再直接回车。".CRF"是交叉引用表文件,默认也是不输出。
"Warning Errors"是编译程序发现的警告性错误,"Severe Errors"则是比较严重的错误。如果编译之后这严重错误为0,则此时磁盘上将产生一个扩展名为"OBJ"的文件,这个文件就是源程序编译而成的目标文件。
如果使用TASM(Turbo Assembly)则需要这样操作:
C:\ASM\>tasm prog7[Enter] Turbo Assembler Version 3.2 Copyright (c) 1988, 1992 Borland International Assembling file: prog7.ASM Error messages: None (严重性错误) Warning messages: None (警告性错误) Passes: 1 Remaining memory: 460k
若程序没有错误,则"Error messages"和"Warning messages"后都是"NONE";源程序被正确编译扩展名为".OBJ"的目标文件;如果程序中有错误,则TASM会报告错误数量、性质和类型,而且不产生目标文件;同样的,"警告性错误"(WARNING)不影响目标文件的生成。出现错误后应使用编辑软件修改源程序并再次编译,直至看到两个"NONE"为止。
得到正确的目标文件后,我们就可以用连接程序(LINK或TLINK)将其转换成可执行文件(.COM或.EXE文件),使用LINK.EXE的方法是:
C:\ASM\>LINK[Enter] Microsoft (R) Overlay Linker Version 3.60 Copyright (C) Microsoft Corp 1983-1987. All rights reserved. Object Modules [.OBJ]: prog7[Enter] Run File [PROG7.EXE]: [Enter] List File [NUL.MAP]: [Enter] Libraries [.LIB]: [Enter] LINK : warning L4021: no stack segment
".MAP"文件是连接程序生成的图文件,这个文件默认为不输出。".LIB"文件是子程序库文件,如果程序中某个子程序来源于一些现成的子程序库,则在连接时应明确指出库文件名。至于LINK程序产生的"Warning L4021:"是因为程序中没有明确定义堆栈段的缘故,这并不影响最续生成的可执行程序。
使用TLINK(Turbo LINK)的方法是:
C:\ASM\>tlink prog7/t[Enter] Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borland International Warning: no stack
由于程序中没有定义堆栈段,因此TLINK同样出现了一个"Warning",这也没有关系。不过"/T"参数只能在这里使用,因为PROG7可以转成".COM"类的可执行程序。对于那些具有多个段的程序因其只能以.EXE的形式存在,所以不能用"/T"参数。
经过这一步骤,我们便得到一个名PROG7.COM的文件。运行此程序,即可从喇叭中听到1000Hz的声音。