汇编环境搭建 -- MASM32

作者: _凌浩雨 | 来源:发表于2019-01-22 17:03 被阅读96次

背景

当自己想使用C语言开发一个编译器的时候,需要将文本内容转换为汇编语言,此时需要我们对汇编语言具有一定了解及简单编写程序,否则无法继续进行编译器的编写。

开发工具

此处使用MASM32开发工具,当然也可以选用SASM, 此处由于并不深入学习且无兼容性考虑,因此此处选用MASM32工具。

下载

此处点击Australia 1/2开始下载


图1.png

安装

  • 将下载后的安装包解压如下图, 会有一个install.exe文件


    图2.png
  • 双击install.exe文件,安装即可。中间会有一步选择安装路径,选择自己想要安装的盘符即可。

    注:此处的盘符影响之后的工作盘符,其他盘符可能无法链接到库文件。

  • 安装完成后,会在桌面出现如下图所示的图标


    图3.png

程序测试

  • 创建文件: File -> New, 然后Ctrl+S保存(此处的文件的路径应与刚刚安装的盘符相同, 文件名格式为:xxx.asm)

  • 输入下列代码

.486
.model flat, stdcall
option casemap :none
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\msvcrt.lib
includelib \masm32\lib\masm32.lib

include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\gdi32.inc
include \masm32\include\windows.inc
include \masm32\include\msvcrt.inc
include \masm32\include\masm32.inc
include \masm32\macros\macros.asm

.data
.code
start:
    print chr$("Hello Wordld!")
    print chr$(" ",13,10)
    mov eax, sval(input("Enter any press to continue..."))
end start
  • 编译

    点击Project -> Assemble ASM file进行编译,编译之后会在同级目录下生成后缀名为obj的文件

  • 链接

    点击Project -> Assemble && file进行链接,链接之后会在同级目录下生成后缀名为exe的文件

  • 运行

    点击Project -> Run Program, 出现如下图结果


    图4.png

编码框架

.486
.model flat, stdcall

option casemap:none

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\gdi32.lib

include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\gdi32.inc
include \masm32\include\windows.inc

.data
// 变量
.code
start:
// 代码

end start

接下来分别解释下每行代表什么:

  • .486

    告诉汇编器应该生成486处理的伪代码,也可以使用.386。

  • .model flat, stdcall

    使用平坦内存模式并使用stdcall调用习惯(stdcall指函数的参数从右往左压入,即最后的参数先压入,且函数在结束时清栈),这几乎是所有Windows API函数和dll的标准

  • option casemap :none

    控制字符的映射为大写。为使“Windows.inc”文件正常工作,这里应用为“none”

  • includelib include

    为了使用Windows API的函数, 需要导入dll文件。这里由静态库(.lib)完成,它们使系统能在内存的动态基地址处动态的载入dll。Includelib \masm32\lib\kernel32.lib我们不只需要包含静态库,还需要包含.inc文件,这是由l2inc工具根据库文件自动生成的。include \masm32\include\kernel32.inc 特殊的包含文件Windows.inc,其中包含了Windows API的所有常量和结构的定义。

  • .data

    定义变量的地方

  • .code

    代码区域

  • start ... end start

    表示程序的开始/结束标签。这里不一定要用start, 可以使用任何单词和“end”语句后相同的标签。

相关文章

  • Win10 + MASM32 + EditPlus 汇编语言编程

    下载安装MASM32汇编环境 官方下载站:MASM32 环境变量配置 配置MasmHome变量,值为masm32的...

  • 汇编环境搭建 -- MASM32

    背景 当自己想使用C语言开发一个编译器的时候,需要将文本内容转换为汇编语言,此时需要我们对汇编语言具有一定了解及简...

  • win10下汇编语言开发环境搭建

    课后作业: 搭建汇编环境,要求是X86指令集 预习2-3章工具:DOSBOX与MASM32 工具准备 1.下载DO...

  • 汇编环境搭建

    对于一直想要学习汇编语言的我来说, 总是找不到一个理想的环境 上次软件安全课学会了使用MASM, 当时觉得这个工具...

  • 2.1汇编的学习环境搭建

    2.1汇编的学习环境搭建 2.1.1【我们为什么要学习汇编】 汇编的作用有很多,这里我们更偏终于对高级语言的理解,...

  • 汇编环境搭建 -- Visual Studio

    1. 创建空项目 2. 生成MASM规则 项目右键 -> 生成自定义 -> 勾选masm选项 3. 添加源文件 选...

  • LicheePi-zero搭建过程

    荔枝派开发环境搭建过程 一、前言 笔者最近为了熟悉 neon 以及 arm汇编 这些指令集,打算搭建一个在下 ar...

  • win10系统使用vsc进行汇编

    简述在win10 环境下搭建汇编环境,使用vsc+MASM/TASM 1.下载一个vsc 2.安装插件MASM/T...

  • deepin搭建8086汇编开发环境

    最近通过王爽编写的《汇编语言(第3版)》在学习8086汇编,王爽被誉为著名的计算机科学教育家、<脑补加粗>哲学家<...

  • mac下汇编环境的搭建

    需要使用的工具 1、dosbox软件 2、masm5,其中包括了很多的工具,link,debug,masm等 这些...

网友评论

    本文标题:汇编环境搭建 -- MASM32

    本文链接:https://www.haomeiwen.com/subject/bdkrjqtx.html