Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .586
- .model flat, C
- includelib msvcrt.lib
- extern exit: proc
- extern printf: proc
- extern scanf: proc
- public start
- .data
- sir_valori dd 100 dup(?)
- max_value dd ?
- mesaj_out db "Introduceti o valoare max: ", 0
- mesaj_in db "%d", 0
- float_f db "%.3f ", 0
- .code
- square proc
- mov EBP, ESP
- FLD1
- FILD DWORD PTR [EBP + 4]
- FIMUL DWORD PTR [EBP + 4] ; <=> val^2
- FDIV ; impartim valorile
- ret
- square endp
- start:
- push offset mesaj_out
- call printf
- add ESP, 04h
- push offset max_value
- push offset mesaj_in
- call scanf
- add ESP, 08h
- MOV ESI, 0
- MOV EBX, max_value
- MOV EAX, 1
- NotMax:
- push EAX
- call square
- add ESP, 04h
- ; - adaugare valori la sir
- FSTP sir_valori[ESI]
- ADD ESI, 04h
- INC EAX
- ; - stop condition
- cmp EAX, EBX
- JLE NotMax
- ; - afisarea lor
- XOR EAX, EAX
- XOR ESI, ESI
- MOV EBP, ESP
- Afisare:
- FLD sir_valori[ESI]
- ADD ESI, 4
- PUSH EAX
- PUSH EBX
- SUB ESP, 8
- FSTP QWORD PTR [EBP-16]
- push offset float_f
- call printf
- ADD ESP, 12
- POP EBX
- POP EAX
- INC EAX
- ; - stop condition
- cmp EAX, EBX
- JL Afisare
- push 0
- call exit
- end start
Advertisement