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


本节课主要是编译连接一段写好的代码:

程序运行如下:


代码:

.386
.model flat,stdcall
option casemap:none

include C:\masm32\include\windows.inc
include C:\masm32\include\user32.inc
includelib C:\masm32\lib\user32.lib
include C:\masm32\include\kernel32.inc
includelib C:\masm32\lib\kernel32.lib

.data

szCaptiondb'我的第一个汇编程序',0
szText db'Hello World!',0

.code

start:
invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
invoke ExitProcess,0
end start


一、编译、链接程序

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

    编译:    Ml /c /coff 1.asm
    连接:    Link /subsystem:windows 1.obj
当然你还可以用MASM32可视化来操作,我的系统是win7的,用MASM32先编译直接就给我报了个:error RC1110:could not open rsrc.rc  
郁闷,然后就直接:Rebulid ALl ,这样就一切OK.不知道为什么。

 

二、模式定义

 

        .386
        .model flat,stdcall
         option casemap:none
 
 
.386语句是汇编语言的伪指令,告诉编译器使用的是386指令集。比如还有.8086,.186,.286,.386/.386p,.
486/.486p等等。后面带p的表示程序中可以使用特仅指令,由于我们写的是Win32程序,不会用到特仅指令,所
以定义.386就够了,如果要编写驱动程序的话,就需要用到特仅指令,这时就要定义成.386p。
 
 
model语句的格式
 

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

 

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

 

 

模    式

内 存 使 用 方 式

tiny

small

medium

compact

large

huge

flat

用来建立 .com文件,所有的代码、数据和堆栈都在同一个64 KB段内

建立代码和数据分别用一个64 KB段的 .exe文件

代码段可以有多个64 KB段,数据段只有一个64 KB段

代码段只有一个64 KB段,数据段可以有多个64 KB段

代码段和数据段都可以有多个64 KB段

同large,并且数据段中的一个数组也可以超过64 KB

Win32程序使用的模式,代码和数据段使用同一个4 GB段

 

Stdcall是函数调用约定:参数从右向左压栈,由被调用函数平衡堆栈
 
option casemap:none,程序中的大小写敏感 

      

三、段的定义

 

       .386

.model flat,stdcall

option casemap:none

  <一些include语句>

.data

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

.code

  <代码>

  <开始标号>

     <其他语句>

end 开始标号

 

四、程序的入口与结束

 

.code

start:

 

end start

 

五、什么是API函数

 

API(Application Programming Interface,应用程序编程接口)

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

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

的功能就是弹出一个对话框。

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告