注册
登录
编程中国
搜索
标签
帮助
编程论坛
»
汇编论坛
» [求助]程序开头定义的解释
搜索
学习型 ASP/PHP/ASP.NET 主机
30
元/年
全能
ASP/PHP/ASP.NET
主机,支持月付
专业
MSSQL
数据库空间,支持月付
专业
MySQL
数据库空间,支持月付
轻松建立自己的群组,招兵买马
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
[求助]程序开头定义的解释
jdxyw2004
新手上路
帖子
21
精华
0
性别
男
注册时间
2005-9-24
个人空间
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2006-3-6 16:22
只看该作者
[求助]程序开头定义的解释
第一个不明白的地方
……
START:PUSH DS
MOV AX,0
PUSH AX
……请问为什么在程序开始就将DS入栈,还要将AX置0后再将其入栈
第二个
STACK SEGMENT STACK
DB 256(?)
STACK ENDS
……
这是一小程序的开头,可后来好像没有用到堆栈,定义堆栈是依据什么的?是不是每个程序前面都要定义一个堆栈段啊?
谢谢
UID
28475
积分
231
阅读权限
10
在线时间
0 小时
最后登录
2006-7-6
查看详细资料
TOP
p1s
中级会员
帖子
196
精华
0
威望
1
性别
男
注册时间
2005-11-4
个人空间
发短消息
加为好友
当前在线
2
#
大
中
小
发表于 2006-3-9 13:04
只看该作者
第一个问题:如果使用proc的话,就要push ds和0,以便返回DOS,这个是规定,没有太多好解释的。如果没有用proc,我们一般用mov ax,4c00h然后int 21h返回。
第二个问题,如果不涉及堆栈传递参数等操作,可以不用定义堆栈段。虽然连接的时候可能会发出警告,但是不影响执行。
《易学C++》,初学者学习C++的最佳读本。
UID
33618
积分
2156
威望
1
阅读权限
30
在线时间
19 小时
最后登录
2008-9-7
查看个人网站
查看详细资料
TOP
fanzhengqi
新手上路
帖子
2
精华
0
性别
男
注册时间
2006-3-12
个人空间
发短消息
加为好友
当前离线
3
#
大
中
小
发表于 2006-3-12 18:15
只看该作者
因为你的主程序是一个proc,由系统本身来调用,为了调用结束后能正确返回到系统,所以需要这样
UID
52183
积分
22
阅读权限
10
在线时间
0 小时
最后登录
2006-3-12
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
控制面板首页
编辑个人资料
积分记录
公众用户组