回 帖 发 新 帖 刷新版面

主题:菜鸟求助

stsg segment stack 's'  
     db 64 dup(?)
stsg ends
data segment 
sum dw ?
msg db 'hello word!!$'
data ends
code segment
main proc far
     assume cs:code,ds:data,ss:stsg
     [color=FF0000]push ds
     xor ax,ax
     push ax[/color]
     
     mov ax,data
     mov ds,ax
     mov ah,9
     lea dx,msg
     int 21h
    
     ret
main endp
code ends
     end main

请问main过程开头红色的代码有什么用啊,我去掉后能通过编译但程序不能正常运行,高手指点一下啊

回复列表 (共1个回复)

沙发

红色的代码 和 结尾 的ret 对应,
用来结束程序。
...
push ds
xor ax,ax
push ax
.
.
.
ret
....
这样写,我完全看不出有 什么好处,
-----------------------------------------
应该这样写更加合理:
......
mov ax,@data
mov ds,ax
.
.
.
mov ah,4ch     ;结束,可以修改al设置返回码
int 21h
......

我来回复

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