push ds mov ax,0 push ax 是什么意思?

push ds
mov ax,0
push ax

好象在每一个程序的开始都要有这么一段,据说是为了让程序返回DOS用的,我实在不知道是怎么一回事,有谁能帮忙解释一下?

PUSH 和POP 是堆栈操作的指令
PUSH 是进栈,起现场保护作用,先将SP+1,再保存操作
POP 是出战,恢复现场,先将SP-1

MOV 是传输指令
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-12-14
先将寄存器ds中的数据入栈,再将ax的值赋为0,再将ax入栈.就是这个过程!

push ds mov ax,0 push ax 是什么意思?
MOV 是传输指令

程序开头push ds mov ax,0 push ax 什么意思
这三条是是压栈指令,把返回操作系统的入口压入堆栈,使用这方法,你的程序结束的地方一定有一条返回指令,而MOV AH,4CH INT 20H 这种方法是通过DOS调用返回操作系统,他们的目的相同,只是用的方法不同,所以只要选一个就可以,现在用的比较多是后面一种 ...

汇编中push ds mov ax,0 push ax为什么就是返回dos操作系统?我想更深 ...
据高人说这是因为程序在DOS中被装载的时候,程序最开始的256个字节是PSP区域(这里面是与系统交互的数据),刚开始DS自动指向PSP区域开头。而PSP区域一开头的地方存放着返回DOS系统的指令。所以以下代码完成返回DOS的功能 push ds mov ax,0 push ax ...ret ...

...PUSH DS MOV AX,0 PUSH AX 这三段有什么作用?
在程序的开始,在堆栈中压入了两次,分别是DS和0;在程序的末尾,使用了RET,就用到了压入的内容,这样就能结束程序,安全的返回DOS。想要弄清这几个操作,就必须了解“磁盘操作系统”,即DOS才行。这已经不是“汇编语言”的内容了。

汇编push ax 有什么用?
这个是为了最后返回,push ax 是将偏移地址,其实也就是0压入堆栈,以便以后返回,push ds是将段地址压入堆栈。这一段代码等效于 push ah,4ch int 21h

汇编ret push
BEGIN:PUSH DS MOV AX,0 PUSH AX ………RET START ENDP 那时候,DOS的版本很低,DOS还没有提供4CH号DOS功能调用,结束程序只能用INT 20H完成。而 INT 20H结束程序要能正确完成,有一个前提条件:要求执行时CS指向程序段前缀(PSP)所在的段地址。程序将主程序定义成远调用过程(proc far),目...

汇编考试的一些问题:
汇编语言编写的程序,是在 DOS 环境下运行的。运行结束后,还应该返回 DOS。在程序的一开始,写入这些指令,目的是为了使用 RET 指令退出程序,返回 DOS。但是,现在多用 MOV AH, 4CH INT 21H 退出程序,上述代码,就没有用了。

汇编语言这段指令是什么意思呀?懂的来越详细越好
PUSH CS POP AX ADD AX,1000 PUSH AX POP DS ;以上设定数据段基址 MOV SI,0000;指定段首 MOV CL,0F ;CL赋10 XOR AX,AX ;AX清零 010E:MOV [SI],AL;AL值送数据段[SI]指定处 INC SI;SI+1->SI INC AL DEC CL ;CL减1 JNZ 010E ;以上将0~F依次存入数据段...

汇编语言问题
PUSH DS ;从这里开始的三条指令,是在堆栈中形成一个指向PSP首址的远指针 MOV AX, 0 PUSH AX ... ; 这里是程序主体代码 RET ;这条返回是远返回 START ENDP 这种框架,是一种固定的格式。详细原理可以参阅相关资料。它涉及到DOS装载EXE程序的PSP结构,以及低版本DOS的INT 20H...

汇编语言两条指令 push ax push ds 执行后结果是什么
push ds sub ax,ax push ax 这三条语句是为后面的ret做准备,ret即执行pop ip, pop cs,执行完ip的值为0,cs的值为ds。程序转移到程序PSP的起始地址,起始地址的前两个字节放的是int 20指令,用于返回DOS。不过不推荐这样做,现在常用 mov ax 4c00h int 21h;终止程序,返回值为al....

相似回答