;******************************
;* Glavni program - 3 zadatak *
;******************************
`ORG 0
MOV R13, #1<12 ;0x1000 stog
MOV R1, #5<8 ;0x500 - adresa bloka
LOOP LDR R0, [R1], #4 ;ucitaj broj
TEQ R0, #0 ;da li je 0?
Beq END
ANDs R2, R0, #1 ;provjeri da li je paran?
Bne LOOP ;nije paran
BL FX ;racunaj F(x)
STR R0, [R1, #-4] ;spremi rezultat natrag u niz
B LOOP
END HALT
;********************************
;* Potprogram za racunanje F(x) *
;********************************
`ORG 50
FX STMfd R13!, {R1, R2} ;push
MOV R2, #%D 10 ;konstanta za mnozenje
MUL R1, R0, R2 ;R1 = R0 * 10
MOV R1, R1, LSR #5 ;R1 = R1 / 32 (shift za 5 mjesta)
MLA R0, R0, R0, R1 ;R0 = R0 * R0 + R1
LDMfd R13!, {R1, R2} ;pop
MOV PC, LR ;ret
`ORG 500
DW 1, 2, 10, 64, 0A0, 0FE, 0
`END