本文写给学汇编语言程序设计刚起步的吧友。适用Windows操作系统。已入门的吧友请绕道。

  (1)masm32开发包的下载
  要用汇编语言编程,首先得有个开发工具,汇编语言开发工具有多种,但本文仅介绍masm,介绍如何编写符合masm语法规范的源代码程序以及如何将源代码程序进行编译和链接,生成可执行的应用程序文件。
  masm开发包包括汇编器、连接器等工具,版本有多种,本文选择使用masm32,其下载地址如下:http://www.masm32au.com/masm32/masm32v11r.zip
  注释:masm32v11中的v11是masm32的版本号,而教科书上通常所说的masm版本指的是汇编器的版本号,这两者之间是有区别的。masm32v11中的汇编器文件名是 ml.exe,其版本号是v6.14.8444。

  (2)masm32开发包的安装指南
  masm32v11r.zip文件下载以后,使用解缩工具将文件解压,释放出里面的唯一文件install.exe。通过Windows资源管理器或控制台窗口执行install.exe以后,既可安装开发包。install.exe执行后,中间会停下来问你是否重新配置开发包的安装目录。开发包安装的默认目录是c:\masm32,你可以重新配置安装目录,比如重新配置安装目录是d:\masm32 (以后我们就假定安装目录就是它)。安装目录配置好后按确认按钮,安装程序执行安装。以后安装过程只需要时间,其他没有对话。

  (3)masm32包中有关常用文件简介
  masm32包即可以支持开发在DOS操作系统下运行的16位应用程序,也可以开发在Windows操作系统下运行的32位应用程序。在d:\masm32目录下有bin、include等多个子目录,里面存放着开发不同程序所用的工具文件和公用库文件。由于本文是介绍DOS操作系统下16位汇编语言程序设计,所以一开始我们只介绍与此相关的几个最常用的工具文件给您。
  将当前目录切换到d:\masm32\bin,我们会看到该目录下有下面几个文件:
  ml.exe——汇编器。我们编写的源代码文件就是通过它来汇编生成中间代码文件,即通常扩展名为.obj的文件。
  link16.exe——连接器。由ml.exe汇编生成的.obj文件还不能直接上机运行,必须通过连接器link16.exe将其连接制作成扩展名为.exe(或者.com)的可执行文件才能上机。

  (4)配置环境变量
  首先说说为什么要配置环境变量。不严格地说,环境变量是操作系统干活时用来参考的资源。还是结合我们刚刚安装的开发包来说吧。请打开控制台窗口(可通过Windows附件里的“命令提示符”那个菜单打开),并输入下面的指令:
  d:回车 (注:将当前盘切换到d:盘。回车是要求你按回车键执行指令,下同)
  cd \masm32\bin 回车 (注:将当前目录切换到d:\masm32\bin)
  ml 回车 (注:执行ml.exe程序)
  此时你会看到ml执行后在控制台窗口回显的提示信息。这说明操作系统找到了 ml.exe并执行。那操作系统是怎么寻找ml.exe的呢,我告诉你,在默认情况下操作系统只在当前目录下寻找ml.exe,由于我们已将当前目录切换为d:\masm32\bin,而ml.exe就在此目录下,所以你输入ml(或者输入ml.exe全名)并回车后,操作系统就在当前目录下找ml.exe文件(注:当只输入ml时,操作系统不仅仅是找扩展名为 .exe的文件,还包括.com、.bat等其他扩展名的可执行文件,有机会再介绍),找到后就调入内存并执行,如果找不到,操作系统就会去找一个叫做path的环境变量中去查询,沿着path所列的目录(叫路径)来查找。如果在path所列的目录中找到了目标文件,操作系统就会将该目标文件调入内存并执行;如果path所列的目录都找了仍没找到,操作系统就认为查找失败,并在控制台窗口显示没找到目标文件的相关信息,结束本次命令的执行。
  真是这样吗?让我们来检验一下。请您在控制台窗口输入以下命令并执行:

  cd ..  回车 (注:将当前目录切换到d:\masm32)
  ml  回车 (注:执行ml.exe)
此时控制台窗口会显示没有找到ml.exe的相关信息。为什么会出现这种情况?因为当前目录下没有ml.exe文件及以ml命名的其他可执行文件(如名为ml.com的文件和名为ml.bat的可执行文件等)。
  由上文介绍可知,我们写一个汇编源代码程序如果不放在ml.exe所在的目录,用ml.exe汇编它还会遇到找不到ml.exe的困难,怎么解决这个问题呢?当然有办法,那就是配置环境变量path,让环境变量包含ml.exe文件所在的目录就可以了。
  好了,现在我介绍如何配置环境变量。有几种方法:
  一是通过Windows桌面上[我的电脑]来配置。因为吧里帖图比较麻烦,我就不介绍了,想弄清楚原理的话可以上网查查。
  二是通过在控制台窗口输入以下命令来配置:
  set path=d:\masm32\bin;%path% 回车(这个不用太过理会,进行下面的步骤)
这种方法有个缺点,就是每打开一次控制台窗口,就要重新配置一回,因为操作系统不保存用这种方法配置的结果。
  好了,现在控制台当前目录还应该是d:\masm32,你再输入下面的指令试试:
  ml.exe
