Files
2024-08-31 12:07:21 +03:00

89 lines
1.6 KiB
NASM

;Se citesc dintr-un fisier caractere, pana la intalnirea caracterului
;#. Sa se afiseze la consola numarul literelor mici, urmat de numarul
;literelor mari citite.
bits 32
global start
extern exit,printf,fread,fopen,fclose
import exit msvcrt.dll
import printf msvcrt.dll
import fread msvcrt.dll
import fopen msvcrt.dll
import fclose msvcrt.dll
segment data use32 class=data
file_path db "file.txt",0
mode db "r",0
file resd 1
char resb 1
upcount dd 0
locount dd 0
upwrite db "The number of upper case letters: %d",10,13,0
lowrite db "The number of lower case letters: %d",10,13,0
segment code use32 class=code
start:
push dword mode
push dword file_path
call [fopen]
add esp,4*2
mov [file], EAX
cmp EAX,0
je error
loop_label:
push dword [file]
push dword 1
push dword 1
push dword char
call [fread]
add esp,4*4
cmp EAX,"0"
je end
cmp byte [char],"#"
je end
cmp byte [char],"A"
jl loop_label
cmp byte [char],"z"
jg loop_label
cmp byte [char],"Z"
jle upper
cmp byte [char],"a"
jge lower
jmp loop_label
upper:
inc dword [upcount]
jmp loop_label
lower:
inc dword [locount]
jmp loop_label
end:
push dword [file]
call [fclose]
add esp, 4*1
push dword [locount]
push dword lowrite
call [printf]
add esp,4*2
push dword [upcount]
push dword upwrite
call [printf]
add esp,4*2
error:
push dword 0
call [exit]