回 帖 发 新 帖 刷新版面

主题:一简单汇编程序,出现警告.

;将字符串输出到屏幕中
datarea segment
string db 'Hello Tianfa!', 13, 10, '$'
datarea ends


prognam segment
;Begin the main program!

main proc far
assume cs:prognam, ds:datarea

;初始化
start:
  push ds
  sub ax, ax
  push ax
  
;将数据保存到DS中
  mov ax, datarea
  mov ds, ax
  
  lea dx, string    ;获得字符地址
  mov ah, 09
  int 21h
  ret

 main endp      
 prognam ends 
       end start     ;结束
  ;当程序进行link的时候,程序出现错误:
  ;Link: warning L4021: no stack segment.
  ;这个错误是什么意思呢,应该怎么解决?  

回复列表 (共5个回复)

沙发

它是说你没有设置栈,你不用栈这个就没有什么错误但是你用了,所以的设置一个栈段。   
  但是我不懂,你string的那个   13 ,10 是什么意思 。还有哪个初始化有什么作用。

板凳

这个是一个警告,说明你的程序内未使用栈.
10,13是回车和换行
这个警告在你没有栈段的时候都会出现.
当你PUSH的时候数据压在数据段的未位.
应该 是这样吧

3 楼


不是这样吧!是你的程序没有设置代码段吧,还有你这程序也不能实现所要求功能呀,循环段都没有

4 楼

设置了代码段 只是段名用了progame 
你堆栈段没定义

5 楼

这是一个警告 说明没有  stack segment

在你的程序中没有使用stack segment

运行结果不受影响

我来回复

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