masm32 9.0 编译、连接问题

来源:互联网 发布:弗洛伊德算法手工计算 编辑:程序博客网 时间:2024/06/07 23:58

我使用masm32 9.0 的qeditor编写了下面小程序:

 

.model small

.stack 200h

.data
      strMsg db 'hello world!',13,10,'$'

 

.code 
start:
   mov ax, @data
   mov ds, ax
 
   mov dx, offset strMsg

   mov ah, 09H
   int 21h
 
   mov  ah, 4ch
   int 21h
end start
 

点击 Projects-->Assemble ASM file 报错:

error A2006: undefined symbol : DGROUP

 

解决:

masm编译器ml.exe有两个选项
/coff 和 /omf
dos程序 要指定参数 /omf

win32程序 要指定 /coff

masm 9.0 默认的参数是/coff。

 

连接时使用命令 link hello.obj。又报错,

LINK:error:Segment reference in fixup record

fatal error LINK1123:

 

真不容易!

解决:原来linker有两个版本。在bin目录下有两个文件:

link.exe:        Ms Incremental Linker,   连接Dos程序;

link16.exe:    Ms Segmented Executable Linker, 连接win32程序。