当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 怎样建立你自己的MASM导入库 by Iczelion (翻译:花心萝卜yqzq@163.net) 9.5.2000 这篇短文是讲述关于建立MASM导入库(import libraries)技巧,我假设你已经知道什么是导入库。
 

 

 ·(译)win32asm教程-10    »显示摘要«
    摘要: 11.0 windows中的汇编基础 现在你已经有了一些汇编语言的基础知识,你将要学习在windows中怎样学习汇编。 10.1api windows编程的根本在于windows api,应用程序接口。这是由操作系统提供的一套函数。每个windows程序员都要用这些函数。这些函数在像kernel, user, gdi, shell, advapi等系统dll中。函数有两类:ansi和u......
 ·(译)win32asm教程-8    »显示摘要«
    摘要: 9.0更多的伪代码 这儿有更多的伪代码 test test对两个参数(目标,源)执行and逻辑操作,并根据结果设置标志寄存器。结果本身不会保存。test用来测试一个位,例如寄存器: test eax, 100b;b后缀意为二进制jnz bitset 如果eax右数第三个位被设置了,jnz将会跳转。test的一个非常普遍的用法是用来测试一方寄存器是否为空: test ecx, ec......


怎样建立你自己的MASM导入库
怎样建立你自己的masm导入库

     这篇短文是讲述关于建立masm导入库(import libraries)技巧,我假设你已经知道什么是导入库.在下面,我将集中讲述建立masm导入库的方法. 【程序编程相关:ActionScript 中的所有关键字

by iczelion (翻译:花心萝卜yqzq@163.net) 9.5.2000 【推荐阅读:发现了一个论坛

    masm与vc++可以使用相同的导入库,ms导入库使用不同于tasm的omf格式的变更的coff文件格式,这就是为什么tasm与masm的导入库不能互用的原因,我将不详细介绍有关ms导入库的格式.可以这样说,每一个ms导入库都包含某个dll中函数的信息(你将要用这些信息来调用dll中的函数),这些信息包括函数名与它所有参数的尺寸.如果你用一个文本编辑器打开kernel32.lib,你回发现一些如下格式的信息:

_exitprocess@4 【扩展信息:ActionScript 中的所有关键字

masm导入库的格式:

_createprocessa@40

    函数名被装饰上了一个“_”,在“@”之后的数字表示了该函数所有参数的尺寸(字节为单位),exitprocess 函数只有一个dword的参数,所以后面的数字是4. lib中为什么要包含这些参数尺寸的信息呢?当你用invoke调用函数时,这些信息被用来检测传递给函数的参数是否正确.如果你使用“手工”将参数压入堆栈,并通过“call”来调用函数的话,masm将无法检测参数是否正确.这将导致我们几乎没有办法建立一个dll的导入库,因为dll并不包含清楚的关于参数尺寸的信息.

从dll建立masm导入库

如果你很乐意用“手动”(call)的方法去调用函数的话,你可以象下面这样为任何一个dll建立masm的导入库: 使用dumpbin.exe,它可以导出dll 输出(export)函数的名字. dumpbin /exports  blah.dll  >  output.txt 在你获得了函数名列表之后,通过他们建立一个模块定义文件(.def). 举个例子:如果dll只包含一个函数:getsomeline 在一个文本文件中输入如下内容: library blah

exports

getsomeline     并将其保存为“blah.def 象这样,运行lib.exe,通过模块定义文件建立一个导入库:

  lib /def:blah.def就是它了!你将获得blah.lib,只要你不使用invoke调用函数的话,你就可以在masm中使用它.
...   下一页
 ·(译)win32asm教程-6    »显示摘要«
    摘要: 7.0条件跳转 在code部分,你可以看到像这样的标签: .code mov eax, edxsub eax, ecxcmp eax, 2jz loc1xor eax, eaxjmp loc2loc1:xor eax, eaxinc eaxloc2: (xor eax, eax意为:eax=0) 让我们来看看这些代码: mov eax, edx;把edx放入eax中 sub e......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE