首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

Masm程序结构解析解决方法

2012-03-05 
Masm程序结构解析本人初学汇编,见到如下两种结构代码,不理解其它结构,求详解.谢谢.Assembly code.codemain

Masm程序结构解析
本人初学汇编,见到如下两种结构代码,不理解其它结构,求详解.谢谢.

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


Assembly code
CODE         SEGMENT                                          ASSUME    CS:CODE,SS:STACK,DS:DATASTART:                     ;......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 ,来开始执行,那就乱套了

热点排行