Guest User

Untitled

a guest
Jan 25th, 2015
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. extern scanf
  2. extern printf
  3. global main
  4.    
  5. section .data
  6.    
  7.     float_format: db "%f",0
  8.     int_format: db "Wartość całki dla aktualnego kroku: %d",10,0
  9.     int_format1: db "Wynik: %d",10,0
  10.  
  11.    
  12.     w1: db "Oblicznie calki x^2 ", 10,0
  13.     w2: db "Od: ", 10,0
  14.     w3: db "Do: ", 10,0
  15.    
  16.     od: times 4 db 0 ; 32 bity - 4 bajty
  17.     integral: times 4 db 0
  18.     do: times 4 db 0
  19.     step: times 4 db 0
  20.     now: times 4 db 0
  21.  
  22. section .bss
  23. section .text
  24.  
  25. main:
  26.     mov rdi,w1
  27.     mov rax,0
  28.     call printf
  29.  
  30.     mov rdi,w2
  31.     mov rax,0
  32.     call printf
  33.  
  34.     mov edi,float_format
  35.     mov eax,0
  36.     mov esi,od
  37.     call scanf
  38.  
  39.     mov rdi,w3
  40.     mov rax,0
  41.     call printf
  42.  
  43.     mov edi,float_format
  44.     mov eax,0
  45.     mov esi,do
  46.     call scanf
  47.  
  48.     ; oblicz dx
  49.     finit
  50.     mov eax,1000
  51.     mov [integral],eax
  52.  
  53.     fild dword [integral]
  54.     fld dword [od]
  55.     fld dword [do]
  56.  
  57.     fsub st0,st1
  58.     fdiv st0,st2
  59.     fstp dword [step]
  60.    
  61.     ;zainicjuj petle
  62.    
  63.     mov eax,1000
  64.    
  65.     fldz
  66.     fld dword [step]
  67.     fld dword [od]
  68.  
  69.     loop:
  70.         fadd st0,st1 ;powiekszam x od dx
  71.         fldz
  72.         fadd st0,st1 ; kopiuje x
  73.         fmul st0,st1 ; wyliczam x^2
  74.         fmul st0,st2 ; mnoze razy dx
  75.         faddp st3,st0 ; dodaje do calki
  76.                       ; usuwam x^2*dx ze stosu
  77.        
  78.         fldz
  79.         fadd st0,st3 ; kopiuj wartosc calki do st0
  80.         fistp dword[integral] ;odczyt aktualnej wartosci calki
  81.         fwait ;synchronizacja z cpu
  82.  
  83.         push rax
  84.         mov edi,int_format
  85.         mov eax,0
  86.         mov esi,[integral]
  87.         call printf
  88.         pop rax
  89.  
  90.         dec eax
  91.         cmp eax,0
  92.  
  93.     jne loop       
  94.  
  95.     mov edi,int_format1
  96.     mov eax,0
  97.     mov esi,[integral]
  98.     call printf
  99.    
  100.    
  101. ret
Advertisement
Add Comment
Please, Sign In to add comment