您的位置:首页 > 编程语言

Win32汇编语言学习笔记>>第二课:编写第一个Win32汇编程序

2013-01-01 12:33 531 查看
本节课主要是编译连接一段写好的代码:

程序运行如下:






代码:

.386 .modelflat,stdcall optioncasemap:none includeC:\masm32\include\windows.inc includeC:\masm32\include\user32.inc includelibC:\masm32\lib\user32.lib includeC:\masm32\include\kernel32.inc includelibC:\masm32\lib\kernel32.lib .data szCaption db '我的第一个汇编程序',0 szTextdb 'HelloWorld!',0 .code start: invokeMessageBox,NULL,offsetszText,offsetszCaption,MB_OK invokeExitProcess,0 endstart

一、编译、链接程序

切换到源程序目录(当然你也可以在命令行显示加上你的源程序的路径)

编译:Ml/c/coff1.asm

连接:Link/subsystem:windows1.obj


当然你还可以用MASM32可视化来操作,我的系统是win7的,用MASM32先编译直接就给我报了个:errorRC1110:couldnotopenrsrc.rc

郁闷,然后就直接:RebulidALl,这样就一切OK.不知道为什么。


二、模式定义

.386

.modelflat,stdcall

optioncasemap:none



.386语句是汇编语言的伪指令,告诉编译器使用的是386指令集。比如还有.8086,.186,.286,.386/.386p,.

486/.486p等等。后面带p的表示程序中可以使用特仅指令,由于我们写的是Win32程序,不会用到特仅指令,所

以定义.386就够了,如果要编写驱动程序的话,就需要用到特仅指令,这时就要定义成.386p。



model语句的格式


.model内存模式[,语言模式][,其他模式]

内存模式的定义影响最后生成的可执行文件,可执行文件的规模从小到大,可以有很多种类型

模式
内存使用方式
tiny
small
medium
compact
large
huge
flat
用来建立.com文件,所有的代码、数据和堆栈都在同一个64KB段内
建立代码和数据分别用一个64KB段的.exe文件
代码段可以有多个64KB段,数据段只有一个64KB段
代码段只有一个64KB段,数据段可以有多个64KB段
代码段和数据段都可以有多个64KB段
同large,并且数据段中的一个数组也可以超过64KB
Win32程序使用的模式,代码和数据段使用同一个4GB段
Stdcall是函数调用约定:参数从右向左压栈,由被调用函数平衡堆栈


optioncasemap:none,程序中的大小写敏感


三、段的定义

.386

.modelflat,stdcall

optioncasemap:none

<一些include语句>

.data

<一些字符串、变量定义>

.code

<代码>

<开始标号>

<其他语句>

end开始标号

四、程序的入口与结束

.code

start:

endstart

五、什么是API函数

API(ApplicationProgrammingInterface,应用程序编程接口)

API函数包含在Windows系统目录下的动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll等等)。.

我们在软件开发的过程中,经常会使用到很API函数,比如MessageBox就是一个API函数,这个API函数

的功能就是弹出一个对话框。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