caterpilla 发表于 2006-6-22 13:29:47

汇编语言小例子1--用WIN32 API来获取当前目录

调用WIN32 API获取了当前目录,在MASM环境下编译。。。。。。。



;----------------
;编译模式="CON"
;----------------
.386
.model flat, stdcall
option casemap :none

include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc

includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
;-------------------------------------------------------

.DATA
        szPath db 256 dup(?)
.CODE
START:

        invoke GetCurrentDirectory,256,addr szPath;获取当前目录
        invoke StrLen,addr szPath
        mov ebx,eax                      ;得到字符串长度,用于修正缓冲区内容
        mov szPath,13
        inc ebx
        mov szPath,10
        inc ebx
        mov szPath,0
        push ebx
        invoke StdOut,addr szPath
        pop ebx
        .while(ebx!=0)                     ;清空缓冲区,此处WHILE为MASM新增的高级特性
           mov szPath,0
                dec ebx
        .endw
        mov szPath,0
        invoke StdIn,addr szPath,sizeof szPath
        invoke StrLen,addr szPath
        mov ebx,eax
        sub ebx,2
        mov szPath,0
        invoke SetCurrentDirectory,addr szPath

        invoke GetCurrentDirectory,256,addr szPath
        invoke StrLen,addr szPath
        mov ebx,eax
        mov szPath,13
        inc ebx
        mov szPath,10
        inc ebx
        mov szPath,0
        invoke StdOut,addr szPath

        invoke ExitProcess,0

end START

[ 本帖最后由 caterpilla 于 2006-6-22 13:35 编辑 ]

hacker0058 发表于 2006-6-23 19:44:43

LINK : fatal error LNK1104: cannot open file "masm32.lib"

构建时发生错误.
总共编译时间 687 毫秒

楼主能传个上来吗?

hacker0058 发表于 2006-6-23 19:49:44

还有这个

szPath db 256 dup(?)

是定以数组吗?我是个新手,能具体讲讲吗?

如果楼主懂易语言的话,就结合易语言来讲,谢谢!

caterpilla 发表于 2006-6-23 20:03:32

原帖由 hacker0058 于 2006-6-23 19:49 发表
还有这个

szPath db 256 dup(?)

是定以数组吗?我是个新手,能具体讲讲吗?

如果楼主懂易语言的话,就结合易语言来讲,谢谢!
这是定义256字节的缓冲区,相当于是数组吧。易语言不懂,但能定义数组的话,可以定义一个BYTE类型的数组。

hacker0058 发表于 2006-6-23 20:08:28

哦,明白了
页: [1]
查看完整版本: 汇编语言小例子1--用WIN32 API来获取当前目录