J'ai essayé de lire la chaîne écrite dans un fichier .txt et de l'imprimer sur la console. Mais il semble que je ne le fais pas correctement. Quelqu'un peut-il revoir mes codes et me dire ce qui ne va pas? Merci!masm32 Fonction ReadFile x86 -Windows
include \masm32\include\masm32rt.inc
.data
txtFilter db "*.txt",0
txtFD WIN32_FIND_DATA <>
txtHandle HANDLE ?
fHandle HANDLE ?
bufferLength db ?
buffer db 5000 dup(?)
lnt db "1024",0
okay db "Okay!",0
dokay db "Dokay!",0
.code
start:
push offset txtFD
push offset txtFilter
call FindFirstFile
mov txtHandle, eax
push offset txtFD.cFileName
call StdOut
push 0
push FILE_ATTRIBUTE_NORMAL
push OPEN_EXISTING
push 0
push 0
push FILE_APPEND_DATA
push offset txtFD.cFileName
call CreateFile
.if eax == INVALID_HANDLE_VALUE
jmp _error
.else
mov fHandle, eax
.endif
push 0
push offset bufferLength
push offset lnt
push offset buffer
push fHandle
call ReadFile
jmp _next
_error:
push offset dokay
call StdOut
jmp _next
_okay:
push offset okay
call StdOut
_next:
push offset buffer
call StdOut
push fHandle
call CloseHandle
push txtHandle
call FindClose
push 0
call ExitProcess
end start
Le code ne semble pas lire ce qui se trouve dans mon fichier txt. Cependant, je peux rechercher avec succès mon fichier txt et exécuter la fonction CreateFile
Lorsque vous appelez ReadFile vous poussiez 'décalage lnt' plutôt que' lnt'. L'argument 'nNumberOfBytesToRead' est transmis par valeur, pas par adresse. –
aussi je doute que vous devez fournir la longueur «lnt» comme chaîne ASCII. j'essaierais plutôt 'lnt dd 1024' – Tommylee2k