School Commit Init
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
;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]
|
||||
|
||||
Reference in New Issue
Block a user