图解命令行手动编译构建一个win32汇编程序

原创 2016年08月30日 21:51:10

首先安装masm32 V11.0;安装完后出现下列对话框;

图没截好;下面图的 k. 是 link. ;ktopPath是DesktopPath;

此段代码的含义是用WScript创建了一个快捷方式,指向刚安装的masm32的编辑器;快捷方式位于桌面;


下面来手动编译一个win32 汇编程序;

先建立环境变量如下;

新建;

新建;

还有个lib变量也是新建;忘了截图;见后面代码;

Path中添加如下内容;


未构建之前,有四个文件;一个图标,一个makefile,一个asm文件,一个rc文件;

手动命令行构建不需要makefile;


首先打下图命令编译;编译之后看到obj出来了;


打下图命令编译资源;成功后看到rc编译后的res文件出来了;


再打下图命令;链接;成功后看到exe出来了;这就是手动编译构建的全过程;


上述相关代码来自罗云琳书中代码;

var.bat;

@echo off
rem 请根据 Masm32 软件包的安装目录修改下面的 Masm32Dir 环境变量!
set Masm32Dir=C:\Masm32
set include=%Masm32Dir%\Include;%include%
set lib=%Masm32Dir%\lib;%lib%
set path=%Masm32Dir%\Bin;%Masm32Dir%;%PATH%
set Masm32Dir=
echo on

Test.asm

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming >
; by 罗云彬, http://asm.yeah.net
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Test.asm
; 编程环境测试代码
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令进行编译和链接:
; ml /c /coff Test.asm
; rc Test.rc
; Link /subsystem:windows Test.obj Test.res
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.386
		.model flat,stdcall
		option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include		windows.inc
includeINCLUDE2.inc
includelINCLUDE32.lib
include		kernel32.inc
includINCLUDErnel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.data

szCaption	db	'恭喜',0
szText		db	'当您看到这个信息的DB,您已经可以编译Win32汇编程序了!DB0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.code
start:
		invoke	MessageBox,NULL,offset szText,offset szCaption,MB_OK
		invoke	ExitProcess,NUOFFSET>>>>>>>>OFFSET>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		end	start
END

Test.rc

1        icon    "Main.ico"


Makefile

EXE = Test.exe		#指定输出文件
OBJS = Test.obj		#需要的目标文件
RES = Test.res		#需要的资源文件

LINK_FLAG = /subsystem:windows	#连接选项
ML_FLAG = /c /coff		#编译选项

$(EXE): $(OBJS) $(RES)
	Link $(LINK_FLAG) $(OBJS) $(RES)

.asm.obj:
	ml $(ML_FLAG) $<
.rc.res:
	rc $<

clean:
	del *.obj
	del *.res

看下Makefile,makefile执行完后,会删除obj和res文件;而前面手动构建的情况,这两个文件还在;


[汇编]_[初级]_[VS2010搭建汇编开发环境win32和x64]

场景: 1. 虽然使用MASM32也可以编译运行汇编程序,但是既然装了VS2010,它也能支持编译运行汇编吧.不然微软的开发人员难道还不用vs写汇编程序了? http://www.masm32.com...
  • infoworld
  • infoworld
  • 2015年04月17日 01:19
  • 16576

用命令行编译Windows程序

基本设置:1. 解压vc71.zip到c:/2. 在vc71目录中建立两个新的.bat文件:clean.bat --->SET MSVCDir=c:/vc71SET VC_TOOL_PATH=%MSV...
  • litowen
  • litowen
  • 2004年09月01日 14:08
  • 2603

如何在windows系统的cmd命令行下调用VS编译器

之前使用linux系统下的gcc编译c文件,一般是通过终端调用命令的形式来进行编译以及调试。而在Windows下,我们通常使用的vs,codeblcoks等IDE(集成开发环境)进行编译,调试,执行等...
  • qq_31597573
  • qq_31597573
  • 2016年04月22日 15:17
  • 6264

Win32 SDK基础(2)—— 自己动手用cl.exe和link.exe编译和连接程序

一 从程序的编译过程说起     上一文我们介绍了windows系统下面程序的分类、编译器、连接器、常用头文件、库文件等知识。本文再谈一下程序的编译过程。 相信大家都知道源代码的编译过程共分为两个步骤...
  • lzhui1987
  • lzhui1987
  • 2016年11月12日 17:22
  • 1732

Windows命令行编译C++程序

命令行编译程序代码,因为编译效率高、不用去研究开发工具,可以使初学者集中精力在代码理解上,因此(命令行+文本编辑器【推荐EditPlus】)非常适合编程学习。但往往由于命令行没有像Visual Stu...
  • hulin0229
  • hulin0229
  • 2014年03月28日 01:44
  • 16585

使用vs2010和masm32搭建win32汇编语言编程编译环境

看到题目,就有人说了,masm32和RadASM搭配多好,绝配,你使virtual studio,纯是烧包。 不错,vs在C语言上有语法高亮和自动填充,但是汇编就没有了。 RadASM在汇...
  • u012519333
  • u012519333
  • 2013年12月14日 13:59
  • 1369

[汇编]_[初级]_[VS2010搭建汇编开发环境win32和x64]

场景: 1. 虽然使用MASM32也可以编译运行汇编程序,但是既然装了VS2010,它也能支持编译运行汇编吧.不然微软的开发人员难道还不用vs写汇编程序了? http://www.masm32.com...
  • infoworld
  • infoworld
  • 2015年04月17日 01:19
  • 16576

Win32汇编语言学习笔记>>第二课:编写第一个Win32汇编程序

本节课主要是编译连接一段写好的代码: 程序运行如下: 代码: .386 .model flat,stdcall option casemap:none include C:\mas...
  • eldn__
  • eldn__
  • 2013年01月01日 12:33
  • 1296

win32 汇编基础

一、关于寄存器 寄存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP等,似乎IP也是寄存器,但只有在CALL/RET在中会默认使用它,其它情况很少使用到,暂时可以不用理会。 EA...
  • nicholas199109
  • nicholas199109
  • 2013年01月31日 22:58
  • 1657

WIN32汇编对话框的使用

刚开始接触windows下的对话框,第一感觉就像是一个一般的窗口一样,没有图标,只有一个框框,中间有一些提示的控件(按钮,输入的文本框等)信息,在学习使用对话框的时候,资源文件的编写我感觉比编写实现对...
  • qq_22642239
  • qq_22642239
  • 2016年03月25日 20:09
  • 750
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图解命令行手动编译构建一个win32汇编程序
举报原因:
原因补充:

(最多只允许输入30个字)