+ -
当前位置:首页 → 问答吧 → masm连接错误:Segment reference in fixup record

masm连接错误:Segment reference in fixup record

时间:2008-01-29

来源:互联网

找了一些资料,说是masm的版本问题。大意是:用“32位link”连接“16位obj文件”。
但是我的masm版本:Microsoft (R) Macro Assembler Version 6.15.8803
  link版本:Microsoft (R) Incremental Linker Version 6.00.8168

有人说是连接参数设置不对,该怎么修改?

作者: vvincol   发布时间: 2008-01-29

那你的程序是什么类型的? 如果是 dos16 类的, 就只能用 Masm5 或 Masm6 附带的 Link.exe 程序进行链接, 不能用 Masm32 中的 Link.exe; 如果是 Win32 类的程序, 那应在编译时加上 /coff 选项

作者: zara   发布时间: 2008-01-29

我就是在cmd命令下编译“16位汇编源程序”。

问题如下:
1、我装的是masm6.11,请问masm6.11是masm32吗?
2、在cmd下,可以使用masm命令编译源文件,生成obj文件,但是link却通不过,就是那个(Segment reference in fixup record)错误,这是为什么? 难道是masm可以编译16位,link只能连接32位吗?我听说32位link也可以连接16位汇编obj的啊!

作者: vvincol   发布时间: 2008-01-29

从顶楼的程序的版本信息来看, 应该是 32 位类的编译链接程序, 不是简单的 16 位的. 
Masm611 看起来是个比较奇怪的版本, 不过我没使用过. 
Masm32 类的软件, 其中的编译程序 ml.exe 是可以编译 dos16 类的程序的, 当然也可以 Win32 位类 (一般需要加 /coff 选项); 但链接程序 link.exe 只能创建 Win32 类的程序, 不能创建 dos16 类的

作者: zara   发布时间: 2008-01-29

有点难度哦

作者: UltraBejing   发布时间: 2008-05-01

可以先编译出obj,然后用link16来link就可以了。一直enter吧,我刚才是这样做的。可以生成16位的exe。

作者: lo_529   发布时间: 2011-11-13

引用楼主 vvincol 的回复:
找了一些资料,说是masm的版本问题。大意是:用“32位link”连接“16位obj文件”。
但是我的masm版本:Microsoft (R) Macro Assembler Version 6.15.8803
link版本:Microsoft (R) Incremental Linker Version 6.00.8168

有人说是连接参数设置不对,该怎么修改?

ml.exe /c yourfilename.asm
link16 yourfilename;
(分号不要丢了)

作者: gsy999   发布时间: 2011-11-13