汇编语言的Hello World


  汇编语言的Hello World,汇编语言没有我想象的那么低级,它已经具备了不少高级语言的特性,代码也变得清晰,层次清楚,易于维护了。

a.asm
None.gif.386 
None.gif.model flat,stdcall 
None.gifincludelib kernel32.lib 
None.gifincludelib user32.lib 
None.gif
None.gifMessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
None.gifMessageBox equ 
<MessageBoxA>
None.gifExitProcess PROTO :DWORD
None.gif
None.gif.data 
None.gifMsgBoxCaption  db 
"Welcome",0 
None.gifMsgBoxText       db 
"Hello world!",0 
None.gif
None.gif.code 
None.gifstart: 
None.gifinvoke MessageBox, 
0, addr MsgBoxText, addr MsgBoxCaption, 0 
None.gifinvoke ExitProcess, 
0
None.gifend start None.gif

ml a.asm /subsystem:windows
生成a.exe后直接执行

  是时候转变对汇编语言是低级语言的印象了。现在的宏汇编已经和高级语言没有太大的距离了。如下在的阶乘子程序:
None.giffactorial proc num:DWORD
None.gif    mov eax, 
1
None.gif    .
while num > 1
None.gif        imul eax, num
None.gif        dec num
None.gif    .endw
None.giffactorial endp
None.gif

  用C语言来写:

None.gifDWORD factorial(num DWORD)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif  DWORD val 
= 1;
InBlock.gif  
while(num>1)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif    val 
*= num;
InBlock.gif    num 
--;
ExpandedSubBlockEnd.gif  }

InBlock.gif  
return val;
ExpandedBlockEnd.gif}

  不过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的参考。

转载于:https://www.cnblogs.com/ly4cn/archive/2006/04/06/368210.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一条线一万美元的故事误导了你多少年

全世界只有3.14 % 的人关注了青少年数学之旅福特公司请斯坦门茨检修电机&#xff0c;画一道线用了一万美元&#xff0c;这个几乎人尽皆知的故事告诉我们一个道理&#xff1a;知识就是财富。故事讲到这里就结束了&#xff0c;但实际上&#xff0c;故事还有下文……20世纪初&…

ylbtech-Model-Account(通用账户模块设计)

ylbtech-DatabaseDesgin:ylbtech-Model-Account(通用账户模块设计)ylbtech-Model-Account(通用账户模块设计) 1.A&#xff0c;数据库关系图(Database Diagram)1.B&#xff0c;数据库设计脚本(Database Design Script)-- -- 用户模块设计 -- 2013-8-24 -- author:yuanbo -- US…

祝大家圣诞节快乐

同时庆祝 JWFD 20周年

刘敏:优麒麟开源操作系统运营实践 | DEV. Together 2021 中国开发者生态峰会

内容来源&#xff1a;2021 年 6 月 5 日&#xff0c;由 SegmentFault 思否主办的 2021 中国开发者生态峰会圆满落幕。会上&#xff0c;优麒麟开源社区运营负责人刘敏发表了主题为《优麒麟开源操作系统运营实践》的演讲&#xff0c;从市场的角度去讲解了一些其他板块的知识。分享…

suse linux下交叉编译,SUSE 10.1下交叉编译环境构建

作者&#xff1a;下载或复制arm-linux-gcc-3.4.1.tar.bz2到任意的目录下&#xff0c;这个软件配套的书中有&#xff0c;没有的和我联系copy给大家。书中介绍的crosstool制作工具的链的方法很好&#xff0c;但是很浪费时间&#xff0c;因为编译一次要数个小时&#xff0c;很是麻…

拖延的本质是逃避!| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源网络&#xff0c;侵权删&#xff09;扎心了↓ ↓ ↓

msn VS QQ

彻底不再使用QQ只用msn了。使用msn就像进入森林&#xff0c;安静悠闲&#xff0c;没有束缚。 转载于:https://www.cnblogs.com/yanrongpi/articles/372558.html

linux 查询系统性能,Linux 系统各种性能查询

几个cpumore /proc/cpuinfo |grep "physical id"|uniq|wc -l每个cpu是几核(假设cpu配置相同)more /proc/cpuinfo |grep "physical id"|grep "0"|wc -lcat /proc/cpuinfo | grep processor1. 查看物理CPU的个数#cat /proc/cpuinfo |grep "ph…

C# 无意间写了一段线程死锁的代码

源码如下&#xff1a;private void action_Click(object sender, RoutedEventArgs e){Task t new Task(() >{for (int i 0; i < 10; i){Thread.Sleep(1000);this.Dispatcher.Invoke(() >{lblStr.Content i.ToString();});manualResetEvent.Set();Console.WriteLine…

