;Lab10 Test Average Program ;David Staples & Matt Sprinkle EGRE364 Feb2000 ; .org 0 ;0x0000 lar r30,Done ;declare Done lar r29,LoopA ;declare LoopA lar r28,LoopB ;declare LoopB lar r27,Test ;declare Test lar r26,Invert ;declare Invert lar r25,TestB ;declare TestB lar r24,InvertB ;declare InvertB ld r1,Total ;load Total into r1 andi r2,r2,#0 ;set r2 to zero addi r2,r1,#0 ;load r1 into r2 addi r3,r3,#0 ;set r3 to zero addi r4,r4,#4 ;set r4 to four addi r5,r5,#1 ;set r5 to one LoopA: sub r2,r2,r5 ;subtract r5 from r2, store in r2 addi r9,r3,#0 ;store r3 in r9 brmi r27,r2 ;if r2 is neg, goto Test ld r6,Number(r3) ;load Number,offset by r3 add r3,r3,r4 ;add r4 to r3,store in r3 add r7,r7,r6 ;add r6 to r7,store in r7 br r29 ;goto LoopA Test: andi r3,r3,#0 ;clear r3 andi r2,r2,#0 ;clear r2 addi r2,r1,#0 ;load r1 into r2 andi r6,r6,#0 ;clear r6 add r6,r6,r7 ;add r7 to r6,store in r6 brmi r26,r6 ;if r6 neg, goto Invert br r28 ;goto LoopB Invert: not r6,r6 addi r6,r6,#1 br r28 ;goto LoopB LoopB: sub r6,r6,r2 ;subtract r2 from r6,store in r6 brmi r25,r6 ;if r6 neg, goto TestB add r3,r3,r5 ;add r5 to r3,store in r3 addi r8,r6,#0 ;store r6 in r8 br r28 ;goto LoopB TestB: brmi r24,r7 ;if r7 neg, goto InvertB br r30 ;goto Done InvertB:not r3,r3 addi r3,r3,#1 br r30 ;goto Done Done: sub r9,r9,r4 ;subtract r4 from r9,store in r9 st r3,Result(r9) ;store r3 in Result,offset by r9 st r8,Remainder(r9);store r8 in Remainder,offset by r9 stop ;stop .org 32772 ;0x8004 Total: .dw1 ;storage for Total Number: .dw1 ;storage for Number Result: .dw1 ;storage for Result Remainder: .dw1 ;storage for Remainder