Windows 32位 汇编语法 [2] 程序入口、注释与换行

来源:互联网 发布:康斯坦茨大学 知乎 编辑:程序博客网 时间:2024/05/21 17:43

@1.程序结束与程序入口:

    汇编源程序中没有一个main函数,程序员可以指定从代码段的任何一个地方开始执行,这个地方由程序最后一句end语句来指定:

end    [开始地址]

这句语句同时表壳源程序结束,所有代码必须在end语句之前,例如:

end    start

上述语句指定程序从start这个标号开始执行。

    但是一个源程序不必非要指定入口标号,这时候可以把开始地址忽略不写,这种情况发生在编写多模块程序的单个模块的时候。当分开写多个程序模块时,每个模块的源程序中也可以包括.data,.data?,.const和.code段,结构就和上面的Win32 Hello World一样,只是其他模块最后的end语句必须不带开始地址。当最后把多个模块链接在一起的时候,只能有一个主模块指定入口地址,在多个模块中指定入口地址或者没有一个模块指定 了入口地址链接程序都会报错。

@2.注释和换行

举例——注释使用 ; 号

    ;这里是注释

    call    _PrintChar                                      ;这里是注释

    szChar db 'Hello, World;', odh, oah      ;world后面的分号不是注释,后面的才是

当源程序的某一行过长,不得于阅读的时候,可以分行书写,分行的办法是在一行的最后用反斜杠(\)做换行符,如

    invoke MessageBox,NULL,offset szText, offset szCaption, MB_OK

    可以写为:

    invoke MessageBox\

                NULL,\

                offset szText,\

                offset szCaption,\

                MB_OK