Public paste
ASM adding stuff
By: BlakeH | Date: Jun 27 2009 01:51 | Format: None | Expires: never | Size: 665 B | Hits: 1004

  1. .begin
  2. .org 2048
  3.         mov %r0, %r20   ! %r20 = memory offset
  4.         mov %r0, %r21   ! %r21 = SUM
  5. AddThree:
  6.         ld [ INPUT + %r20 ], %r10
  7.         add %r10, %r21, %r21
  8.         subcc %r10, 0, %r0
  9.         add %r20, 4, %r20
  10.         add %r22, 1, %r22
  11.         cmp %r22, 3
  12.         bne AddThree
  13.         call StoreResult
  14.  
  15. StoreResult:
  16.         mov %r21, %r4
  17.         st %r4, [OUTPUT]
  18.         mov %r0, %r21
  19.         mov %r0, %r22  
  20.         cmp %r4, 0
  21.         bne Restart
  22.         halt
  23. Restart:
  24.         !ld     [INPUT], %r10
  25.         call AddThree
  26.         halt
  27.  
  28. INPUT:  10
  29.           10
  30.           10
  31.           20
  32.           20
  33.           20
  34.           30
  35.           30
  36.           30
  37.           40
  38.           40
  39.           40
  40.           0
  41.           0
  42.           0
  43. OUTPUT:  
  44.  
  45. END:
  46.  
  47. .end