root/as/app/sum/sum_2.casl

/* [<][>][^][v][top][bottom][index][help] */
   1 ;;; sum_10.casl
   2 ;;; 入力 GR0: 正数
   3 ;;; 出力 GR0: 1からGR1で指定された値までの正数をすべて加算した値。
   4 ;;;           オーバーフローした場合は、0
   5 ;;; 依存プログラム: mull1.casl divl1.casl
   6 MAIN    START
   7         PUSH    0,GR1
   8         PUSH    0,GR2
   9         ADDL    GR1,FST         ; GR1 <- (初項 + 末項)
  10         PUSH    0,GR1           ; GR1を退避
  11         LD      GR1,LST         ; GR1 <- (末項 - 初項)
  12         SUBL    GR1,FST         ; ↓
  13         LD      GR2,GR1         ; ↓
  14         LD      GR2,STEP        ; GR2 <- STEP
  15         CALL    DIVL            ; GR0 <- GR1 / GR2
  16         LD      GR2,GR0         ; GR2 <- GR0
  17         LAD     GR2,1,GR2       ; GR2 <- GR2 + 1
  18         SRL     GR2,1           ; GR2 <- GR2 / 2
  19         POP     GR1             ; GR1を復元
  20         CALL    MULL            ; GR0 <- GR1 * GR2
  21         POP     GR2
  22         POP     GR1
  23         RET
  24 FST     DC      1               ; 初項
  25 STEP    DC      1               ; 公差
  26         END

/* [<][>][^][v][top][bottom][index][help] */