ORG $8000 DATA DC.W 2 DC.W $32,$14,$52,$12 ; list of 4 integers ORG $8100 MOVE.L #$12345678,D1 ; put junk in register LEA.L DATA,A1 ; get address of array MOVE.W (A1)+,D1 ; load size and set to start BSR SUM ; call the sum subroutine TRAP #9 ; return to monitor program SUM MOVEM.L D1/A1,-(A7) ; save registers on stack CLR.L D0 ; initialize sum TST.W D1 ; set condition codes at start LOOP BLE DONE ; when length <= 0 exit loop ADD.W (A1)+,D0 ; sum and advance SUBQ.W #1,D1 ; decrement length BRA LOOP ; repeat the loop DONE MOVEM.L (A7)+,A1/D1 ; restore RTS ; return from subroutine END