笔者在学习Windows下的图形界面应用程序(GUI,Graphical User Interface)的时候碰到的第一个麻烦就是架设WIN32汇编程序的开发环境,在这里笔者愿意和大家分享这段经历。

笔者认为大家应该首先具备下列概念和文件:

  • 操作系统:首先大家应该具备Windows98以上操作系统,看起来这并不是什么难事
  • 文本编辑程序:你可以选择Windows自带的记事本,或者是Ultraedit,而笔者却独钟于VisualStudio
  • 应用程序编程接口(API, Application Programming Interface),它是一些类型、常量和函数的集合,它提供了直接通过编程操纵对象的途径
  • Win32平台软件开发包(Win32 Platform SDK),这一些用于创建Windows应用程序的工具软件、库文件、代码例程和帮助文档的集合。Microsoft提供Platform SDK的免费下载http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
  • Microsoft汇编器(ML,它是Make.exe和Link.ext首字母的缩写),可以用它汇编并链接一个或多个汇编程序源文件,它的命令行参数选项可以在Microsoft MASM手册中查到。(遗憾的是该手册自1992年以后就没有再版过了,读者只能下载其电子版)
  • 资源文件,它是各种各样的元素集合,这些元素包括向用户提供信息的界面元素(如位图、图标或光标),含有应用程序所需数据的自定义资源,由安装 API 使用的版本资源,以及菜单和对话框资源。它为程序的逻辑界面与资源界面隔离提供了较好的实现。更多的信息读者可以参考MSDN: http://msdn.microsoft.com/zh-cn/library/zabda143(VS.80).aspx
  • 预定义头文件(RESOURCE.H):它提供了资源标示符的定义
  • 资源编译器:RC.EXE将编写的资源脚本文件(*.RC)编程成资源文件(*.RES,然后由CVTRES.EXE转换为OBJ文件

好了,现在我们开始架设WIN32汇编程序的开发环境

  • Visual Studio是个不错的开发环境,《Intel汇编语言程序设计》的作者Kip R.Irvine就是在这个平台上开发和教学的,此平台的架设读者可以参看以下内容http://blog.csdn.net/KingWolfOfSky/archive/2009/07/12/4342511.aspx
  • Microsoft也提供了试用版(90天)的下载http://msdn.microsoft.com/zh-cn/sqlserver/aa700831.aspx
  • 但仍然有很多人是不愿意安装几个G的VisualStudio,那么Microsoft提供了MASM32的下载http://www.masm32.com/masmdl.htm

安装完成以后在Masm32文件夹下新建一个“MyDocument”文件夹,将下面代码放入其中

TITLE Demo.asm
; ===============================================
; Author: 狼の禅
; Date: 23/07/2009
; ===============================================
.486
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
; -----------------------------------------------
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
; ===============================================
.data
hInstance dd 0
hWnd dd 0
szClassName db "Demo",0
szDisplayName db "My Demo",0
; ===============================================
.code
start:
invoke GetModuleHandle,0
mov hInstance,eax
invoke WinMain,hInstance,0,0,SW_SHOWDEFAULT
invoke ExitProcess,eax
; ===============================================
WinMain proc hInst:DWORD, hPrevInst:DWORD,
CmdLine:DWORD, CmdShow:DWORD
LOCAL wndclass:WNDCLASSEX
LOCAL Msg:MSG
mov wndclass.cbSize,sizeof WNDCLASSEX
mov wndclass.style,CS_HREDRAW or CS_VREDRAW or CS_BYTEALIGNWINDOW
mov wndclass.lpfnWndProc,OFFSET WndProc
mov wndclass.cbClsExtra,0
mov wndclass.cbWndExtra,0
mov eax,hInst
mov wndclass.hInstance,eax
mov wndclass.hbrBackground,COLOR_WINDOW+1
mov wndclass.lpszMenuName,0
mov wndclass.lpszClassName,OFFSET szClassName
invoke LoadIcon,hInst,NULL
mov wndclass.hIcon,eax
invoke LoadCursor,0,IDC_ARROW
mov wndclass.hCursor,eax
mov wndclass.hIconSm,0
invoke RegisterClassEx,ADDR wndclass
invoke CreateWindowEx,WS_EX_OVERLAPPEDWINDOW, ADDR szClassName,
ADDR szDisplayName,
WS_OVERLAPPEDWINDOW,
200,50,500,300,
0,0,
hInst,0
mov hWnd,eax
invoke ShowWindow,hWnd,SW_SHOWNORMAL
invoke UpdateWindow,hWnd
MessageLoop:
invoke GetMessage,ADDR Msg,0,0,0
cmp eax,0
je ExitProgram
invoke TranslateMessage,ADDR Msg
invoke DispatchMessage,ADDR Msg
jmp MessageLoop
ExitProgram:
mov eax,Msg.wParam
ret
WinMain endp
; ===============================================
WndProc proc hWin:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD
.if uMsg == WM_DESTROY
invoke PostQuitMessage,0
.else
invoke DefWindowProc,hWin,uMsg,wParam,lParam
ret
.endif
xor eax,eax
ret
WndProc endp
; ===============================================
end start

在命令行程序中进入在bin目录下输入 ml /coff ..\MyDocument\demo.asm

显示如下

在bin文件夹中可以看到demo.obj和demo.exe文件生成,打开demo.exe文件显示如下,那么你的环境就已经配置成功了

  • 另外,笔者也提供了一个简易的开发环境和范例http://d.download.csdn.net/down/1513555/kingwolfofsky

转载于:https://www.cnblogs.com/kingwolfofsky/archive/2011/07/07/2100291.html

架设WIN32汇编程序的开发环境相关推荐

  1. 汇编程序开发环境搭配

    引子 由于这些日子一直都在研究底层的技术,从 Windows 驱动程序,到 Windows 内核等等技术的学习, 让我对底层的技术越发有兴趣了,而刚好,在研究 WRK 时, 对内存管理,寄存器,地址总 ...

  2. 汇编程序开发环境搭配[转]

    引子 由于这些日子一直都在研究底层的技术,从 Windows 驱动程序,到 Windows 内核等等技术的学习, 让我对底层的技术越发有兴趣了,而刚好,在研究 WRK 时, 对内存管理,寄存器,地址总 ...

  3. GCC for Win32开发环境介绍

    GCC for Win32开发环境介绍(1) 第一章 在视窗操作系统下的GCC 第一节GCC家族概览 GCC是一个原本用于Unix-like系统下编程的编译器.不过,现在GCC也有了许多Win32下的 ...

  4. Win10系统VS2022开发环境中(X86)Win32汇编(MASM32)环境配置和一些示例源码及解释

    抱歉,还是只能用米国的软件以及技术以及等等等等......,所以各位勿怪. 如果配置完成,在vs2022调试环境下正确编译运行后,可以看到如下画面: 在VS022中开发学习汇编必然很方便. 这里可以下 ...

  5. 新版WIN32汇编开发环境介绍及RadAsm简明教程

    写在前面的话: 在准备做教程的时候去查资料,关于WIN32下汇编方面的,本来想找些现成的拿到教程里用下,但发现貌似只有一篇,是2005年时jhkdiy写的,而且翻来翻去发现所有图片也都失效了.所以准备 ...

  6. Masm for Windows集成开发环境编写汇编程序

    由于最近在学习汇编,用的软件是一款叫"Masm for Windows集成开发环境",但是发现该软件的资料比较少,对于我们这样刚刚学习汇编的同学,我查找了很多资料,下面主要是介绍该 ...

  7. ARM指令寻址方式及RealView MDK开发环境ARM汇编程序实践

    内容简介 本文根据作者在CSDN发表的树莓派ARM汇编语言编程十讲(第3讲) (CSDN链接https://blog.csdn.net/yuanzywhu/article/details/104975 ...

  8. windows系统中eclipse C开发环境的架设

    虽然c有很多经典的开发环境,但是大多数是linux或unix下的,对于windows的忠实用户来讲,可能并不习惯. windows环境中,有一个dev-c++可以做c代码的调试,但这个软件貌似已经停止 ...

  9. 搭建keil开发环境,完成一个基于STM32汇编程序的编写

    一.环境配置与搭建 1.准备安装 下面附上百度网盘链接,请自行下载: mdk531的安装: 链接:https://pan.baidu.com/s/1ttrDhv6kXgAvPiYINf9iGw 提取码 ...

最新文章

  1. Configure NFS Server On AIX 6.1
  2. 人工智能技术为大脑制作地图 前沿
  3. Gstreamer基础知识介绍
  4. 安卓开发之Intent系统调用系统相机Camera(中软杯项目)
  5. 动物模型:急性肝脏损伤模型的构建及选择
  6. pythonpil模块安装_centos 安装python PIL模块
  7. Tecplot如何提取某点数据并导出
  8. php 如何配置 redis,php 如何设置redis
  9. elementUI组件el-dropdown - 踩坑篇
  10. Nexus 安装 使用说明
  11. poj 3310(并查集判环,图的连通性,树上最长直径路径标记)
  12. Oracle和SQL server的数据类型比较
  13. 引用数据类型Scanner,Random
  14. export ,export default 和 import 区别以及用法
  15. 国内首个基于liftweb开发的项目上线运营
  16. Java 面试简答题
  17. 【搜索引擎】提高 Solr 性能
  18. mysql lsl_GitHub - LSL-Git/MyBatis_Dynamic_SQL: mybatis 动态SQL使用
  19. 英语 词根 词缀 查询网址
  20. HDU 胜利大逃亡(BFS)

热门文章

  1. ThinkPHP RBAC官网的例子详解
  2. ATL中建立消息窗口
  3. BSCI实验之十三:配置点到点链路OSPF及认证
  4. linux eclipse go插件,Eclipse 安装Go插件 (Ubuntu)
  5. 跨进程的 键盘钩子_Delphi下深入Windows编程之钩子原理一
  6. 一段最短的代码,用上js所有关键字
  7. Struts2 xml配置
  8. 大规模细粒度分类和特定领域的迁移学习
  9. 图标字体制作,mock数据
  10. Linux 用户和组 (1)基本概念