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

1.5 运行第一个MASM程序

按程序设计语言界的惯例,用新学语言写的第一个程序是“Hello,world!”程序,该程序出自Brian Kernighan和Dennis Ritchie编写的The C Programming Language(Prentice Hall出版社,1978年),随后开始流行。“Hello,world!”程序的主要目标是提供一个简单的示例,让学习一种新程序设计语言的人可以使用该示例了解如何使用该语言提供的工具去编译和运行程序。

遗憾的是,在汇编语言中,编写类似于“Hello,world!”这样简单的程序却需要先学习大量的汇编知识。为了打印字符串“Hello,world!”,必须学习一些机器指令和汇编伪指令,还需要学习Windows的系统调用方法。就这一点而言,可能给刚开始使用汇编语言的程序员提出了过高的要求。当然,对于那些迫不及待想挑战并自行完成这个编程任务的人,可以参见附录A中的示例程序。

程序清单1-1中的程序shell实际上是一个完整的汇编语言程序。用户可以编译(汇编)并运行该程序,程序不产生任何输出。启动后,程序会立即返回Windows。但是,该程序确实可以运行,它将作为一种机制,向用户展示如何汇编、链接和运行一个汇编语言源文件。

MASM是一个传统的命令行汇编器,这意味着用户需要从Windows命令行提示符窗口运行MASM(用户可以通过运行cmd.exe程序打开Windows命令行)。为了执行此操作,请在Windows命令行提示符窗口或者shell窗口中输入以下内容:

C:\>ml64 programShell.asm/link/subsystem:console/entry:main

以上命令指示MASM对programShell.asm程序(注意,程序清单1-1被保存为programShell.asm文件)进行汇编,生成一个可执行文件,并将结果进行链接以生成一个控制台应用程序(用户可以从命令行运行这个应用程序),然后在汇编语言源文件的标签main处开始执行。假设汇编和链接的过程中没有发生错误,则可以通过在命令行提示符窗口中键入以下命令来运行所生成的结果程序:

C:\>programShell

Windows立即响应一个新的命令行提示符(因为programShell应用程序在开始运行之后立即将控制权返回给Windows)。