我正在编写一个程序,用于查找扩展名为" .fly"的文件。它显示已创建文件的名称,但是当我尝试使用FindFirstFile和FindNextFile时,我的程序崩溃了。我试过FindFirstFileA(该函数的ANSI版本),但我的代码也崩溃了。如果有可能,请给我一个代码示例。
拜托,谢谢你的回答。这是我用FASM程序集编写的源代码
format pe console 4.0
include 'C:\fasm\INCLUDE\WIN32AX.INC'
; Declare a macro to make buffers
macro dup label,lcount
{ forward
label#:
common
repeat lcount
forward
db 0
common
end repeat }
.code
main:
explore_directoy:
invoke FindFirstFile,file_extension, FIND_STRUCT ; find the first *.fly
mov dword [find_handle], eax
find_more_files:
cmp eax, 0
je exit
call show_file
findnextfile:
invoke FindNextFile, dword [find_handle], FIND_STRUCT
jmp find_more_files
show_file:
invoke MessageBox, NULL, addr msg, addr msg_caption, MB_OK ; Easy way of outputing the text
;invoke MessageBox, NULL, addr cFileName, addr msg_caption, MB_OK
ret
exit:
invoke ExitProcess, 0
datazone:
end_msg db 'End of program', 0
msg db 'File founded', 0
msg_caption db 'Assembly program...', 0
file_extension db '*.fly', 0
find_handle dd 0 ; handles/other stuff..
FIND_STRUCT: ; find structure used with searching
dwFileAttributes dd 0
ftCreationTime dd 0,0
ftLastAccessTime dd 0,0
ftLastWriteTime dd 0,0
nFileSizeHigh dd 0
nFileSizeLow dd 0
dwReserved0 dd 0
dwReserved1 dd 0
dup cFileName, 256 ; found file buffer
dup cAlternate, 14
.end main
答案 0 :(得分:2)
你的.text部分不可写。变化
.code
到
section '.text' readable writable executable
答案 1 :(得分:0)
数据应该进入.data部分,而不是.code部分。如果你的汇编程序支持未初始化的数据(所有值都定义为?),那么它应该进入.data? section(这相当于某些其他汇编程序中使用的bss(由符号开始的块)部分。)