masm32(汇编环境搭建)

如下提供的masm32和masm32(汇编环境搭建),小编精心为您推荐:

背景

当自己想使用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”语句后相同的标签。

masm32(汇编环境搭建)的相关问答如下:

提问: masm32如何使用

回答:你的程序在E盘,在C盘编译,程序中指定的\masm32\include.....是引用的C盘的,不是E盘的.当然不存在.把include加上盘符就好了. 如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快! 参考资料: http://vae.la

提问: 求一段简单的MASM32的汇编代码

回答:(1)data segment str1 db "hello$" str2 db " world$" str3 db ?data endscode segment assume cs:code,ds:data start:push dssub ax,axpush axmov ax,datamov ds,ax...

提问: masm 与 masm32 有什么不同 为什么我的汇编程序在masm 5.x能运行, 在masn32 v10运行不了?望高手赐教

回答:你用masm5.x是不是编的是实模式的程序,masm32都要求保护模式的程序吧

提问: 怎样使用MASM32汇编开发环境

回答:用一般的文本编辑器编写源文件.然后用ml编译,用link链接.具体用法用帮助选项·

提问: 刚下载的MASM32操作环境怎么配置?具体方法

回答:第一个set语句是告诉系统你的masm的include文件路径,set lib=x:\masm32\lib 这个是告诉系统你的lib文件在哪,第三个set语句是设置一个环境变量.给你举个例子吧,比...

提问: 我想知道怎样才能学好MASM32编程?

回答:masm32 sdk,是一个软件开发包利用masm汇编的语法,和作者开发的很多头文件和集中vc++6.0的导入库,做成的一个调用win api的方便的集成命令集而已.没有个三五年的知识积累,想用masm搞windows开发,那得看你天分是不是真的极高了.vb是对象封装最完整的高级语言masm32编程只不过是底层的一个个调用win api,根本就不存在控件,更别说动动鼠标就设计好了窗体,和VB完全不是一个系的东西,楼主还是从基础慢慢学吧,光汇编语言本身学好的人都不多.学汇编的话就不要先学win32汇编,等你水平高了再说.

masm32(汇编环境搭建)的相关热门搜索词:

masm32

TAG标签:

文章标题:masm32(汇编环境搭建)

转载注明出处:http://www.puyangxw.cn/zonhezixunn/513712.html

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!

随机标签推荐

濮阳新闻