crsandu

5 b)

Sep 6th, 2018
936
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .586
  2. .model flat, C
  3.  
  4. includelib msvcrt.lib
  5. extern exit:    proc
  6. extern printf:  proc
  7. extern scanf:   proc
  8.  
  9. public start
  10.  
  11. .data
  12.     sir_valori      dd  100 dup(?)
  13.    
  14.     max_value   dd  ?
  15.     mesaj_out   db  "Introduceti o valoare max: ", 0
  16.     mesaj_in    db  "%d", 0
  17.     float_f     db  "%.3f ", 0
  18.  
  19. .code
  20.     square  proc
  21.         mov EBP, ESP
  22.        
  23.         FLD1
  24.        
  25.         FILD    DWORD PTR [EBP + 4]
  26.         FIMUL   DWORD PTR [EBP + 4] ; <=> val^2
  27.        
  28.         FDIV ; impartim valorile
  29.         ret
  30.     square endp
  31.  
  32.     start:
  33.         push offset mesaj_out
  34.         call printf
  35.         add ESP, 04h
  36.        
  37.         push offset max_value
  38.         push offset mesaj_in
  39.         call scanf
  40.         add ESP, 08h
  41.        
  42.         MOV ESI, 0
  43.         MOV EBX, max_value
  44.         MOV EAX, 1
  45.        
  46.         NotMax:
  47.             push EAX
  48.             call square
  49.             add ESP, 04h
  50.        
  51.             ; - adaugare valori la sir
  52.             FSTP sir_valori[ESI]
  53.             ADD ESI, 04h
  54.             INC EAX
  55.  
  56.             ; - stop condition
  57.             cmp EAX, EBX
  58.            
  59.         JLE NotMax
  60.        
  61.         ; - afisarea lor
  62.         XOR EAX, EAX
  63.         XOR ESI, ESI
  64.         MOV EBP, ESP
  65.        
  66.         Afisare:
  67.             FLD sir_valori[ESI]
  68.             ADD ESI, 4
  69.  
  70.             PUSH EAX
  71.             PUSH EBX
  72.  
  73.             SUB ESP, 8
  74.             FSTP QWORD PTR [EBP-16]
  75.        
  76.             push offset float_f
  77.             call printf
  78.             ADD ESP, 12
  79.            
  80.             POP EBX
  81.             POP EAX
  82.            
  83.             INC EAX
  84.  
  85.             ; - stop condition
  86.             cmp EAX, EBX
  87.         JL Afisare
  88.        
  89.         push 0
  90.         call exit
  91. end start
Advertisement