У меня есть файл .txt, который состоит из нескольких чисел, например 5123453479
.
Их нужно прочитать из этого файла, а затем найти их сумму. Мой код для чтения файлов работает нормально. Проблема в том, что я не могу получить определенный элемент из этого буфера. Допустим, я хочу получить индекс 2 из буфера (5123453479
), который номер 2.
lea edx, buffer[2]
push edx
call StdOut
Код выше возвращает 123453479 вместо 2
.
Это весь код:
include \masm32\include\masm32rt.inc
Main PROTO
.data
newLine db 10, 13, 0
txtFilter db "*.txt", 0
txtFD WIN32_FIND_DATA <>
txtHandle HANDLE ?
fHandle HANDLE ?
bufferLength dd ?
buffer db 5000 dup(?)
lnt dd 1024
error db "Error!", 0
.code
start:
invoke Main
invoke ExitProcess, 0
Main proc
; Find first .txt file in current directory
push offset txtFD
push offset txtFilter
call FindFirstFile
mov txtHandle, eax
; Print current file name
push offset txtFD.cFileName
call StdOut
; Print a newline
push offset newLine
call StdOut
; Open file
push 0 ; HANDLE hTemplateFile
push FILE_ATTRIBUTE_NORMAL ; DWORD dwFlagsAndAttributes
push OPEN_EXISTING ; DWORD dwCreationDisposition
push 0 ; LPSECURITY_ATTRIBUTES lpSecurityAttributes
push 0 ; DWORD dwShareMode
push GENERIC_READ ; DWORD dwDesiredAccess
push offset txtFD.cFileName ; LPCTSTR lpFileName,
call CreateFile
.if eax == INVALID_HANDLE_VALUE
jmp _error
.else
mov fHandle, eax
.endif
push 0 ; LPOVERLAPPED lpOverlapped
push offset bufferLength ; LPDWORD lpNumberOfBytesRead
push lnt ; DWORD nNumberOfBytesToRead
push offset buffer ; LPVOID lpBuffer
push fHandle ; HANDLE hFile
call ReadFile
jmp _next
_error:
push offset error
call StdOut
jmp _next
_next:
; Print text from file
push offset buffer
call StdOut
; Print a newline
push offset newLine
call StdOut
; Faulty code here
lea edx, buffer[2]
push edx
call StdOut
; Close a file handle
push fHandle
call CloseHandle
; Close a handle
push txtHandle
call FindClose
ret
Main endp
end start
Выход:
test.txt
5123453479
123453479
buffer[2]
неправильно. В настоящее время я просто хочу перечислить номер буфера по номеру, чтобы, наконец, я мог суммировать числа. Как я мог это сделать?