在Microsoft Visual C++中使用MASM(未完)

来源:互联网 发布:32位64位系统区别 知乎 编辑:程序博客网 时间:2024/05/16 10:34

原文地址:Getting Started with MASM,在翻译过程中,我省略了一些无关紧要的内容.而且有些句子我没按原文翻译,而是根据我的理解翻译的.下面是译文

 


如果你最近购买了《Intel汇编语言程序设计》第五版,你可能想安装相关的软件以便开始学习,这个教程将告诉你如何做。

  1. 构建32位应用程序必要的安装
  2. 构建16位应用程序
  3. 设置工程属性
  4. 创建新工程
  5. 生成资源列表文件
  6. 使用Visual Studio debugger
  7. MASM语法着色
  8. 使用批处理文件进行编译、连接与调试

构建32位应用程序必要的安装

 

首先,你必须安装Visual Studio或者Visual C++ Express:

  1. 如果你安装的是Visual Studio 2008 Professional或者Team Suite,这些产品已经自带了MASM9.0
  2. 如果你安装的是Visual C++ 2008 Express Service Pack 1, 它包含了MASM 9.0.
  3. 如果你安装的是Visual C++ 2005 Express, 你必须下载MSAM8.0

下载 Microsoft Express Edition

  • Visual C++ 2008 Express
  • Visual C++ 2005 Express

请在安装的过程中记录C++编译器的安装位置,稍后这个信息将被用到。

你可以通过在Visaul Studio安装目录下的/vc/bin文件夹下寻找ml.exe来验证MASM是否被成功安装,
例如:c:/Program Files/Microsoft Visual Studio 9.0/vc/bin

下载并安装Microsoft Assembler 8.0: 访问MASM 8.0下载站点.请按照微软页面上的提示进行下载与安装。注意:这个版本的MASM仅适用于visual c++ 2005速成版。

 

下一步:安装书中的例子

点击此链接下载最新的链接库与例子。下载得到的是一个自解压文件,默认的解压位置为c:/Irvine ,除非你有什么特殊的用途,请不要修改路径。如果你准备修改安装路径,请阅读修改工程属性s.

下列文件将会被拷贝至c:/Irvine directory下:

Filename

Description

GraphWin.inc

Include file for writing Windows applications

Irvine16.inc

Include file used with the Irvine16 link library (16-bit applications)

Irvine16.lib

16-bit link function library used with this book

Irvine32.inc

Include file used with the Irvine32 link library (32-bit applications)

Link16.exe16-bit linker

Irvine32.lib

32-bit link function library used with this book

Macros.inc

Include file containing macros (explained in Chapter 10)

SmallWin.inc

Small-sized include file, used by Irvine32.inc

make16.batBatch file for building 16-bit applications

VirtualKeys.inc

Keyboard code definitions file, used by Irvine32.inc

 

Examples 子目录下包含了书中所有的例子。

 

建立一个简单的汇编语言程序

 

将Tab大小设置成5

启动Visual C++速成版,在Tools菜单下选择Options 。依次选择 Text Editor, All Languages, Tabs

设置Tab大小

 

将Tab大小设置成5。

打开工程

在Visual Studio和Visual C++ Express中,一个汇编源文件必须被放置在一个叫工程的容器中。一个工程包含了相关的配置信息,如:汇编器、连接器的位置及必要的库。一个工程有属于自己的文件夹,相关的文件被放置其中。我们已经在c:/Irvine/Examples 下创建了一个示例工程,名字叫Project_Sample

按顺序执行下列步骤:

  1. 启动Visual Studio 或 Visual C++ Express.
  2. 如果你使用的是Visual Studio, 在File菜单下选择Open Project,如果你使用的是Visual C++ Express,选择Open-->Project/Solution.
  3. 浏览至c:/Irvine/Examples/Project_Sample 文件夹并选择 Project.sln.
  4. Solution Explorer窗口中, 双击main.asm打开。 (Visual Studio如果弹出对话框询问编码方式,点击OK即可。)

在编辑窗口中,你应该看到如下程序:

