汇编语言学习笔记-设置开发环境,编写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文件中定义的一种按钮类型

时间: 2024-10-25 06:21:43

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

Cocos2d-x学习笔记之开发环境搭建_C 语言

要问如今什么比较火,当然是手机app了,随之智能机的普及,不断推出了越来越多的手机app,而游戏其实也是一种app.cocos2d-x一款免费游戏开发引擎,本着开源.跨平台的特色,成为了越来越多的手机游戏的开发引擎,所以让我们也来学习cocos2d-x这款游戏引擎吧.通过学习cocos2d-x,我们将了解更多关于游戏开发的知识,比如lua脚本.Box2d物理引擎.代码设计思想等等.总之,我们并不局限于学习cocos2d-x本身,而是通过学习cocos2d-x,掌握更多的游戏开发经验和技巧.现在就

【Android平台】 Alljoyn学习笔记三 开发环境的搭建和Building AllJoyn from Source for Android

BUILD FROM SOURCE - ANDROID Prerequisites The following content uses many terms and concepts that are described in the Introduction to the AllJoyn Framework. Therefore, it is strongly recommended that you read the Introduction content first. Before p

《ASP.NET MVC 4 实战》----第 2 章 第一个MVC应用程序 2.1 设置开发环境

第 2 章 第一个MVC应用程序 ASP.NET MVC 4 实战 本章内容 本章将介绍Guestbook(留言簿)应用程序,它也是本书第1部分的其余章节所使用的示例.Guestbook是一个简单的应用程序,它让用户向网站递交他们的姓名和消息,并查看其他用户递交的消息.虽然这个Guestbook的概念很简单,但是我们将用它来考察ASP.NET MVC的核心组件. 在本书的第1部分中,我们将建立这个示例.为了使用MVC应用程序,首先看看需要安装的开发工具,然后创建Guestbook应用程序的初步骨

VSTO学习笔记(三) 开发Office 2010 64位COM加载项

原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(Automation Executables) 2.Office加载项(COM or Excel Add-In) 3.Office文档代码或模板(Code Behind an Office Document or Template) 4.Office 智能标签(Smart Tags) 本次我们将学习使

ide-Android如何设置开发环境?

问题描述 Android如何设置开发环境? 不知道Google是全国范围内的禁用,还是个别地区的禁用.大家在设置自己的开发环境的时候,有没有遇到IDE不能升级,SDK不能安装或升级的情况?大家如何绕过的... 是通过修改hosts文件吗?我现在的情况是修改hosts后,SDK可以升级或安装.但是IDE就无法访问升级服务器了.反之亦然. 现在SDK Manager无法运行,点击直接没反应,而不是网上普遍反应的一闪即逝,我的连闪都不闪. SDK Manager 的可执行文件在哪里?AndroidSt

Masm for Windows集成开发环境编写汇编程序

由于最近在学习汇编,用的软件是一款叫"Masm for Windows集成开发环境",但是发现该软件的资料比较少,对于我们这样刚刚学习汇编的同学,我查找了很多资料,下面主要是介绍该工具及2个汇编的基本程序. 一.软件的使用 下面是阅读完四川大学的课件后几张介绍该软件运行的基本方法: 1.进入Masm forWindows集成实验环境 2.编写程序,该代码是该软件自带的简单入门实例11个中的第一个,后面将详细介绍该代码 3.保存汇编程序.编写完程序必须要保存后才能运行 4.运行程序 5.

java学习笔记1--开发环境平台总结

1.Java程序设计语言 Java程序设计语言是一种高级语言,它用我们熟悉的字词.句等表述需要计算机为我们做的事情.大多数程序设计语言,都要经过编译或解释以便能在计算机上运行. 在Java程序设计语言中,所有源代码写在一个扩展名是.java的纯文本文件里.这些源文件通过Java编译器(javac.exe)编译 成.class文件..class文件不包含本地处理器的代码,而包含Java虚拟机机器语言代码,它是一种在Java平台上被解释器解释的平台无关代 码,称之为"字节码". Java执

ODB学习笔记之基础环境搭建

一,简介 ODB是应用于C++的一个开源.跨平台.跨数据库的对象关系映射(ORM)系统. 它可以让你持久化C++对象到关系数据库,而不必处理表.列或者SQL,无需手动编写任何映射代码. ODB支持MySQL,SQLite,PostgreSQL,Oracle和微软SQL Server关系数据库以及C ++98/03和C ++11语言标准. 它还配备了用于Boost和Qt可选的配置文件,让你可以无缝地使用这些库持久化C++类的值类型.容器和智能指针. 它有易用性,简洁的代码,安全,数据库可移植性,优

突破瓶颈,对比学习:Eclipse开发环境与VS开发环境的调试对比

曾经看了不少Java和Android的相关知识,不过光看不练易失忆,所以,还是写点文字,除了加强下记忆,也证明我曾经学过~~~ 突破瓶颈,对比学习: 学习一门语言,开发环境很重,对于VS的方形线条开发环境有先入为主的先天因素. 因此多年以来(从学校开java课),对Eclipse那椭圆形的线条,似乎有点抗拒或格格不入的情怀.   抗拒情怀其实是一种瓶颈,如果不突破,很容易被局限,不管是跨语言的水平扩展突破,还是语言内的突破,都是同理. 只要是开发者,总会遇到到瓶颈,而这瓶颈久久不能突破,就是抗拒