有了,ml.exe回显的信息出现在屏幕上,说明本次环境变量配置成功,不管当前目录是不是ml.exe所在的目录,操作系统都能根据path找到ml.exe了。

  (5)编写第一个汇编语言程序: hello.asm
  在没有编写程序之前,我们先在d:盘上建立一个名叫myasm的目录,(不会使用DOS指令可以通过Windows的资源管理器创建),这个目录就作为我们存放汇编语言开发项目的根目录,在该目录下再创建一个名为999的目录,这个目录就是我们放第一个汇编语言源代码文件hello.asm的目录。
  masm32不是一个功能完善的集成开发环境(即IDE),我用过的比较好点的集成开发环境是RadASM,但限于篇幅本文不介绍它。不管怎样,汇编语言源代码的编写总是需要借助文本编辑器的。文本编辑器有多种,其他我们暂都不用,有机会再说,现在我们就因陋就简,使用Windows的记事本。请打开记事本,输入下面的内容:
stack segment stack
byte 64 dup(0)
stack ends
data segment
msg byte 'hello world!$'
data ends
code segment
assume cs:code,ss:stack,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset msg
mov ah,9
int 21h
mov ax,4c00h
int 21h
code ends
end start

  编辑完成后,将其保存名为hello.asm的文件,放在d:\myasm\999目录下。这就是我们编写的第一个汇编语言源程序。

  (6)将hello.asm制作成可执行文件
  请回到控制台窗口,输入以下指令:
  cd d:\myasm\999 回车 (注:将当前目录切换到d:\myasm\999)
  dir 回车 (注:查看当前目录下都有什么子目录和文件)
你应该从控制台窗口看到hello.asm文件在列表中。好,一切正常。
  我们现在要汇编hello.asm然后连接。在控制台窗口输入以下指令:
  ml.exe /c hello.asm 回车 (注:此步为汇编)
  hello.asm中的内容如果无错误,您会在控制台窗口看到下面的信息:

D:\myasm\999>ml /c hello.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.
  Assembling: hello.asm
D:\myasm\999>

这说明编译成功。通过dir指令,你可以看到当前目录下多了一个hello.obj文件,这就是刚汇编生成的中间文件。
  汇编成功了,第二步我们连接生成可执行文件。在命令行窗口输入:
  link16 hell.obj,,,,, 回车 (注:5个逗号,用途以后有机会再说)
  连接成功会在控制台窗口显示以下信息:
D:\myasm\999>link16 hello.obj,,,,,
Microsoft (R) Segmented Executable Linker Version 5.60.339 Dec 5 1994
Copyright (C) Microsoft Corp 1984-1993. All rights reserved.
D:\myasm\999>
  通过在控制台窗口输入dir命令,可以看到当前目录下又多了一个名为 hello.exe的文件,它就是我们通过汇编、连接最终生成的可执行文件。在命令行窗口输入命令执行它:
  hello.exe 回车 (注:执行hello.exe文件)
  再看控制台窗口,会出现以下信息:
D:\myasm\999>hello.exe
hello world!
D:\myasm\999>
这说明我们第一个入门程序开发成功了。

masm32V11配置的更多相关文章

  1. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  2. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  3. react-router 组件式配置与对象式配置小区别

    1. react-router 对象式配置 和 组件式配置    组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...

  4. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  5. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  6. Virtual Box配置CentOS7网络(图文教程)

    之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...

  7. [linux]阿里云主机的免登陆安全SSH配置与思考

    公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...

  8. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  9. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

随机推荐

  1. iOS数据存储

    [reference]http://www.infoq.com/cn/articles/data-storage-in-ios 谈到数据储存,首先要明确区分两个概念,数据结构和储存方式.所谓数据结构就 ...

  2. jquery $提示缺少对象$提示缺少对象

    jquery $提示缺少对象 项目中存在不同版本的jquery,有1.4也有1.2, 之前运行项目不会报错 " $提示缺少对象 ",但是我的IE9重置之后就报错,从网上找了一大堆, ...

  3. Struts2标签遍历List<Map<String,String>>

    <s:if test="resultList != null && resultList.size() > 0"> <s:iterator  ...

  4. Sybase分页存储过程实现

    项目中需要用到Sybase数据库的分页功能,想尽各种办法都没有成功,最后用如下的存储过程成功实现功能,记录备忘. ),@start int, @pageSize int as begin declar ...

  5. 自己实现一个IOC(控制翻转,DI依赖注入)容器

    1.新建一个控制台应用程序 TestIOC 2.新增一个 IocFactory类 using System; using System.Collections.Generic; using Syste ...

  6. web前端好学吗?

    最近这段时间许多学生讨论关于WEB前端工程师这个职位的问题.比如:关于前端难不难?好不好找工作?有没有用?好不好学?待遇好不好?好不好转其他的职位? 针对这个问题,课工场露露老师想跟大家谈谈自己对前端 ...

  7. Win7 x64 Eclipse无法识别手机 / adb interface有黄色感叹号,无法识别

    今天公司停电,因此把安卓项目带回宿舍做.宿舍的笔记本,装的是Win7 x64,手机连上电脑后,windows可以识别,但Eclipse的DDMS中却无法识别,什么都没有: 然后打开设备管理器查看,发现 ...

  8. mysql调优 参数说明

    原文地址:http://wenku.baidu.com/view/49087bbafd0a79563c1e72c8.html 关键字: mysql *1, 查看 MySQL 服务器配置信息 *1. m ...

  9. HTML 多媒体、Object 元素、音频、视频

    Web 上的多媒体指的是音效.音乐.视频和动画. 现代网络浏览器已支持很多多媒体格式. 什么是多媒体? 多媒体来自多种不同的格式.它可以是您听到或看到的任何内容,文字.图片.音乐.音效.录音.电影.动 ...

  10. Flash中图片的逐步加载

    在Flash中,有Loader类,可以从外部载入一张图片(或swf文件).但是有个不好的地方就是,不像浏览器那样一边下载一边显示.所幸的是,Flash提供了Loader.loadBytes方法和URL ...