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

szCaption	db	'我的第一个汇编程序',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函数

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值