Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern scanf
- extern printf
- global main
- section .data
- float_format: db "%f",0
- int_format: db "Wartość całki dla aktualnego kroku: %d",10,0
- int_format1: db "Wynik: %d",10,0
- w1: db "Oblicznie calki x^2 ", 10,0
- w2: db "Od: ", 10,0
- w3: db "Do: ", 10,0
- od: times 4 db 0 ; 32 bity - 4 bajty
- integral: times 4 db 0
- do: times 4 db 0
- step: times 4 db 0
- now: times 4 db 0
- section .bss
- section .text
- main:
- mov rdi,w1
- mov rax,0
- call printf
- mov rdi,w2
- mov rax,0
- call printf
- mov edi,float_format
- mov eax,0
- mov esi,od
- call scanf
- mov rdi,w3
- mov rax,0
- call printf
- mov edi,float_format
- mov eax,0
- mov esi,do
- call scanf
- ; oblicz dx
- finit
- mov eax,1000
- mov [integral],eax
- fild dword [integral]
- fld dword [od]
- fld dword [do]
- fsub st0,st1
- fdiv st0,st2
- fstp dword [step]
- ;zainicjuj petle
- mov eax,1000
- fldz
- fld dword [step]
- fld dword [od]
- loop:
- fadd st0,st1 ;powiekszam x od dx
- fldz
- fadd st0,st1 ; kopiuje x
- fmul st0,st1 ; wyliczam x^2
- fmul st0,st2 ; mnoze razy dx
- faddp st3,st0 ; dodaje do calki
- ; usuwam x^2*dx ze stosu
- fldz
- fadd st0,st3 ; kopiuj wartosc calki do st0
- fistp dword[integral] ;odczyt aktualnej wartosci calki
- fwait ;synchronizacja z cpu
- push rax
- mov edi,int_format
- mov eax,0
- mov esi,[integral]
- call printf
- pop rax
- dec eax
- cmp eax,0
- jne loop
- mov edi,int_format1
- mov eax,0
- mov esi,[integral]
- call printf
- ret
Advertisement
Add Comment
Please, Sign In to add comment