|  | 
 
| 1、编译文件: 
 ![]() 其中,     Source listing [NUL.LST]: _
 编译程序提示输入列表文件名称,这个文件是编译器将源程序编译为目标文件过程中产生的中间结果。可以让编译器不生成这个文件。
 Cross_reference [NUL.CRF]: _
 编译程序提示输入交叉引用文件的名称,这个文件同列表文件一样,是编译器将原程序编译为目标文件过程中产生的中间结果。可以让编译器不生成这个文件。
 
 2、链接文件
 
 ![]() 
 .MAP 是镜像文件,可以忽略生成
 .LIB  是库文件。库文件中包含了一些可以调用的子程序,如果程序中调用了某一个苦文件中的子程序,就需要在链接的时候,将这个库文件和我们的目标文件链接到一起,生成可执行文件。
 
 3、简捷的编译连接过程
 编译:
 masm c:\test;           (注意,语句后面有一个分号)
 这样,就会在 masm.exe 所在的目录下生成目标文件 test.obj,并在编译的过程中自动忽略中间文件的生成。
 
 连接:
 link test;
 这样,在当前路径生成 test.exe 。自动忽略中间文件的生成。
 
 4、Debug 和 MASM 对汇编指令不同的处理
 在Debug中,如 mov ax,[0] 类似指令,表示将 ds:0 处的数据送入 ax 中。
 在汇编原程序中, mov ax,[0] 被编译器当作指令 "mov ax, 0” 处理。
 假如要原程序中实现将内存 2000:0, 2000:1, 2000:2, 2000:3 单元中的数据送入 al,bl,cl,dl 中,我们可以将偏移地址先送入 bx 寄存器中,用 [bx] 的方式来访问内存单元。如可以这样访问 2000:0 单元:
 mov ax,2000h
 mov ds,ax
 mov bx,0
 mov al,[bx]
 上面的方法虽然可以,但比较麻烦,更简便的为:
 mov ax,2000h
 mov ds,ax
 mov al,ds:[0]
 | 
 |