TITLE "sum an array" S START USE "hawk.macs" USE "monitor.h" COMMON STACK,#1000 PSTACK: W STACK SUMIS: ASCII "The sum is: ",0 ALIGN 4 ARRAY: W 1 W 2 W 3 W 4 W 5 W 0 ; the program starts here! START: LOAD R2,PSTACK ; set up the stack LOAD R1,PDSPINI JSRS R1,R1 ; dspini() LIS R3,8 LIS R4,2 LOAD R1,PDSPAT JSRS R1,R1 ; dspat( 8, 2 ) LEA R3,SUMIS LOAD R1,PDSPST JSRS R1,R1 ; dspst( sumis ) LIS R3,0 ; sum = 0 LEA R4,ARRAY ; p = array LOOP: ; for (;;) { LOADSCC R5,R4 ; t = M[p] BZS LOOPEXIT ; if (t == 0) exit ADD R3,R3,R5 ; sum = sum + t ADDSI R4,4 ; p = p + sizeof(word) BR LOOP ; } LOOPEXIT: LIS R4,0 ; parameter field-width = 0 LOAD R1,PDSPDEC JSRS R1,R1 ; call dspdec( sum, 0 ) LOAD R1,PEXIT JSRS R1,R1 ; exit() END