64位汇编语言的编程艺术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 MASM程序的结构剖析

一个典型的(并且可以独立运行的)MASM程序如程序清单1-1所示。

程序清单1-1 一个简单的shell程序(programShell.asm文件)

;注释是从一个分号字符开始到行尾的所有文本。

;“.code”伪指令指示MASM该指令后的语句位于保留给机器指令(代码)的内存段(section)中。

.code

;以下是“main”主函数的定义。

;(本示例假定该汇编语言程序是一个独立可运行的程序,拥有自己的main主函数。)

main PROC

;此处包含机器指令

ret;返回到调用方

main ENDP

;END伪指令标记源代码文件的结束。

END

典型的MASM程序包含一个或多个段,段表示内存中出现数据的类型。这些段以MASM语句(例如“.code”或“.data”)开始。变量和其他内存值均位于数据段(data section)中,汇编语言过程中的机器指令位于代码段(code section)中。在汇编语言源文件中,不同的段是可选的,因此特定的源文件中并非包含每种类型的段。例如,程序清单1-1只包含一个代码段。

在程序清单1-1中,“.code”语句是一条汇编伪指令。汇编伪指令的功能是指示MASM有关程序的一些信息,并不是实际的x86-64机器指令。具体而言,“.code”伪指令指示MASM将其后面的语句分组到一个特殊的内存段中,而这个内存段是专门为机器指令预留的。