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