END的使用方法???

jacky_shen 2004-06-30 10:15:28
END START
后面加标识和不加标识有区别吗?
END 应该如何使用???
...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacky_shen 2004-06-30
  • 打赏
  • 举报
回复
根据 dunkel(内心和夜 哪个黑) 说,我理解下来是:
END 后面的标识决定整个程序起点,就是说是从标识这里开始的第一条指令为起点。
如果没有标识则说明,从第一段开始(不管是什么段)。

我的理解是否正确?
dunkel 2004-06-30
  • 打赏
  • 举报
回复
hcj2002(流浪者) 的说法不对吧. END START 后面的 START 绝对不仅仅是为了便于阅读而存在的, 它是明确地告诉编译链接程序, 最后生成的执行文件应该从哪里开始运行. 如果你的程序是从一开始就直接运行的, 当然可以不加; 但是, 如果不是呢? 比如, 在代码段前面定义了数据段, 你不加上那个代码段中的开始运行的标号试试最后的生成的代码是不是还是从你要求的地方开始的! 不是, 它会是从数据段就开始了, 把数据当做代码来执行了. 至于这样的后果, 就要看你的那些数据的内容了, 有些可能没有什么大的障碍, 有的可能会不堪设想!
hcj2002 2004-06-30
  • 打赏
  • 举报
回复
没有什么区别


遇到end时,就认为是程序结束,加上START只是便于阅读。

ENDS----------------结束段定义
ENDP----------------结束过程定义
.
.
.
kugou123 2004-06-30
  • 打赏
  • 举报
回复
END不仅仅是结束,同时后面跟的标号也指定了程序开始的地方。
njzsj 2004-06-30
  • 打赏
  • 举报
回复
dunkel(内心和夜 哪个黑) 说得精辟呀!
dunkel 2004-06-30
  • 打赏
  • 举报
回复
实际上不是的, 当没有通过 END 语句来指定程序开始运行的地方时, EXE 文件头中的 CS:IP 的值是 0000:0000, 这个会指向哪里? 编译程序不会替你的程序设想一个起始地址的, 因为, 你的这个文件里可能就没有起始地址, 它只是最后程序里的一个模块, 最终程序的起始运行地址是由其他文件里定义的. 而且, 在编译阶段, 编译程序无法知道你的程序就是仅此一个模块, 还是最后会由多个模块链接而成. 其实, 即使是同一个文件, 也可能会被用在不同的场合. 所以, 如果编译程序自作主张地替没有指定起始运行点的模块假设一个的话, 就有可能在最后的多模块链接时出现指定了多个起始运行点的矛盾! 虽然, 开始写的汇编程序, 多是单模块的, 这也只是多模块的一个简化形式, 规则还是需要按照多模块来进行的.
fire_up 2004-06-30
  • 打赏
  • 举报
回复
从代码段开始,显然不可能从数据段开始

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