国电南瑞5位数密码:关于DOS程序的退出(汇编)

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 06:20:08
push ds
xor ax,ax
push ax

以上3条指令是干啥的,与退出有关系吗?

疑惑ing

dos 程序启动时,dos会为程序建立psp 段,并且让ds 指向该段,ds:0处有一条指令int 20h,它可以正确返回dos,但前提是执行该指令时cs必须指向psp段,因此才有下面指令:
push ds
xor ax,ax
push ax
...........
retf
注意是retf,如果不想用retf,而用ret 的话,应该将proc 定为far,才能正确返回。否则只会将0 弹到 ip 中,实际上相当于执行 jmp 0,又回到程序开始处,直到堆栈溢出。
因此,一般使用下面指令退出,不用操心psp了。
mov ax,4cxxh (xx为退出码)
int 21h