-
汇编语言的Hello World
汇编语言的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
.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
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;
}
{
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的参考。
出 处:https://www.cnblogs.com/ly4cn/archive/2006/04/06/368210.html
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式