TITLE MASM Template(main.asm); Description:; ; Revision date:INCLUDE Irvine32.inc.datamyMessage BYTE "MASM program example",0dh,0ah,0.codemain PROC    call Clrscr    mov  edx,OFFSET myMessage    call WriteString    exitmain ENDPEND main

 

 

编译并链接程序

编译并链接例子程序:

  • 如果你使用的是Visual C++ Express, 在Build菜单下选择Build Solution
  • 如果你使用的是Visual Studio, 在Build菜单下选择Build Project

在屏幕底部的输出窗口中,你会看到和下面类似的信息:

1>------ Build started: Project: Project, Configuration: Debug Win32 ------1>Assembling...1>Assembling: ./main.asm1>Linking...1>Embedding manifest...1>Build log was saved at "file://g:/masm/Project_sample/Debug/BuildLog.htm"1>Project - 0 error(s), 0 warning(s)========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

 

 

运行程序

在Debug菜单下选择Start without Debugging,应该会出现类似控制台窗口。 

控制台 

"Press any key to continue..."是Visual C++ Express自动生成的。

恭喜你,你已经运行了你的第一个汇编语言程序。

按任意键关闭窗口。

 

当你编译并链接这个project,在工程的Debug目录下会生成一个名叫Project.exe的文件,它在你运行工程时被执行。如果你双击执行此程序,它仅仅会一闪即逝,因为在程序运行完毕之后,命令行被自动关闭了。

 

创建一个新的工程

你可能想创建一个属于自己的工程,最简单的方法是复制 c:/Irvine/Examples/Project_Sample整个目录内容到一个新的位置。请确认在新的目录下你有读写的权限。

在调试模式下运行示例程序

在这一步中,你将会在程序中设置断点,使用Visual C++的调试器单步跟踪程序的执行。

  1. 按F10启动调试模式。
  2. 在程序的第一条语句前会出现一个黄色的箭头,它表示这一条语句将在下一步被执行。
  3. 按F10执行当前语句,继续按F10直到程序将要退出。
  4. 在Windows的状态栏上会显示一个黑色的窗口图标,打开它查看命令行的内容,你应该会看到"MASM program example".
  5. 再次按F10结束程序。

调试

 

寄存器

如果你想查看寄存器的状态,执行下列操作:开始调试程序,在Debug菜单下选择Windows,在下拉菜单中选择Registers。在窗口的底部将会显示寄存器的内容。在窗口上右击,勾选Flags,这样将会显示标志寄存器的内容.

你可以通过在Debug菜单下选择Stop Debugging在任意时刻终止调试,也可以通过在工具栏上点击蓝色的方形按钮达到相同的目的。

设置断点

如果在程序中设置了断点,那么程序会在运行到断点处暂停并进入单步跟踪模式。

  1. 在call WriteString这条语句的左边的边框上点击鼠标左键,会出现一个红色的圆点。
  2. 在Debug菜单下选择Start Debugging,程序开始运行并在断点处暂停,出现黄色箭头。
  3. 按F10直到程序结束。

你可以通过在红色圆点上点击来移除断点。

建立并运行其它程序

如果你想运行其它示例程序或者你自己的程序。你可以编辑main.asm,或者移除main.asm然后插入其它.asm文件到工程中。

  • 从工程中移除文件而不删除它。在Solution Explorer窗口中,在文件名上点击右键,选择Exclude from Project。如果你改变想法并决定将它重新加入到工程中,在窗口上点击右键,选择Add-->Existing item并选择你想加入的文件。
  • 从工程中移除文件并删除它,选择文件然后点击Del键,或者在文件名上右击,选择Remove。

向工程中添加文件

最简单的方法是用鼠标拖拽一个汇编语言源文件名到Solution Explorer窗口中,这样一个文件的引用就会被插入到工程的目录中。现在就尝试一下:

  1. 从工程中移除main.asm文件。
  2. 将c:/Irvine/Examples/ch03/AddSub.asm文件的引用加入到工程中。
  3. 建立并运行工程。

你应该会在控制台窗口看到如下类似内容:

控制台

 

拷贝源文件

如果你想拷贝一份源文件到工程中,请使用资源管理器拷贝文件至工程目录下,然后在Solution Explorer窗口中点击右键选择Add-->Existing Item,选择拷贝生成的文件。