汇编语言的Hello World
a.asm
.386
.model flat,stdcall
includelib kernel32.lib
includelib user32.lib 
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
MessageBox equ <MessageBoxA>
ExitProcess PROTO :DWORD
.data
MsgBoxCaption db "Welcome",0
MsgBoxText db "Hello world!",0 
.code
start:
invoke MessageBox, 0, addr MsgBoxText, addr MsgBoxCaption, 0
invoke ExitProcess, 0
end start 
ml a.asm /subsystem:windows
生成a.exe后直接执行
是时候转变对汇编语言是低级语言的印象了。现在的宏汇编已经和高级语言没有太大的距离了。如下在的阶乘子程序:
factorial proc num:DWORD
mov eax, 1
.while num > 1
imul eax, num
dec num
.endw
factorial endp
用C语言来写:
DWORD factorial(num DWORD)
{
DWORD val = 1;
while(num>1)
{
val *= num;
num --;
}
return val;
}不过C++2005自带的MASM没有 *.inc文件,连2003的h2inc.exe都不提供。据说M$有可能会发布MASM8.0版本的开发包,但是至今没有任何消息。很郁闷!!!
经过一翻搜索,终于找到第三方支持的MASM开发包。http://www.masm32.rantx.com/files/m32v9r.zip
支持网站:http://www.movsd.com/
http://spiff.tripnet.se/~iczelion/
最新的版本用的 MASM 是6.14版本。附加的inc和lib文件非常全面。
之所以不用更新版本的MASM是为了避免License问题。关于6.14版本与更高版本之间的兼容比较,可以参考:
http://www.masm32.com/mlcompat.htm
更全面的中文教程(yycnet.yeah.net翻译)地址在下面:
http://211.147.7.6:9999/flyfish/source/win32asm.chm
对Masm8.0有兴趣,并想知道其改进,可再参考MSDN Library中关于MASM的参考。
汇编语言的Hello World的更多相关文章
- 浅谈单片机中C语言与汇编语言的转换
做了一单片机设计,要用C语言与汇编语言同时实现,现将这次设计的感受和收获,还有遇到的问题写下,欢迎感兴趣的朋友交流想法,提出建议. 单片机设计:基于51单片机的99码表设计 软件环境:Proteus8 ...
- 汇编语言标志位 含义 NV UP EI NG NZ AC PE CY
缩写原意: Overflow of = OV NV [No Overflow] Direction df = DN (decrement) UP (increment) Interrupt if = ...
- ASM:《X86汇编语言-从实模式到保护模式》第15章:任务切换
15章其实应该是和14章相辅相成的(感觉应该是作者觉得14章内容太多了然后切出来了一点).任务切换和14章的某些概念是分不开的. ★PART1:任务门与任务切换的方法 1. 任务管理程序 14章的时候 ...
- 汇编语言标记寄存器标记位_NV UP EI NG NZ AC PE CY
在8086CPU中,有一种标记寄存器,长度为16bit: 其中存储的信息被称为程序状态字(Program Status Word,PSW),以下将该寄存器简称为flag. 功能:1)用来存储相关指令的 ...
- 汇编语言学习与Makefile入门
继续开发 ; hello-os ; TAB= ORG 0x7c00 ; 指明程序的装载地址 ; 以下的记述用于标准FAT12格式的软盘 JMP entry DB 0x90 DB "HELLO ...
- 王爽-汇编语言-综合研究四-不使用main函数编程
(一) 研究目的 使用C语言编程,我们一定要使用main函数么? (二) 研究过程 1) 最初的程序 首先,我们编写一个不写main函数的C语言程序. 程序如下: 在编译的过程中,没有发现错误.在链接 ...
- VC++中开发汇编语言(转)
汇编程序结构 一个显示字符串的汇编程序 程序格式 一.模式定义 二.includelib语句 三.函数声明语句 四.数据和代码部分 Visual C/C++环境 建立工程 汇编程序的调试 一.设置断点 ...
- 汇编学习(三)——汇编语言程序入门
一.寻址方式 1.概念: 一条指令由操作码和操作数构成,操作码是系统定义好的符号,执行指定的操作,操作数即是指令的对象,而寻址方式就是操作数的指定方式 操作码 目的操作数,源操作数 2.寻址方式的三种 ...
- Linux内核设计第一周 ——从汇编语言出发理解计算机工作原理
Linux内核设计第一周 ——从汇编语言出发理解计算机工作原理 作者:宋宸宁(20135315) 一.实验过程 图1 编写songchenning5315.c文件 图2 将c文件汇编成32位机器语言 ...
- TMS320C54x系列DSP指令和编程指南——第1章 汇编语言工具概述
第1章 汇编语言工具概述 TMS320C54x DSP的汇编语言开发工具包括: ■ Assembler ■ Archiver ■ Linker ■ Absolut ...
随机推荐
- 如何在k8s集群里快速运行一个镜像?
在docker里,快速run一个镜像,很简单的. k8s的世界,与之类似. 但要注意一下,如果镜像本身没有提供command命令,这个容器由于前台输出完成,很快就退出了. 所以,遇到这种镜像,就最好自 ...
- Django实战(3):Django也可以有scaffold
rails有一个无用的”神奇“功能,叫做scaffold.能够在model基础上,自动生成CRUD的界面. 说它无用,是因为rails的开发者David说,scaffold”不是应用程序开发的目的.它 ...
- 【转】SyntaxError: Non-ASCII character ‘\xe5′ in file
SyntaxError: Non-ASCII character ‘\xe5′ in file 在写一个小脚本,运行起来总是出现这个错误 查了下Python的默认编码文件是用的ASCII码,你将文件存 ...
- Jersey入门二:运行项目
1.项目有了,在终端窗口进入项目的根目录(即 \simple-service ) 2.现在先测试运行下: mvn clean test  项目将会被编译,并且进行单元测试  上面可以看看到测试通过 ...
- MySQL性能优化(七·下)-- 锁机制 之 行锁
一.行锁概念及特点 1.概念:给单独的一行记录加锁,主要应用于innodb表存储引擎 2.特点:在innodb存储引擎中应用比较多,支持事务.开销大.加锁慢:会出现死锁:锁的粒度小,并发情况下,产生锁 ...
- 批量ssh登录,获取操作系统、CPU、内存、硬盘信息<shell>
说明:该脚本读取machine.txt文件中的机器名,然后批量ssh登录,获取每台机器的操作系统,CPU,内存,硬盘等信息. 使用方法:将文件保存为sh,chmod +x filename 为该sh文 ...
- [漏洞复现]CVE-2010-2883 Adobe Reader 打开pdf电脑即刻中招
1.漏洞概述: CVE-2010-2883漏洞原理:“Adobe Reader在处理CoolType字体文件的sing表时,存在栈溢出漏洞,当打开特制的恶意PDF文件时,可允许任意代码远程执行.” 影 ...
- pycharm安装使用,python运算规则
首先讲了pycharm的安装和使用,基本上算是个脚本编辑器.另外pycharm的一些操作方法:http://edu.51cto.com/course/9043.html 葫芦老师录的pycharm视频 ...
- 浏览器在线查看pdf文件 pdf.js的使用教程
谷歌浏览器可以直接在线查看pdf,而IE内核浏览器无法在线查看,默认是下载. 这里用到的是pdf.js,不仅支持IE内核浏览器,而且兼容手机查看pdf 官网地址:http://mozilla.gith ...
- [NOI2018]你的名字(SAM+线段树合并)
考虑l=1,r=n的68分,对S和T建SAM,对T的SAM上的每个节点,计算它能给答案带来多少贡献. T上节点x代表的本质不同的子串数为mx[x]-mx[fa[x]],然后需要去掉所代表子串与S的最长 ...