ZT:利用Google搜索功能来突破封锁下载

搜索Google大家都用过吧&#xff1f;我们正是利用它强劲的搜索功能来突破封锁下载&#xff0c;Google搜索和限制下载有什么关系&#xff0c;没可能实现吧&#xff1f;不要不相信哦&#xff0c;往下看哦&#xff01; 首先打开Google&#xff0c;在关键词输入框中输入“ "in…

PHP文件 字符集编码!

大家在用一些编辑器写PHP时&#xff0c;不会自动出现文件头&#xff0c;此时说明字符集编码需要如下代码&#xff1a; <?php header("content-type:text/html;charsetutf-8"); ?> utf-8国际通用编码。转载于:https://www.cnblogs.com/szlhtljt/p/3283007.htm

5G已来,你能做些什么?

5G大潮虽然已经来临&#xff0c;即便没有5G手机&#xff0c;小木还是要不甘示弱地测一下自己的网速&#xff0c;假装自己也是可以美美地在网上冲浪的&#xff01;小木的网速网友提供的5G测速多么痛的领悟&#xff0c;这差距还真的是很大&#xff01;说了这么多&#xff0c;你可…

java得到文件创建时间linux,linux java获取文件创建时间

linux java获取文件创建时间[2021-01-31 07:35:22] 简介:服务器背景有时候我们需要获取文件的创建时间。例如:我在研究 《xtrabackup 原理图》的时候&#xff0c;想通过观察确认 xtrabackup_log 是最php去除nbsp的方法&#xff1a;首先创建一个PHP代码示例文件&#xff1b;然后…

(转)提问的智慧

How To Ask Questions The Smart Way)这篇文章可以说是经典了&#xff0c;时不时的回头再读读&#xff0c;总有启发 Copyright (C) 2001 by Eric S. Raymond 中文版Copyleft 2001 by D.H.Grand(nOBODY/Ginux) 英文版&#xff1a;http://www.tuxedo.org/~esr/faqs/smart-questio…

认识WPF

新开一节WPF桌面开发的讲解&#xff0c;这节先初步认识一下什么是WPF。1.简介WPF是 Windows Presentation Foundation 的英文缩写&#xff0c;意为“窗体呈现基础”&#xff0c;是微软基于.NET Framework 3.0 推出的新一代构建窗体程序的框架。不同于WinForm&#xff0c;WPF实现…

MFC Attach()函数和Detach()函数

一、Windows对象和MFC对象的区别&#xff1f;MFC对象实际上并没有把整个Windows对象都包装在其中。对于窗口&#xff1a;MFC对象它只是有一个窗口句柄而已&#xff0c;这个窗口句柄如果指向一个实际存在的窗口对象&#xff08;窗口对象&#xff0c;也就是WNDCLASS&#xff0c;是…

用“谬论”指挥研究方向数十年,是谁让“老年痴呆”至今仍是绝症?

全世界只有3.14 % 的人关注了青少年数学之旅阿尔兹海默症&#xff0c;是“老年痴呆”的正确科学名称。它可能是世界上最广为人知的“绝症”之一&#xff1a;不仅让患者丧失了记忆和自我&#xff0c;也一直令在寻找治疗方法的学者和医药企业束手无策。30 多年前出现的“淀粉样蛋…

linux改环境语言,linux下改变语言环境

1、查看当前语言变量值$ locale2、查看系统内安装的语言$ locale -a3、临时修改语言值$ export LC_ALLen_US.UTF-8$ export LANGUAGEen_US:en$ export LC_ALLzh_CN.UTF-8$ export LC_ALLzh_CN.GB18030$ export LANGUAGEzh_CN:zh:en_US:en4.1、永久修改系统的语言值修改文件/etc…

杀毒软件

俗话说&#xff0c;每天打雁&#xff0c;结果被雁x了……不慎中了Trojan-PSW.Win32.QQPass.gf木马根据目前的测试&#xff0c;瑞星&#xff0c;Macfee&#xff0c;毒霸都没有能查出来这个木马只好手工删了。转载于:https://www.cnblogs.com/skogkatt/archive/2006/05/04/416321…

NLog源码解读——StringBuilderPool

刚刚骚情的跑了下NLog测试&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;一篇文章就那么Crash了~~~好吧&#xff0c;这次简化下&#xff0c;直接进入正题&#xff0c;有关GC的东东参考网上大部分文章吧。源码分析// StringBuilder 的建立也会耗费大量的资源&am…