注册 登录
编程论坛 汇编论坛

盼赐教-关于过程ret使用的困惑及入门问题若干

braveboy 发布于 2007-09-21 08:28, 945 次点击
小弟初学汇编,因为是自学,所以遇到问题不少。希望能得到您的帮助。
现在会写一些简单的小程序,可是再回过头来看第一个小程序时,其中有一些小细节怎么想也想不明白。
举个例子:
datarea segment
msg db 'Hello World!$'
datarea ends
code segment
main proc far
assume ds:datarea,cs:code
start:
mov ax,datarea
mov ds,ax
lea dx,msg
mov ah,9
int 21h
exit:
mov ah,4ch
int 21h
main endp
code ends
end start
我开头是像上面这样的写。
但当我把退出功能写成了ret的时候,如下。
datarea segment
msg db 'Hello World!$'
datarea ends
code segment
main proc far
assume ds:datarea,cs:code
start:
mov ax,datarea
mov ds,ax
lea dx,msg
mov ah,9
int 21h

ret
main endp
code ends
end start

Hello World!就不会正常的显示了。
那么什么时候可以用ret呢??
还有一个简单的问题就是,我不知道什么时候该用堆栈,同时因为没有汇编的编程经验,现在用起寄存器来非常的混乱。我想哪天因为这些上面出一点问题,一定是非常能理解的事,可是我想早一点发现这些问题并解决它们。所以非常期待着您的帮忙了。
4 回复
#2
无理取闹2007-09-21 12:06
你没有东西入栈又为什么向外弹呢
#3
braveboy2007-09-21 13:02
能说的详细一点吗??
#4
无理取闹2007-09-21 13:19
RET用来在子程序调用结束后返回的
你放在那里是什么意思啊?
#5
braveboy2007-09-21 14:48
回复:(braveboy)能说的详细一点吗??
非常感谢,我懂你的意思了。
1