本文写给学汇编语言程序设计刚起步的吧友。适用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. 苹果应用商店AppStore审核中文指南 分类: ios相关 app相关 2015-07-27 15:33 84人阅读 评论(0) 收藏

    目录 1. 条款与条件 2. 功能 3. 元数据.评级与排名 4. 位置 5. 推送通知 6. 游戏中心 7. 广告 8. 商标与商业外观 9. 媒体内容 10. 用户界面 11. 购买与货币 12. ...

  2. STM32——timer

    原文地址: http://blog.sina.com.cn/s/blog_49cb42490100s6ud.html   1.     STM32的Timer简介 STM32中一共有11个定时器,其中 ...

  3. ios 自定义NSError

    from:[object-c错误处理]http://www.androiddev.net/objective-c%E5%AD%A6%E4%B9%A0%E4%B9%8B%E9%94%99%E8%AF%A ...

  4. chorme加减乘除浮点数处理

    在处理简单的1-0.7的时候发现chorme给的结果竟然是0.30000000000000004,瞬间蛋疼了,这数据能用?! 然后去百度找到了简单的两个数的加减乘除,然后修改了下,除了除法都可以多个数 ...

  5. EF的 JOIN操作

    ef join 用法 var customers = DB.Customer.Join(DB.Commission, cst => cst.CommissionId,               ...

  6. UVa 231 - Testing the CATCHER

    题目大意:一种拦截导弹能拦截多枚导弹,但是它在每次拦截后高度不会再升高,给出导弹的序列,问最多能拦截多少枚导弹? 最长递减子序列问题. #include <cstdio> #include ...

  7. ExportExcel

    package cn.com.jansh.core.util; import java.awt.print.Book; import java.io.BufferedInputStream; impo ...

  8. iOS 倒出spa文件 打包

    1. 修改Build Settings 修改 Code Signing: codesign failded 意思是签名错误,看看是否xcode -perferences是否没有登录,还有就是钥匙串密码 ...

  9. 记一次DG搭建过程中ORA-09925: Unable to createaudit trail file 错误

    今天做Oracle DG  编写initorcl的时候,修改完以后,sqlplus就不能再登陆,一直报 ERROR: ORA-09925: Unable to createaudit trail fi ...

  10. LINQ 的查询_联表、分组、排序

    1.查询 var v = from s in db.Set<ScoreInfo>().ToList()group s by s.subject into scoreselect new{  ...