求大神帮忙看看
; ?功能:递归搜索C:\\下面的所有文件夹 并且打印出来; 本人初学汇编,写了如下程序,为方便大家读,刚加了点注释。
; 症状:运行无反应。。。求点破
.486 ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
include \masm32\include\kernel32.inc
include \masm32\include\windows.inc
includelib \masm32\lib\kernel32.lib
serch PROTO :DWORD ;申明过程
.stack
.data
despath db 'c:\\',0 ; 要搜索的路径
findtype db '*.*',0
uppath db '..',0
szCurDir db 1024 dup(0)
endstr db '$'
szFullNmae db 1024 dup(0)
.code
start:
invoke serch,addr despath ;启动过程
jmp exitme
serch proc szPath:DWORD ;过程定义
local fdata:WIN32_FIND_DATAA
local hFind:HANDLE
invoke SetCurrentDirectoryA,addr szPath ;设置当前工作目录
or eax,eax
jz return
invoke FindFirstFileA,addr findtype,addr fdata ;查找文件开始
mov hFind,eax
findloop:
invoke FindNextFileA,hFind,addr fdata ;循环搜索当前目录的文件
or eax,eax
jz return
mov al, fdata.cFileName
cmp al,'.'
jz findloop ; 如果 是'.'或者是'..'就continue 我只判断第一个字符
mov eax,FILE_ATTRIBUTE_DIRECTORY
and eax,fdata.dwFileAttributes ;是否是文件夹
jz notdirc ;不是文件夹
invoke GetCurrentDirectoryA,1023,addr szCurDir ;获取当前目录
mov edx,ebx ;打印
mov al,9
int 21
invoke serch,fdata.cFileName
invoke SetCurrentDirectoryA,addr uppath
notdirc:
nop
return:
mov eax,0
ret
serch endP
exitme:nop
end start