Windows编程学习记录(六)——调用API

1.WIN32中API的作用

WIN32中API的作用是以一种新的方式替代了DOS中软中断的作用。在DOS中用汇编语言编程,要调用系统提供的功能,首先要知道中断号,其次要知道中断号的功能号,如打印一个字符串,就要使用21h号中断的9号功能。使用的过程中,功能号存放在AH中,DX中存放字符串地址,最后int21h。

mov ah,9
mov dx,offset szHello
int 21h

这种方法比较繁琐,需要不断地查中断表。与DOS系统不同,WIN32系统的功能模块是放在DLL中的,在DLL文件的PE头导出表中,以字符串的形式指出了这个DLL提供的导出函数列表,应用程序可以通过函数名调用。

 

 2.函数的声明

格式: 函数名 proto [距离] [call模式] [参数1]:数据类型, [参数2]:数据类型,……

[]中的内容都可以省略。距离NEAR、FAR等等,通常省略,因为WIN32汇编程序中只有一个FLAT段。call模式即cdelcall、stdcall等,如果省略则使用.model的默认值。参数名可以省略,加上只改善代码的可读性。WIN32汇编只使用DWORD类型的参数,所以数据类型基本是DWORD。

2.1 include和includelib

include和c语言中的include类似,等于添加了一个包含函数声明的头文件,编译器在编译时将include语句直接替换成目标文件。而includelib则包含了DLL中导出函数的信息,链接时链接器根据这些信息到指定DLL中找到对应函数。

可以这样理解:如果没有include对应.inc文件则找不到函数的声明,没有includelib对应.lib文件则找不到函数的实现。

 

3.函数的调用

为了避免整个源代码都在push push call,MASM提供了一个伪指令:invoke 函数明,参数,参数……通过这种方式

3.1函数的返回值

函数的返回值放在eax中,如果返回值是64位,则高位放在edx中。如果返回值太大,就返回指向返回值的指针。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值