Win32汇编环境配置
放假了,发现自己知识面窄,趁有时间就打算折腾下Win32汇编。其实在学校也上过汇编课,是基于dos的。那时老师不务正业,老跟我们讲政治经济文化,唯独不怎么讲课;再加上自己的问题,导致了dos汇编学得好烂(几乎没学),但发现dos汇编比较少用,所以直接学Win32汇编了,基础知识薄弱遇到再补上去。我只是多了解其他知识,不求精通。如果要学好还是应该先写好dos汇编的。
介绍
Win32可执行环境的开发过程如下图
常用的编译器有Microsoft的MASM系列和Borland的TASM系列。但都存在一些缺点:
MASM:没有当做完整的开发包发布,会发现在不同版本中都会缺少一些工具,需要在其他地方获得。
TASM:优化方面不好,使用会有点麻烦。
则可以选择使用MASM32 SDK软件包。它是不同工具软件的集合,它的汇编编译器用的是微软MASM软件包中的Ml.exe,资源编译器和32位链接器使用的是Microsoft Visual Studio中的Rc.exe,Link.exe,同时包含了Microsoft Visual Studio中的其他一些工具,如Lib.exe和DumpPe.exe等,所有的工具都是适合于Win32编程的版本。
安装
MASM32 SDK下载地址:http://www.masm32.com/masmdl.htm。
下载后是一个安装文件install.exe。双击打开一直确定或下一步就能完成安装,在这个过程中会有个选择安装目录,并且会测试是否能安装。最终在安装目录出现masm32文件夹。
masm32文件夹中的信息:
目 录 |
介 绍 |
\masm32 |
IDE环境、内带的文本编辑程序和模板生成程序等 |
\masm32\include |
所有的头文件,Windows.inc为数据结构和预定义值的定义文件,Resource.h为资源文件的头文件,其他 .inc文件为对应同名DLL文件中的API函数声明文件 |
\masm32\lib |
所有的导入库文件,每个.lib文件是对应DLL文件的导入库 |
\masm32\bin |
可执行文件目录,里面包括Ml.exe,Link.exe和Rc.exe等 |
\masm32\help |
帮助文件目录 |
\masm32\m32lib |
一些常用C子程序的汇编实现源程序,如熟悉的stdin和stdout等,有一定的参考价值 |
其他目录 |
主要为例子和可用可不用的小工具,例子广泛收集自网上不同作者的作品,很有参考价值 |
如果不用内带的IDE环境,不看附带的例子和帮助文件,那么有了bin,include和lib这三个目录中的内容,就可以进行Win32汇编编程了,其他目录中的文件仅起辅助作用。
使用
设置环境变量
可以在计算机中高级系统设置的环境变量中写死或者每次要编译连接时先执行一个批处理文件Var.bat,退出后所设置的环境变量也会消失掉。
Var.bat
1 @echo off 2 rem 请根据 Masm32 软件包的安装目录修改下面的 Masm32Dir 环境变量! 3 set Masm32Dir=D:\masm32 4 set include=%Masm32Dir%\include;%include%;D:\Program Files\Programing\Microsoft Visual Studio 10.0\VC\include;D:\masm32\include\others_dk\INCLUDE;D:\masm32\include\others_dk\MFC; 5 set lib=%Masm32Dir%\lib;%lib% 6 set path=%Masm32Dir%\bin;%Masm32Dir%;%path%; 7 echo on
编写程序
源代码HelloWorld.asm
.386.model flat,stdcalloption casemap:none ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Include 文件定义 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 数据段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .constszCaption db 'MessageBox',0 szText db 'HelloWorld!',0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; 代码段 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .code start:invoke MessageBox,NULL,offset szText,offset szCaption,MB_OKinvoke ExitProcess,NULL ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end start
资源文件HelloWorld.rc(只有个文件名,内容为空。暂时用不到)
执行
运行批处理文件后,在命令符中进入到源程序的目录下,并分条输入并回车(编译源程序、编译资源、链接),最终会产生可执行文件HelloWorld.exe。
ml /c /coff HelloWorld.asm
rc HelloWorld.rc
Link /subsystem:windows HelloWorld.obj HelloWorld.res
运行后
扩展
每次在命令符都要输入指令,比较麻烦。可以使用make工具(Microsoft中叫nmake.exe,可以在Visual C++的bin目录下找到)。把MakeFile放到源程序的文件目录下,要编译运行源程序只要在命令符输入的编译等指令时替换成nmake就可以。
MakeFile
1 NAME = HelloWorld 2 OBJS = $(NAME).obj 3 RES = $(NAME).res 4 5 LINK_FLAG = /subsystem:windows 6 ML_FLAG = /c /coff 7 8 $(NAME).exe: $(OBJS) $(RES) 9 Link $(LINK_FLAG) $(OBJS) $(RES) 10 11 .asm.obj: 12 ml $(ML_FLAG) $< 13 .rc.res: 14 rc $< 15 16 clean: 17 del *.obj 18 del *.res
参考:罗云彬的《Windows环境下32位汇编语言程序设计》
转载于:https://www.cnblogs.com/dann/p/2909668.html
Win32汇编环境配置相关推荐
- 打开vs没有解决方案_汇编环境配置+简单示例(masm+VS+Win10)
相关资源在百度网盘上,链接:https://pan.baidu.com/s/1JtGTs7lNokkNMDqPUSFNSA ,提取码:fhao 虚拟机使用 下载链接(Virtual Box 6.1.1 ...
- Win32 汇编环境和入门程序图解
一 安装 在安装的最后,执行VBS脚本,在桌面建立快捷方式:执行快捷方式,会调入Win32汇编的编辑器qeditor.exe,进入到开发环境 二 构建Hello World程序 ;.386是伪指令 告 ...
- Win32汇编环境搭建教程(MASM32 SDK)
一.说明 常用的32位汇编编译器有微软的MASM.Borland的TASM和NASM. 编译器 开发者 优点 缺点 MASM 微软 微软自家软件和系统兼容性好:支持invoke/.if等伪指令将汇编变 ...
- linux8086汇编环境配置,LINUX下面进行8086汇编
LINUX下面进行8086汇编 我想问的是:LINUX下面使用什么编辑器来编辑汇编源代码?VIM? 编辑完毕之后使用什么来编译和链接? 链接完毕后如何运行? 这里举个例子 比如LINUX下面怎么写C程 ...
- DOSbox汇编环境配置
win7 64位dosbox安装(内置有debug文件):https://www.56wangpan.com/file/6695680 debug安装方法也在里面 打开 根据这个节面找到 dosbox ...
- Win10系统VS2022开发环境中(X86)Win32汇编(MASM32)环境配置和一些示例源码及解释
抱歉,还是只能用米国的软件以及技术以及等等等等......,所以各位勿怪. 如果配置完成,在vs2022调试环境下正确编译运行后,可以看到如下画面: 在VS022中开发学习汇编必然很方便. 这里可以下 ...
- 新版WIN32汇编开发环境介绍及RadAsm简明教程
写在前面的话: 在准备做教程的时候去查资料,关于WIN32下汇编方面的,本来想找些现成的拿到教程里用下,但发现貌似只有一篇,是2005年时jhkdiy写的,而且翻来翻去发现所有图片也都失效了.所以准备 ...
- 配置汇编环境:使用vs2010+MASM
1.将MASM32下载并安装到根目录(得到include和lib文件夹),官网即可下载,有64位版本 2.配置vs2010 (1)添加项目 a.新建空白解决方案 ...
- 配置汇编环境(王爽)
配置汇编环境(王爽) 学习王爽的汇编预言时需要用到Debug查看各个寄存器的内容,但是我的是Windos10操作系统没办法在命令行下直接执行Debug命令,后来查找到需要可以通过安装DOSBox来实现 ...
最新文章
- Linux Mint 19 安装Gnome Boxes 新建失败
- Python设计模式——观察者模式
- 文献记录(part54)--软件缺陷预测中基于聚类分析的特征选择方法
- 视图中::text_新CalendarFX视图:MonthGridView!
- lambda方法引用总结——烧脑吃透
- 大数据之-Hadoop伪分布式_配置历史服务器---大数据之hadoop工作笔记0027
- centos环境安装storm
- PHP报错:Malformed UTF-8 characters, possibly incorrectly encoded
- 山东大学往年c语言期末试题及答案,山东大学历年C语言题库.pdf
- StanfordDB class自学笔记 (3) 查询关系型数据库总览
- Windows10安装ubuntu18.04双系统教程(双硬盘)
- “向日葵”远程控制软件,方舟Q2硬件付费/免费功能全面评测,拔草向
- 使用阿里云镜像加速器--docker
- 【STM32-V7】STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2022-11-22)
- mysql backup 使用_MySQLBackup 使用说明
- 2017-2018 中国人工智能产业路线图
- 小米4降级android版本,小米MIUI不再允许降级,小心手机变砖
- 科学计算基础软件包Numpy学习 02
- 中秋测试大礼包来了,送一个测试流量app~
- 利用腾讯漏洞,QQ群日拉万人精准流量的方法
热门文章
- 推荐系统----协同过滤,矩阵分解,逻辑回归,FM,FMM,GBDT+LR,LS-PLM之间的优缺点
- 2021 年中国程序员薪资和生活现状调查报告
- Spark使用Java读Hive写入HBase
- 冯唐:在江湖上混需要养成的10个好习惯
- 安卓以太网共享4G网络方法
- 【数学建模】数学建模中的常用工具推荐
- PHP getimagesize(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL rou
- 1384Piggy-Bank
- 网站被降权的原因分析
- NDI是什么?NDI协议传输让网络直播更有趣