专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 汇编语言

Masm程序结构解析解决方法

发布时间:2010-06-14 15:51:49 文章来源:www.iduyao.cn 采编人员:星星草
Masm程序结构解析
本人初学汇编,见到如下两种结构代码,不理解其它结构,求详解.谢谢.

Assembly code

.code

main proc
    ;......
main endp

end main     ;上面已经有了"main endp",为什么还有一个end main? begin end不匹配了啊.



Assembly code

CODE         SEGMENT                            
              ASSUME    CS:CODE,SS:STACK,DS:DATA
START:       
              ;......

CODE          ENDS
              END       START    ;这一句也不好理解.code与上面的code segment, end start 与上面的start,是交错的,如何理解??


另外,为什么会有两种不同的结构?


------解决方案--------------------
两种不同的定义段的方法,第一种是段的简化定义方式,第二种是段的完整定义。都是属于模块化程序设计范畴吧,第一种定义方法是程序员比较方便的定义段,而第一种方法相对第一种较为复杂了些。新版的masm都支持这两种方式。
------解决方案--------------------
.code是一种简化定义,与
CODE SEGMENT
ASSUME CS:CODE
类似;
END START表示标号start是入口地址,此时程序结束;
main proc
;......
main endp
是主程序,end main表示结束开始地址为main的程序;
------解决方案--------------------
.code

main proc
;......
main endp

end main ;上面已经有了"main endp",为什么还有一个end main? begin end不匹配了啊.

你是从c转过来的,我开始也不明白。

end main不需要匹配,end表示程序结束,后面跟的main指定程序的入口。

两种不同的定义段的方法,第一种是段的简化定义方式,第二种是段的完整定义。

1楼说得对。

简化定义方式比较方便,但只能一个程序段,不能定义多个程序段,功能有限。

看Brey的<intel 微处理器>




------解决方案--------------------
masm的较高版本比如6,才会支持第一种写法


end main 指定的程序代码执行时的入口地址是main标志的位置


比如代码为

.code

sub1 proc ;子程序
;......
sub1 endp

main proc ;主程序
;......
main endp

如果不用end main 指定的程序代码执行时的入口地址是main标志的位置,而从代码段的首地址,也就是sub1 proc ,来开始执行,那就乱套了

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: