Nasm-Masm-Base-1

本文主要说明 NASM 与 MASM 的搭建以及简单的编译使用(操作系统环境为 Win11)

nasm 与 masm 主要的区别(除语法外)

NASM MASM
平台 Linux、Mac、Windows Windows

实验所需要相关软件,及其下载地址

| 软件名称 | 版本号 | 用途 | 下载地址 |
| MinGW | | 用于在 Windows上安装 GCC | http://sourceforge.net/projects/mingw/files/ |
| MASM32 | 11 | masm 编译工具 | http://www.masm32.com/download.htm |
| NASM2.15 | | nasm 编译工具 | https://www.nasm.us/ |
| NASM | | nasm 在线文档 | https://www.wikihow.com/Run-NASM-on-Windows |

1. 安装 MinGW

1.1 下载 MinGW 安装包 并 安装 MinGW (默认安装目录为你选定磁盘的 根下面的 MinGw )

1.2 配置 MinGW 系统环境变量

1.3 确认 MinGW 是否安装成功

进入 CMD 命令行输入

1
mingw-get

1.4 安装 GCC、G++、GDB(本文只需要安装 GCC)

1
2
3
mingw-get install gcc
mingw-get install g++
mingw-get install gdb

1.5 查看 gcc 是否安装成功

1
gcc -v

2. 安装 NASM

2.1 下载 NASM 并安装

2.2 配置对应的 PATH 变量

2.3 查看是否安装成功

1
nasm -v

3. MASM 安装

3.1 下载 MASM 并安装 (安装完成后默认路径:C:\masm32)

3.2 配置环境变量

3.3 查看 masm 是否安装成功

4. nasm 与 masm 的简单编译操作案例

obj 后缀的文件说明:源程序经过编译程序编译后生成的,它不能直接执行,需要连接程序连接后才能生成可执行文件,这样就能值行了。

4.1 nasm 编译案例

源码案例

1
2
3
4
5
6
7
8
9
10
11
12
13
; Hello World Program 
extern _printf
SECTION .data
msg db 'Hello World!', 0Ah ; assign msg variable with your message string

SECTION .text
global _main

_main:
push msg
call _printf
add esp, 4
ret

命令行编译操作

1
2
3
4
5
6
# 编译成二进制文件, -f win32 代表的是操作系统模式,自动会生成 test1.obj 文件
nasm -f win32 test1.asm
# gcc 编译 (连接器生成可执行文件)
gcc test1.obj -o test1
# 运行二进制代码
test1

4.2 masn 编译案例

源码案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
.586
.MODEL flat, stdcall
includelib C:\masm32\lib\user32.lib
includelib C:\masm32\lib\kernel32.lib
ExitProcess PROTO, dwExitCode :DWORD
MessageBoxA PROTO hWnd : DWORD,lpText : BYTE,lpCaption : BYTE, uType : DWORD
.data
Number DWORD 0
text db "shellcode", 0
.code
main proc
mov eax,5
mov ebx,6
add eax,ebx
add eax,Number
push 0
push offset text
push offset text
push 0
call MessageBoxA
add esp,16
call ExitProcess
main ENDP
END main

命令行编译操作 (之前版本的命令为 masm 命令,现在更改为了 ml 和 ml64 命令)

1
2
3
4
5
6
# 编译成二进制文件,自动会生成 test2.obj 文件
ml /c /coff test2.asm
# 连接器生成可执行二进制文件,自动生成 test2.exe 文件,注意: 子系统参数需要添加否则会报错
link /subsystem:windows test2.obj
# 执行二进制文件
test2.exe

Contents
  1. 1. 本文主要说明 NASM 与 MASM 的搭建以及简单的编译使用(操作系统环境为 Win11)
    1. 1.1. nasm 与 masm 主要的区别(除语法外)
    2. 1.2. 实验所需要相关软件,及其下载地址
    3. 1.3. 1. 安装 MinGW
      1. 1.3.1. 1.1 下载 MinGW 安装包 并 安装 MinGW (默认安装目录为你选定磁盘的 根下面的 MinGw )
      2. 1.3.2. 1.2 配置 MinGW 系统环境变量
      3. 1.3.3. 1.3 确认 MinGW 是否安装成功
      4. 1.3.4. 1.4 安装 GCC、G++、GDB(本文只需要安装 GCC)
      5. 1.3.5. 1.5 查看 gcc 是否安装成功
    4. 1.4. 2. 安装 NASM
      1. 1.4.1. 2.1 下载 NASM 并安装
      2. 1.4.2. 2.2 配置对应的 PATH 变量
      3. 1.4.3. 2.3 查看是否安装成功
    5. 1.5. 3. MASM 安装
      1. 1.5.1. 3.1 下载 MASM 并安装 (安装完成后默认路径:C:\masm32)
      2. 1.5.2. 3.2 配置环境变量
      3. 1.5.3. 3.3 查看 masm 是否安装成功
    6. 1.6. 4. nasm 与 masm 的简单编译操作案例
      1. 1.6.1. 4.1 nasm 编译案例
      2. 1.6.2. 4.2 masn 编译案例
|