盼赐教-关于过程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
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呢??
还有一个简单的问题就是,我不知道什么时候该用堆栈,同时因为没有汇编的编程经验,现在用起寄存器来非常的混乱。我想哪天因为这些上面出一点问题,一定是非常能理解的事,可是我想早一点发现这些问题并解决它们。所以非常期待着您的帮忙了。