windows汇编:开发环境搭建

190 阅读2分钟

前言

正常的汇编,是可以直接运行.但是我们实际开发中,会使用许多伪指令(这里的伪指令区别于真实的指令).另外,我们需要在汇编中调用windows的函数,或者其他C/C++编写的函数.MSVC(MASM)常见的伪指令:

1. 数据定义伪指令

用于定义数据段中的变量和常量。

  • DB:定义字节。
  • DW:定义字。
  • DD:定义双字。
  • DQ:定义四字。
  • DT:定义十字(用于浮点数)。
2. 段定义伪指令

用于定义代码和数据段。

  • .data:变量定义,附带初始值
  • .data?:变量定义,不指定初始值
  • .const:常量定义。
  • .code:代码段开始。
  • .stack:定义栈段。
3. 控制结构伪指令

用于控制程序的执行流。

  • .if:条件语句。
  • .endif:结束条件语句。
  • .while:开始循环。
  • .endw:结束循环。
  • .repeat:重复语句。
  • .endrep:结束重复语句。
  • .for:开始计数循环。
  • .endfor:结束计数循环。
4. 宏和过程伪指令

用于定义和调用宏及过程。

  • macro:定义宏。
  • endm:结束宏定义。
  • proc:定义过程。
  • endp:结束过程定义。
6. 其他伪指令

其他一些通用的伪指令。

  • include:引入外部文件。
  • includelib:引入库文件。
  • extern:声明外部符号。
  • option:设置编译选项(如 casemap)。

环境搭建

  1. 下载MASM32:www.masm32.com/download.ht… 并安装.
  2. 新建一个空项目.右键项目 属性 -> 配置属性 -> 常规 -> 平台工具集 选择vs2015

image.png

  1. 右键点击项目名称,选择 属性 -> 配置属性 -> VC++ 目录
  • “包含目录” 中添加 MASM 的包含路径(如 C:\masm32\include)。
  • “库目录” 中添加 MASM 的库路径(如 C:\masm32\lib)。
  • 选择属性 -> 配置属性 -> 链接器 -> 输入 ->附加依赖项 中添加所需的库(如 user32.libkernel32.lib)。
  1. 在项目处,右键 -> 生成依赖项 -> 生成自定义 选择MASM

image.png

  1. 下载完之后,安装即可. 然后打开visual studio,新建一个空项目.在源文件,右键 添加项,手动修改后缀为asm,新建一个asm文件.

image.png

编写如下代码 调用windowsAPI 弹出框:

.386
.model flat, stdcall
option casemap :none

include windows.inc
include user32.inc
include kernel32.inc


includelib user32.lib
includelib kernel32.lib

.const
msg1 db 'Hello, World!', 0      ; 消息内容
title1 db 'Greeting', 0          ; 窗口标题

.code
start:
    ; 调用 MessageBoxA
    invoke MessageBoxA, NULL, addr msg1, addr title1, MB_OK

    ; 退出程序
    invoke ExitProcess, 0
    ret
myMain proc uses ebx edi esi
    invoke MessageBoxA, NULL, addr msg1, addr title1, MB_OK
    invoke ExitProcess, 0
myMain endp

end myMain

运行结果如下:

image.png