前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >汇编语言学习笔记-设置开发环境,编写hello world!

汇编语言学习笔记-设置开发环境,编写hello world!

作者头像
liulun
发布2022-05-09 11:22:00
4320
发布2022-05-09 11:22:00
举报
文章被收录于专栏:liulunliulun

我用的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的汇编代码如下

代码语言:javascript
复制
.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文件中定义的一种按钮类型

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档