※ 利用文书处理程式建立一个 SMILE.ASM 的原始码档案。
※ ASM 档案中的空白行可帮助您分清楚程式的架构,便於阅读。
※ MASM 会将所有的数值假设为十进位,而 DEBUG 则使用十六进
位;所以在原始码中,我们必须加上 h,以代表十六进位。
※ 若是以字母开头的十六进位数字,则还必须在字母前加个 0,
以表示它是数字。
原始程式码 DEBUG 程式prognam segment
assume cs:prognam
mov dl,1 mov dl,1
mov ah,2 mov ah,2
int 21h int 21
int 20h int 20
prognam ends
end
※ 原始程式码新增了四列叙述∶
※ prognam segment 与 prognam ends 是成对的,用来告诉 MASM 及
LINK,此程式将放在一个称为『PROGNAM』(PROGram NAMe) 的
『逻辑区段』内;其中区段名称(PROGNAM)可以任取,但其
位置必须固定,且两个区段名称必须相同。
※ assume cs:prognam 必须在程式的开头,用来告诉组译器,此
程式所在区段的位置放在 CS 暂存器中。
※ end 用来告诉 MASM,程式到此结束。
※ 要产生 COM 档案的所有原始程式码都需含这四列,且必须依
相同的次序及位置出现。
※ 以 MASM.EXE 组译 ASM 档案时,不可打入附属档名 ASM。
※ 组译器会要求您输入 OBJ 档案、表例(LST)档案及对照(CRF)
档案(供除错时参考用)等档案名称,您只要按 Enter 键,
则表示要使用其预设名称。
※ NUL 表示没有档案,所以最後组译的结果只产生 SMILE.OBJ 。
1.请输入 MASM SMILE
2.请按 Enter 键三次。
Microsoft (R) Macro Assembler Version 5.10
Copyright (C) Microsoft Corp 1981, 1988. All rights reserved.
Object filename [SMILE.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
50162 + 403867 Bytes symbol space free
0 Warning Errors
0 Severe Errors
※ ∶警告错误,表示组译器对某些事情不了解,
不过,尚不致严重到使程式组译的结果发生
错误。
※ ∶严重错误,会造成程式无法正常执行的错误
※ 在使用 LINK 之前,必须将错误修正。
※ OBJ 档案中包含的是组译後的二进位结果,它还无法被 DOS
载入记忆体中加以执行,必须先加以链结(Linking)。
※ 以 LINK 将 OBJ 档案(SMILE.OBJ)链结成 EXE 档案(SMILE.EXE)
时,不可使用附属档名 OBJ。
1.请输入 LINK SMILE
2.请按 Enter 键三次。
Microsoft (R) Overlay Linker Version 3.64
Copyright (C) Microsoft Corp 1981, 1988. All rights reserved.
Run File [SMILE.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
LINK : warning L4021: no stack segment
※ [.LIB]: ∶程式库,是一些程式的集合,在特殊的情况下,
您可将它与您的程式合并使用。
※ 由於 COM 档案并不使用堆叠段,所以错误讯息 "no stack
segment" 并不会影响程式的正常执行,只是增加我们的紧
张罢了。
※ 使用 EXE2BIN 将 EXE 档案(SMILE.EXE),转换成 COM 档案
(SMILE.COM)时,前者不必使用附属档名,而後者则必须指定
附属档名,否则,会产生 BIN 档案(SMILE.BIN)。
※ 其实 BIN 档案与 COM 档案是完全相同的,但由於 COMMAND.COM
只认识 COM、EXE 及 BAT 档案,所以 BIN 档案无法被正确执行。
1.请输入 EXE2BIN SMILE SMILE.COM
※ 现在,磁片上应该有 SMILE.COM 档案了,您只要在提示符号
A> 下,直接输入档案名称 SMILE ,就可以执行这个程式了。
1.请执行本程式。