Win32汇编小试

首先我们看一个“复杂”的Win32汇编程序

程序用来显示一个消息框

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

;文件名:3.asm
    .386
    .model flat ,stdcall
NULL  equ 0
MB_OK  equ 0
ExitProcess PROTO :DWORD
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
includelib kernel32.lib
includelib user32.lib
    .data
szText  db "Hello, world!",0
szCaption db "Win32Asm",0
    .code
start:
    push MB_OK
    lea eax,szCaption
    push eax
    lea eax,szText
    push eax
    push NULL
    call messageboxa
    xor eax,eax
    push eax
    call exitprocess
    end start

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

编译链接:

分下面两步进行:

ml  /c /coff 3.asm

link /subsystem:windows /libpath:d:\masm7\lib 3.obj

第一步编译生成3.obj文件

/c 表示只编译,不链接

/coff 表示生成COFF格式的目标文件

第二步链接生成3.exe文件

/subsystem:windows 表示生成windows文件

/libpath:d:\masm7\lib 表示引入库的路径为:d:\masm7\lib。

在安装Masm32后,引入库位于Masm32\Lib目录下。

也可设置环境变量Lib的值:在dos提示符下键入Set Lib=d:\masm7\lib,这样“链接”就可简单写成:

link /subsystem:windows 3.obj,试想一下,在程序调试过程中,修改源程序是常用的事啦,每次编译链接都要带/libpath:...那该有多烦人呢。当然,我们也可在源程序中直接给出引入库的位置,这样,链接时就方便啦,如下:
 includelib d:\masm7\lib\kernel32.lib
    includelib d:\masm7\lib\user32.lib

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

执行:在dos提示符下键入3,回车,出现一个消息框,哈哈,真正的Win32程序!

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

时间: 2024-11-03 21:41:04

Win32汇编小试的相关文章

代码-win32汇编加速键不好使怎么解决?

问题描述 win32汇编加速键不好使怎么解决? 什么加载加速键,消息循环,响应都弄了,就是不好使 代码:http://pan.baidu.com/s/1o6p6kx8 解决方案 参考:http://wenku.baidu.com/link?url=VJlWwe9eL2dZIazPNIh1YAEisFrJPmScDdfXrpQfp7z9yGq_bSc_IlOrhua5AdvBCJbpuVTAWL_vJN4KGFcXNyafJToLglEaNqWULIdNzku 解决方案二: 参考:http://b

用win32汇编画八卦图

汇编程序的图: 这几天在学习汇编语言的图形操作,于是想起以前用C#画过个小八卦图 半径R自己给-- Graphics g = e.Graphics; Brush fillWhiteBrush = Brushes.White; Brush fillBlackBrush = Brushes.Black; g.FillPie(fillWhiteBrush, 0, 0, r, r, -90, -180);//左半圆 g.FillPie(fillBlackBrush, 0, 0, r, r, 90, -1

"hello,world!"win32汇编小程序

"hello,world!"win32汇编小程序szText db "Hello, world!",0 szCaption db "Win32Asm",0 .codestart: push MB_OK lea eax,szCaption push eax lea eax,szText push eax push NULL call messageboxa xor eax,eax push eax call exitprocess end star

Win32汇编的环境和基础

1.32位环境简介 在Dos下编汇编程序,我们可以管理系统的所有资源,我们可以改动系统中所有的内存,如自己改动内存控制块来分配内存,自己修改中断向量表来截获中断等,对其他操作也是如此,如我们对键盘端口直接操作就可以把键盘屏蔽掉,可以这样来描述Dos系统:系统只有一个特权级别,在编程上讲,任何程序和操作系统都是同级的,所以在Dos下,一个编得不好的程序会影响其他所有的程序,如一个程序把键盘口中断关掉了,所有程序就都不能从键盘获得键入的数据,直到任何一个程序重新打开键盘为止,一个程序陷入死循环,也没

win32汇编-WIN32汇编键盘钩子截获全部键盘

问题描述 WIN32汇编键盘钩子截获全部键盘 普通的键盘钩子只能截获普通的键盘操作,但是不能截获到shift等系统键,求问怎么样截获所有的键盘操作 解决方案 http://www.cnblogs.com/zudn/archive/2010/12/15/1906374.html 解决方案二: win32程序测试键盘钩子win32程序测试键盘钩子

win32-求教WIN32汇编如何向后引用变量?

问题描述 求教WIN32汇编如何向后引用变量? 假如我定义一个宏: DEFVAR macro TYPE,VARNAME,VALUE .data ifnb VARNAME TYPE VALUE else VARNAME TYPE NULL endif .code endm 然后在一个对话框消息回调函数里定义: .code _DlgProc proc hWnd,uMsg,wParam,lParam mov eax,uMsg .if eax == WM_CLOSE invoke EndDialog,h

界面划窗口设计-WIN32汇编中窗口设计,新手求帮助

问题描述 WIN32汇编中窗口设计,新手求帮助 .386 .model flat,stdcall option casemap:none include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib .data? hInstance dd ? nhWnd dd ? .data SZClassName db "My Windows" SZW

Win32汇编--操作注册表

1.打开和关闭子键    注册表函数对注册表的操作是通过句柄来完成的,与文件操作一样,在对某个键下的子键或者键值项进行操作之前,需要先将这个键打开,然后使用键句柄来引用这个键,在操作完毕以后再将键句柄关闭.注册表的根键不需要打开,它们的句柄是固定不变的,要使用根键的时候只要把这些句柄直接拿来用就是了,Windows.inc中已经预定义了它们的数值: HKEY_CLASSES_ROOT                      equ 80000000h HKEY_CURRENT_USER    

Win32开发入门(14):用对话框作为主窗口

前面我们在编写Win32应用程序的思路都是: 1.设计窗口类.2.注册窗口类.3.创建窗口 .-- 然而,当我们接触控件以后, 会发现一个问题,我们在窗口上放置控件实在不好弄,而 资源中的对话框具有图形编辑器,操作起来相对方便. 于是,就有了一个想法:把对话框用作 主窗口,那我们在布局控件时就轻松了. 其实这想法在网上已有牛人做了,不过,人家是用 Win32汇编干的,当然,要把它变为C++就更简单了. 首先,介绍第一个法子,直接以桌面作为 父窗口来创建对话框. 1.创建一个对话框资源,界面就发挥