;
;	CPE 221 Assembly Example
;    
;   This example demonstrates basic subroutine call capability.
;	
;   int Func1 (int);
;   int main()
;   {
;      int P = 3;
;      int Q = -1;
;      P = Func1(P);
;      Q = Func1(Q);
;   }
;   int Func1(int x)
;   {
;     if (x > 0) 
;       x = 16*x + 1;
;     else
;       x = 32*x; 
;   ;
	

        AREA SUBROUTINE_CALL, CODE, READWRITE
        ENTRY
        ADR   r4, P
		ADR   r5, Q
		LDR   r0, [r4]
		BL    Func1
		STR   r0, [r4]
		LDR   r0, [r5]
		BL    Func1
		STR   r0, [r5]
done    B     done
Func1   CMP   r0, #0
        MOVGT r0, r0, LSL #4
        ADDGT r0, r0, #1
        MOVLE r0, r0, LSL #5
		MOV   pc, lr
        AREA  SUBROUTINE_CALL, DATA, READWRITE
P       DCD   3
Q       DCD   -1
        END
