masm32V11配置
本文写给学汇编语言程序设计刚起步的吧友。适用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配置的更多相关文章
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- react-router 组件式配置与对象式配置小区别
1. react-router 对象式配置 和 组件式配置 组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
- Virtual Box配置CentOS7网络(图文教程)
之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...
- [linux]阿里云主机的免登陆安全SSH配置与思考
公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...
- nginx配置反向代理或跳转出现400问题处理记录
午休完上班后,同事说测试站点访问接口出现400 Bad Request Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
随机推荐
- 苹果应用商店AppStore审核中文指南 分类: ios相关 app相关 2015-07-27 15:33 84人阅读 评论(0) 收藏
目录 1. 条款与条件 2. 功能 3. 元数据.评级与排名 4. 位置 5. 推送通知 6. 游戏中心 7. 广告 8. 商标与商业外观 9. 媒体内容 10. 用户界面 11. 购买与货币 12. ...
- STM32——timer
原文地址: http://blog.sina.com.cn/s/blog_49cb42490100s6ud.html 1. STM32的Timer简介 STM32中一共有11个定时器,其中 ...
- 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 ...
- chorme加减乘除浮点数处理
在处理简单的1-0.7的时候发现chorme给的结果竟然是0.30000000000000004,瞬间蛋疼了,这数据能用?! 然后去百度找到了简单的两个数的加减乘除,然后修改了下,除了除法都可以多个数 ...
- EF的 JOIN操作
ef join 用法 var customers = DB.Customer.Join(DB.Commission, cst => cst.CommissionId, ...
- UVa 231 - Testing the CATCHER
题目大意:一种拦截导弹能拦截多枚导弹,但是它在每次拦截后高度不会再升高,给出导弹的序列,问最多能拦截多少枚导弹? 最长递减子序列问题. #include <cstdio> #include ...
- ExportExcel
package cn.com.jansh.core.util; import java.awt.print.Book; import java.io.BufferedInputStream; impo ...
- iOS 倒出spa文件 打包
1. 修改Build Settings 修改 Code Signing: codesign failded 意思是签名错误,看看是否xcode -perferences是否没有登录,还有就是钥匙串密码 ...
- 记一次DG搭建过程中ORA-09925: Unable to createaudit trail file 错误
今天做Oracle DG 编写initorcl的时候,修改完以后,sqlplus就不能再登陆,一直报 ERROR: ORA-09925: Unable to createaudit trail fi ...
- LINQ 的查询_联表、分组、排序
1.查询 var v = from s in db.Set<ScoreInfo>().ToList()group s by s.subject into scoreselect new{ ...