汇编语言的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;从市场的角度去讲解了一些其他板块的知识。分享…

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

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

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…

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;然后…

认识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 多年前出现的“淀粉样蛋…

一定要多角度看事物 | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅一定要多角度看事物岁月对我们做了什么无法反驳论发型的重要性坐骨神经痛被赋予了新含义老师真的很会总结了&#xff08;图源E_Volution_&#xff09;扎心了↓ ↓ ↓

烧录imx6需要的linux空间,IMX6Q学习笔记——开发板的Linux系统更新和烧录

IMX6Q学习笔记——开发板的Linux系统更新和烧录记录自己在电鱼电子开发SAIL-IMX6Q全能板后&#xff0c;并且对系统和模块进行简单测试的过程之后对开发板的Linux系统进行更新和烧录的记录过程&#xff0c;算是进行一个分享和记录&#xff0c;同时也方便自己日后查阅。首先准备好…

ABP Framework:移除 EF Core Migrations 项目,统一数据上下文

原文&#xff1a;Unifying DbContexts for EF Core / Removing the EF Core Migrations Project[1]导读&#xff1a;软件开发的一切都需要平衡在 ABP Framework V4.4 RC 新增功能介绍 中&#xff0c;对应用程序启动解决方案模板做了一个重要改变&#xff1a;删除 EntityFramewo…

Hello Python

2019独角兽企业重金招聘Python工程师标准>>> My first Python demo>>> movies["a","b","c"] >>> print(movies[0]) a >>> print(movies[1]) b >>> >>> print(movies) [a, b, c…

牛顿儿时成绩很差,5岁开始接触物理,也许是他如此伟大的唯一原因!

全世界只有3.14 % 的人关注了青少年数学之旅我们都知道&#xff0c;牛顿是伟大的物理学家&#xff0c;但是也许很多人不知道&#xff0c;牛顿也是平常的孩子&#xff0c;他不是神童&#xff0c;成绩很一般。那牛顿是如何成为如此伟大的物理学家的呢&#xff1f;原来&#xff0c…

C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)

本节主要说了递归的设计和算法实现&#xff0c;以及递归的基本例程斐波拉契数列、strlen的递归解法、汉诺塔和全排列递归算法。 一、递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维&#xff0c;是一种分而治之的思想。 这个是常见的一种数学算法&#xff0c;其实它…

【物理动图】物理老师一针见血:50张动图看懂高中物理

全世界只有3.14 % 的人关注了青少年数学之旅相互作用作用力与反作用力的特点是什么&#xff1f;摩擦力的大小跟什么有关系&#xff1f;图中两个弹簧的弹力大小是否一样&#xff1f;若一样&#xff0c;为什么&#xff1f;自行车前后轮所受力的方向是什么&#xff1f;物块所受支持…

打造史上最小尺寸.Net Core单文件应用程序

.Net Core支持将应用程序发布成单文件进行部署和分发。以下示例将Windows应用作为独立的单文件应用程序发布&#xff1a;dotnet publish -r win-x64 -c Release /p:PublishSingleFiletrue /p:PublishTrimmedtrue /p:IncludeNativeLibrariesForSelfExtracttrue查看publish目录&a…

华硕路由器 linux上不了网,华硕ASUS路由器连不上网怎么办?

在本文中将给大家详细的介绍&#xff0c;华硕(ASUS)路由器连不上网/无法上网的解决办法&#xff0c;请按照下面的步骤进行操作。1. 首先&#xff0c;检查你的宽带是否可以正常使用&#xff0c;可以通过下面的方法进行测试。(1)观察光猫上的指示灯&#xff0c;如果光信号或者LOS…