鱼C论坛

 找回密码
 立即注册
查看: 2430|回复: 0

[技术交流] push ds sub ax,ax push ax的作用

[复制链接]
发表于 2013-12-6 18:53:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 catch 于 2013-12-6 18:57 编辑

在汇编很多程序都可以看到这三条指令
push ds
sub ax,ax
push ax
一直不明白有什么用,今天上汇编实验,借机问了老师。
其实这三条指令是为了在程序结束时用RET指令返回DOS做准备,这是一种工作方式。
在由DOS调用,进入程序后,首先把DS的内容和0作为段地址和偏移地址入栈,以便在程序结束时用RET指令返回DOS。
如果在主程序开始时没有用上面三条指令,在堆栈段中建立返回信息,则在程序结束时就不能直接用RET返回指令,而应该使用编号为4C的功能调用返回DOS,如下所示:
mov  ax,4c00h
int  21h
这种方式用得更加普遍。
这些内容在可蹦145页的说明里面有提到。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 15:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表