当前位置: 首页 > news >正文

window XP环境下配置VC6.0的Win32汇编语言开发环境

在Win32汇编语言开发环境时,虽然用的是masm32软件开发包,使用nmake编译就可以,但是不能调试,为了能方便调试Win32汇编语言,采用VC6.0开发工具就比较方便,即可以兼容旧的操作系统dll,资源占用又比较小,因此本篇介绍在VC6.0的Win32开发环境的配置。

1.下载并安装masm32软件开发包,这里安装在C盘的根目录下。

masm32 sdk下载地址:http://www.masm32.com/download.htm

2.打开VC6.0,新建一个win32应用程序 ,输入工程名及保存位置

点击【确定】按钮,选择空项目,然后点【完成】

在工作区,选择FileView选项,右击Source File选项,添加asm源文件

这里输入asm文件名,一定要以.asm为后缀名

然后输入win32的汇编源代码,然后把相关的资源文件添加到工程中。

.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include		windows.inc
include		user32.inc
includelib	user32.lib
include		kernel32.inc
includelib	kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.constszCaption	db	'恭喜',0
szText		db	'当您看到这个信息的时候,您已经可以编译Win32汇编程序了!',0;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.code
start:invoke	MessageBox,NULL,offset szText,offset szCaption,MB_OKinvoke	ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end	start

3.设置编译环境:

点击菜单【工具】=》【选择】=》【目录】选项,在【显示目录为】选项切换到【Executable files】选项添加masm32的bin目录

切换到【Include files】选项,添加头文件目录

切换到【Library files】选项,添加lib库文件目录

这个时候编译,运行,提示没有可执行程序,说明没有生成exe

选中hello.asm汇编源文件,右键,选择【Settings】选项

选中【Custom Build】选项,在命令项行添加

ml /c /coff /Zi /Fo$(TargetDir)\$(InputName).obj $(InputPath) 

命令,在输出项中添加   $(TargetDir)\$(InputName).obj  

然后点确定,再次编译,

链接,生成可执行程序

运行:

说明汇编环境配置成功,这样我们就可以调试了,首先在代码里添加3行汇编代码

mov eax, 6
mov ebx, 7
add eax, ebx

在mov eax,6所在行添加断点,调试

执行下一步

再执行下一行

执行add eax, ebx

到此,win32的VC6.0开发环境就配置后了,

------------------------------------------------------------------------------

上面的只是编译调试单个asm源文件,如果有多个源文件呢,是一样的效果吗,这里我们按上面的方法新建工程,添加两个源文件:

这里的两个asm源文件,Main.asm是包含_ProcessPeFile.asm的,也都设置了ml汇编的编译命令

那是什么原因呢,经过多次修改编译,还是会报各种错误,最后,只设置Main.asm的ml编译命令才成功,

清理工程,再次编译

链接

运行:

为什么两个asm源文件都设置汇编的编译命令不行呢,原因是被包含的源文件并不是一个独立生成obj文件,里面并没有

.386
.model flat, stdcall
option casemap :none

它也不需要生成obj文件,类似于C语言的头文件,编译的时候被嵌入到Main.asm文件中,因此不需要设置汇编编译命令。如果是一个独立生成obj文件的,那么是需要添加ml编译命令

http://www.dtcms.com/a/391244.html

相关文章:

  • 【算法】0_算法工程师常见算法题
  • 免费插件分享 | BaseTool
  • sk04.【scikit-learn基础】--『监督学习』之 线性回归
  • Ubuntu终端切换WiFi
  • eBest渠道商管理软件:快消品渠道数字化的“破局利器”
  • 基于protues的电子时钟仿真与模拟
  • FastProperty 高效的属性读写设置
  • 【开题答辩全过程】以 基于Java的失物招领平台为例,包含答辩的问题和答案
  • 【7/20】前后端整合:Vue.js 调用 Express API,操作 MongoDB 数据,实现用户管理系统
  • 【8/20】用户认证基础:JWT 在 Express 中的实现,实现安全登录
  • 独立站有哪些建站工具
  • Linux 终端常用快捷键整理
  • 跨域的两种解决方法
  • 小程序中获取年月日时分的组件
  • Redis热升级秘籍:零停机迁移方案与工具链
  • 时序数据库选型指南深度解析IoTDB架构设计与性能对比
  • springboot超市管理系统的设计与实现(代码+数据库+LW)
  • 让Trae写一个AI的api中继服务
  • 跨国制造业SD-WAN:延迟下降78%,运维成本下降53%
  • MySQL服务启动不成功的可能解决方法
  • 硬解码出现画面回退分析
  • P1068 [NOIP 2009 普及组] 分数线划定-普及-
  • 用python语言如何排大小
  • pycharm连接GitHub,怎么配置 SSH 密钥并改用 SSH 连接
  • ​​[硬件电路-265]:电源系统要考虑的因素包括:不同的输出电压、隔离防干扰、防反、防浪涌、电压可调、电源开关、电池、可充电、低纹波、低噪声、防波动等
  • 【开题答辩全过程】以 基于Python的电影推荐系统为例,包含答辩的问题和答案
  • 格拉姆角场(Gramian Angular Field, GAF)详解
  • 前端开发工具Vue有哪些?常用Vue前端开发工具推荐、Vue开发工具对比与最佳实践分享
  • 基于vue的幼儿园健康管理系统0fz0y(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 第69课 分类任务: 基于BERT训练情感分类与区别二分类本质思考