回 帖 发 新 帖 刷新版面

主题:[讨论]helloworld求助

小弟的第一个汇编程序
我用的是masm6.11
程序如下:
.386
.model flat ,stdcall
option casemap:none
includelib msvcrt.lib
printf PROTO C:ptr sbyte,:vararg
.data
szMsg    byte "Hello World!",0ah,0
.code
start:
    invoke printf, offset szMsg
    ret
end    start

我在命令提示符里打:ml/coff hello.asm
然后显示这个:
Object Modules [.obj]: hello.obj
Run File [hello.exe]: "hello.exe"
List File [nul.map]: NUL
Libraries [.lib]:
Definitions File [nul.def]:
hello.obj : fatal error L1101: invalid object module
Object file offset: 1 Record type: 4c

但还是生成了.obj文件 我再打:link/subsystem:concole asm.obj
显示这个:LINK : warning L4017: /subsystem : unrecognized option name; option ignored
Run File [hello.exe]:

请问这是什么情况?

回复列表 (共8个回复)

沙发

win32 asm 使用的 masm 版本最好不要低于 6.14

并且你汇编和连接参数有误
试试这样:

ml /c /Coff /Cp filename.asm
link /subsystem:console filename.obj

板凳

好 我回去再试试
谢谢了先

3 楼

ml没问题了 但是link还是有问题
LINK : warning L4017: /subsystem : unrecognized option name; option ignored
Run File [hello.exe]:
List File [nul.map]:
Libraries [.lib]:
Definitions File [nul.def]:
LINK : warning L4051: msvcrt.lib : cannot find library
Enter new file spec:
LINK : warning L4021: no stack segment

hello.obj(hello.asm) : error L2029: '_printf' : unresolved external
找不到msvcrt.lib?这个不是windows自带的吗?

4 楼

你还是重新下 masm32 包吧

你的汇编器和连接器都不对

5 楼

晕~
只有这个办法了吗?

6 楼

是的!!

7 楼

呵呵 换成了masm32果然好使 console版和windows版的hello world都成功了
谢谢你了~

8 楼

???????????????????????????
看不懂啊,我只会win32的汇编
.data
szHello  db 'hello world',0
.code
start:
invoke MessageBox,NULL,offset szHello,NULL,MB_OK
invoke ExitProcess,NULL
end start

我来回复

您尚未登录,请登录后再回复。点此登录或注册