汇编语言学习笔记-设置开发环境,编写hello world!
我用的IDE是masm32
官方网站是:http://www.masm32.com/
下载的地址是:http://www.masm32au.com/masm32/m32v10r.zip
(这个包适合中国人开发For programmers in Australia, China, South East Asia and the Pacific region.)
hello world的汇编代码如下

.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.data
szCaption db 'BOX',0
szText db 'hello world',0
.code
start:
invoke MessageBox,NULL,offset szText,\
offset szCaption,MB_OK
invoke ExitProcess,NULL
end start
代码输入完毕后
保存成asm文件然后
工具栏》》project>>build all
就可以在你的工程目录中找到相应的exe文件
下面说明一下代码的主要含义
.386
是说运行在386核心的CPU上,且特权级别最低
flat
是说内存平坦,且拥有4G的地址空间可以访问
stdcall
使用堆栈传递参数,使用从右向左的方式将参数入栈,堆栈的平衡是由子程序来完成的
option casemap:none
程序中区分大小写
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
引用一些必要的文件
inc文件是函数声明
lib文件中包括函数的定义
如果你运行本程序此处报错的话,请改为绝对路径
.data
szCaption db 'BOX',0
szText db 'hello world',0
定义变量, db是字节类型的变量,dw是字类型,dd是双字类型。支付传后面跟0是为了标明字符串的结束(与C类似)
.code
start:
invoke MessageBox,NULL,offset szText,\
offset szCaption,MB_OK
invoke ExitProcess,NULL
end start
.code代码段定义
end start程序结束
与start:配对
start只是个标记,可以随便定义,应用系统根据这个标记来找到程序的开始位置
invoke调用系统函数
offset取地址
MB_OK是在前面的inc文件中定义的一种按钮类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
2008-12-26 存储过程和用户自定义函数