Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- section .data align=16 ; ?
- jedinice times 4 dd 1.0
- dvojke times 4 dd 2.0
- petice times 4 dd 5.0
- ;align 16
- ispis1 db "%d ", 0
- ispis db "%d", 0
- brojac db 8
- ;brojac db 8
- format db '%f',0
- pomjeraj dw 0
- pom dw 0
- counter db 2
- ;counter db 2
- section .bss align=16
- niz resd 64
- broj resd 1
- section .text
- global main
- extern scanf, printf
- main:
- push rbp
- mov rbp, rsp
- push rbx
- push rsi
- push rdi
- .ucitavanje:
- mov rax, 0
- mov rdi, format
- mov rsi, broj
- call scanf
- mov rax, 0
- mov rcx, 0
- mov eax, [broj]
- mov cx, [pomjeraj]
- mov [niz + rcx], eax
- add byte [pomjeraj], 4
- dec byte [brojac]
- cmp byte [brojac], 0
- je .dalje
- jmp .ucitavanje
- .dalje:
- mov rcx, 0
- mov cx, [pom]
- movaps xmm0, [niz + rcx] ; |x|x|x|x|
- movaps xmm1, [niz + rcx] ; |x|x|x|x|
- movaps xmm2, [dvojke] ; |2|2|2|2|
- movaps xmm3, [petice] ; |5|5|5|5|
- movaps xmm4, [jedinice] ; |1|1|1|1|
- mulps xmm0, xmm1 ; x * x = x ^ 2
- mulps xmm0, xmm3 ; 5 * x ^ 2
- mulps xmm1, xmm2 ; 2 * x
- addps xmm1, xmm4 ; 2 * x + 1
- addps xmm0, xmm1 ; 5 * x ^ 2 + 2 * x + 1
- cvttps2dq xmm0, xmm0 ; convertuje u int
- movaps [niz + rcx], xmm0 ; upise nazad u niz
- movaps [niz + rcx], xmm0 ; upise nazad u niz ?
- add word [pom], 16 ; pomjeri se na sledeca 4ti
- dec byte [counter]
- cmp byte [counter], 0 ; counter -- initial je 16
- jne .dalje
- mov word [pomjeraj], 0
- mov byte [brojac], 64
- .ispis:
- mov rax, 0
- mov rdi, ispis1
- mov rcx, 0
- mov cx, [pomjeraj]
- mov rsi, 0
- mov esi, [niz + rcx]
- call printf
- add word [pomjeraj], 4
- dec byte [brojac]
- cmp byte [brojac], 0
- je .kraj
- jmp .ispis
- .kraj:
- pop rdi
- pop rsi
- pop rbx
- mov rsp, rbp
- pop rbp
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement