Работа с файлами в masm32

Я пишу алгоритм для такой задачи: На диске имеется файл in.txt, в котором записано несколько строк, содержащих не более 9 слов каждая (необходимо самостоятельно подготовить файл in.txt, где в качестве символов можно использовать только английские буквы). Нужно подсчитать количество букв "а" в каждой строке и записать результат в файл out.txt.

Я написал код, который считывает текст из in.txt в буфер и записывает его в out.txt. Подскажите, как я могу достать из буфера по одному очередному символу, чтобы сравнить его?

.386
.model flat, stdcall    
option casemap :none
    include includes\windows.inc
    include includes\kernel32.inc
    include includes\masm32.inc
    include includes\msvcrt.inc
    include includes\macros\macros.asm
    includelib includes\masm32.lib
    includelib includes\msvcrt.lib
SEEK_SET    =   0                    
SEEK_CUR    =   1                   
SEEK_END    =   2                    
 
.data
    fInputName   db  'in.txt', 0
    fOutputName db 'out.txt', 0
    fMessageError db  '%s Not found',0
    fReadMode   db  'r+',0
    fCreateMode   db  'w+',0
    stringMode    db  '%s', 10, 0
    bufInput dd  0
.data?
    handleInput    dd  ?
    handleOutput    dd  ?
    fInputSize    dd  ?
    
.code
start:  
    invoke  crt_fopen, ADDR fInputName, ADDR fReadMode 
    or  eax,eax
        jnz @F
            invoke  crt_printf, fMessageError, ADDR fInputName
            jmp endkol
@@: 
    mov [handleInput], eax
    invoke  crt_fseek, eax, NULL, SEEK_END 
    invoke  crt_ftell, [handleInput] 
    mov [fInputSize], eax
    invoke  crt_fseek, [handleInput], NULL, SEEK_SET 
    invoke  crt_malloc, [fInputSize] 
    or  eax, eax
        jz  endkol        
    mov [bufInput],eax
    invoke  crt_fread, [bufInput], [fInputSize], 1, [handleInput] 
    invoke  crt_fclose, [handleInput] 
    
    invoke  crt_fopen, ADDR fOutputName, ADDR fCreateMode
    mov [handleOutput], eax
 
    invoke  crt_fwrite, [bufInput], fInputSize, 1, handleOutput
   
endkol:   
    invoke  crt_free, [bufInput]      
    invoke  crt_exit, 0      
end start

Ответы (0 шт):