【冰天雪地手执百分求救】最简单的Hello,World程序也编译不过?

AvalonXP 2006-10-16 11:22:47
data SEGMENT
msg DB 'Hello, World!$'
data ENDS

code SEGMENT

ASSUME CS:code,DS:data

start:MOV AX,data
MOV DS,AX
lea dx,msg
mov ah,9h
int 21h

MOV AX,4C00h
INT 21h
code ENDS
END start

----------------------------
这段程序,简单得不能再简单了。
使用Masm5就是编译不过,
提示错误:error 2000: Stack overflow
晕!重装了masm5还是一样的错误。这段程序应该没有问题的,是不是编译环境需要什么设置?

...全文
289 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
limaolinghu 2006-10-17
  • 打赏
  • 举报
回复
给你发了个6。15 试试吧
arice1983 2006-10-17
  • 打赏
  • 举报
回复
我用masm611

结果是warning L4021:not stack segment

还是能运行的
大熊猫侯佩 2006-10-17
  • 打赏
  • 举报
回复
masm 微软官方版可以到 www.aogosoft.com 下载到
microyzy 2006-10-17
  • 打赏
  • 举报
回复
data看成msg啦,直接去掉这两句吧,或者把data改成msg试试,在windows下我有时发现ds不是指向所希望的数据段,我也不知道啥原因:(

另外,你是什么系统啊,win xp?
AvalonXP 2006-10-17
  • 打赏
  • 举报
回复
程序肯定是没有问题的
AvalonXP 2006-10-17
  • 打赏
  • 举报
回复
to mydo(侯佩|hopy)
不是warning,是error。我也晕了^_^
麻烦您发一份masm6.11到 lizhaozhuo (at) people.com.cn好吗?
我想诊断一下问题所在。

麻烦了!再次感谢大家!
microyzy 2006-10-17
  • 打赏
  • 举报
回复
start:MOV AX,data
MOV DS,AX

这两句多余了,前面不是指定了ds是数据段吗,如果要保留,也些错了,改一下:
start:MOV AX, seg data ;取段地址
MOV DS,AX
AvalonXP 2006-10-17
  • 打赏
  • 举报
回复
先感谢大家的回复

to ctu_85(花开花落两由之)
试了,不行

to limaolinghu(**************************************************)
我装了6.15,跟原来的Masm32(内置的Masm6.14)一样的错误
大熊猫侯佩 2006-10-17
  • 打赏
  • 举报
回复
我在 2000 + sp4 下使用 masm611 没有问题
大熊猫侯佩 2006-10-17
  • 打赏
  • 举报
回复
error 2000: Stack overflow

?????
是 warning 2000:Stack overflow 吧?
这个不影响的。其实已经编译成功了。
limaolinghu 2006-10-17
  • 打赏
  • 举报
回复
6.15可以编译通过
ctu_85 2006-10-17
  • 打赏
  • 举报
回复
stack segment stack
db 1024 dup(0)
stack ends
前面加这一段代码侃侃
我没编译器
只是个建议
因为LINK : warning LNK4044: unrecognized option "z2"; ignored
LINK : error : Segment reference in fixup record
hello2.obj : fatal error LNK1123: failure during conversion to COFF: file invali
BAYNPU 2006-10-17
  • 打赏
  • 举报
回复
源程序是没错,汇编也能通过,建议你使用较高汇编版本MASM6.15。
microyzy 2006-10-17
  • 打赏
  • 举报
回复
使用Masm5的始终无法成功,
发现是masm一启动,哪怕就用masm.exe 后面不接文件名,也是显示
“error 2000: Stack overflow ”


==================================
那肯定不是程序的问题了,要么是你下的masm有问题,就是和你的系统有关,按mydo给的链接,重新下一个masm看看

说说你的软件环境
AvalonXP 2006-10-17
  • 打赏
  • 举报
回复
使用Masm5的始终无法成功,
发现是masm一启动,哪怕就用masm.exe 后面不接文件名,也是显示
“error 2000: Stack overflow ”

如果谁能解决,告诉我,
我另开一帖放100分,你解答、我立马揭帖
AvalonXP 2006-10-17
  • 打赏
  • 举报
回复
使用masm 6.11 版本的编译成功了
原来是这种8086的dos汇编必须要用5.0的link
因此必须ml /c (只汇编不链接)
然后link5.exe
不能一气呵成地ml,否则就是上面的错误
AvalonXP 2006-10-16
  • 打赏
  • 举报
回复

使用Masm32编译,也是错的。错误信息如下:
D:\masm32\BIN>ml.exe hello2.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: hello2.asm
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/z2
"hello2.obj"
"hello2.exe"
NUL
LINK : warning LNK4044: unrecognized option "z2"; ignored
LINK : error : Segment reference in fixup record
hello2.obj : fatal error LNK1123: failure during conversion to COFF: file invali
d or corrupt
是不是这种8086的程序不能用Masm32来编译啊?

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