;Zadatak: ; Napisati potprogram koji provjerava da li je NBC broj zapisan ; u registru R0 primaran broj ili nije. ; Ako je primaran, tada taj potprogram mora u registru R0 vratiti ; broj 1. Ako priljeni NBC broj nije primaran, tada u registru ; R0 vratiti broj 0. ; Pretpostavite da je potprogram za dijeljenje veæ napisan. ;************************************ ;* Check prime numbers * ;* Parameters: * ;* R0 - number to check * ;* Return: * ;* R0 - 1(prime) or 0(not prime) * ;************************************ `ORG 50 STMfd R13!, {R1, R2, R3, R4, R14} ;push MOV R2, #2 ;provjera pocinje od 2 MOV R3, R0, LSR #1 ;i ide do R3 = R0 / 2 MOV R4, R0 ;sacuvaj originalni broj u R4 prloop CMP R2, R3 ;da li smo gotovi? Bhs endprim ;gotovi smo - broj je primaran MOV R0, R4 ;djeljenik MOV R1, R2 ;djeljitelj BL divide ;podijeli R0 / R1, rez. R0, ost. R1 TEQ R1, #0 ;da li je ostatak 0? Beq notprim ;nije primaran ADD R2, R2, #1 ;povecaj R1 B prloop notprim MOV R0, #0 ;broj nije primaran, vrati 0 B endall endprim MOV R0, #1 ;broj je primaran, vrati 1 endall LDMfd R13!, {R1, R2, R3, R4, R14} ;pop MOV PC, LR ;ret ;*************************** ;* Divide numbers * ;* Parameters: * ;* R0 - dividend * ;* R1 - divisor * ;* Result: * ;* R0 - quotient * ;* R1 - rest * ;*************************** `ORG 100 divide ORR R0, R0, R0 ;... `END