| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1369 人关注过本帖
标题:谁能解释下,我不明白?
只看楼主 加入收藏
longaiting
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-3-31
收藏
 问题点数:0 回复次数:6 
谁能解释下,我不明白?
data   segment         ; 定义数据段
      
data   ends
;----------------------------------------
extra  segment         ; 定义附加段
      
extra  ends
;----------------------------------------
code   segment         ; 定义代码段
       assume cs:code, ds:data, es:extra
start:
       mov   ax, data
       mov   ds, ax    ; 段地址  段寄存器
      
code   ends
       end   start

为什么这个end start 要放在code ends 后面呢?
搜索更多相关主题的帖子: 解释 
2008-10-14 22:49
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
为什么这个end start 要放在code ends 后面呢?
;=======================
告诉编译器,源程序要一直编译到这里 "end".而且,用"start"标识程序的入口地址,要从这个地方开始执行.
2008-10-14 23:06
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
我都是这么认为的,不知道对不对.
2008-10-14 23:07
longaiting
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-3-31
收藏
得分:0 
code ends表明代码段结束了嘛,怎么后面还有end start.呢?按照其他的一些高级语言来讲应该是end start.要放在。code ends 前面、
2008-10-15 11:57
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
[bo][un]longaiting[/un] 在 2008-10-15 11:57 的发言:[/bo]

code ends表明代码段结束了嘛,怎么后面还有end start.呢?按照其他的一些高级语言来讲应该是end start.要放在。code ends 前面、


这个问题偶一开始也搞不懂 也整错过 呵呵

这里的start   end start是告诉编译器开始和结束的位置 应该放在最后

不过 要是多个文件就得想想了



伪指令END表示源程序到此为止,汇编程序对该语句之后的任何内容都不作处理,所以,通常情况下,伪指令END是源程序的最后一条语句。

伪指令END后面可附带一个在程序中已定义的标号,由该标号指明程序的启动位置。

如果源程序是一个独立的程序或主模块,那么,伪指令END后面一定要附带一个标号;如果源程序仅是一个普通模块,那么,其END后面就一定不能附带标号。
2008-10-15 12:45
sainthzh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-10-21
收藏
得分:0 
最后end start表明该程序入口在start处。当然也可以写成 end a,但相应前面也应写为a:。
总而言之,就是起指明入口的作用,与高级语言中是有区别的。
2008-10-21 16:33
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
收藏
得分:0 
可执行程序都是由操作系统来加载执行的,操作系统需要从文件头得到程序的入口地址。
    而程序这样写就是告诉编译器:程序的入口在哪里,这个入口在程序连接时候,会被写入文件头中供操作系统加载时移交控制权使用。DOS下“.COM”型文件虽然没有文件头,但是它也是先被编译连接成“.EXE”文件的。
    END之后,你随便写什么都不会影响编译了,因为编译器认为到此程序结束。
    所以任何段都要写在END之前,END就两个作用:告诉编译器程序到此结束,告诉编译器程序入口(代码段)。

[[it] 本帖最后由 cnhanxiao 于 2008-10-22 03:56 编辑 [/it]]
2008-10-22 03:54
快速回复:谁能解释下,我不明白?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038873 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved