;;; sum_10.casl ;;; 1から10までの整数をすべて加算した値をメモリーに格納する MAIN START PUSH 0,GR1 PUSH 0,GR2 XOR GR2,GR2 ; GR2を初期化 LD GR1,FST ; GR1に初項をメモリーから転送 LOOP ADDL GR2,GR1 ; ループ先頭。GR2 <- GR2 + GR1 ADDL GR1,STEP ; GR1 <- GR1 + 公差 CPL GR1,LST ; GR1が末項より大きい場合は終了 JPL FIN ; ↓ JUMP LOOP ; ループ終端 FIN ST GR2,RST ; GR2の結果をメモリーに転送 POP GR2 POP GR1 RET FST DC 1 ; 初項 LST DC 10 ; 末項 STEP DC 1 ; 公差 RST DS 1 ; 結果 END Assemble ../../../../as/sample/sum_10.casl (0) ../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl ../../../../as/sample/sum_10.casl: 2:;;; 1から10までの整数をすべて加算した値をメモリーに格納する ../../../../as/sample/sum_10.casl: 3:MAIN START ../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1 ../../../../as/sample/sum_10.casl: 5: PUSH 0,GR2 ../../../../as/sample/sum_10.casl: 6: XOR GR2,GR2 ; GR2を初期化 ../../../../as/sample/sum_10.casl: 7: LD GR1,FST ; GR1に初項をメモリーから転送 ../../../../as/sample/sum_10.casl: 8:LOOP ADDL GR2,GR1 ; ループ先頭。GR2 <- GR2 + GR1 ../../../../as/sample/sum_10.casl: 9: ADDL GR1,STEP ; GR1 <- GR1 + 公差 ../../../../as/sample/sum_10.casl: 10: CPL GR1,LST ; GR1が末項より大きい場合は終了 ../../../../as/sample/sum_10.casl: 11: JPL FIN ; ↓ ../../../../as/sample/sum_10.casl: 12: JUMP LOOP ; ループ終端 ../../../../as/sample/sum_10.casl: 13:FIN ST GR2,RST ; GR2の結果をメモリーに転送 ../../../../as/sample/sum_10.casl: 14: POP GR2 ../../../../as/sample/sum_10.casl: 15: POP GR1 ../../../../as/sample/sum_10.casl: 16: RET ../../../../as/sample/sum_10.casl: 17:FST DC 1 ; 初項 ../../../../as/sample/sum_10.casl: 18:LST DC 10 ; 末項 ../../../../as/sample/sum_10.casl: 19:STEP DC 1 ; 公差 ../../../../as/sample/sum_10.casl: 20:RST DS 1 ; 結果 ../../../../as/sample/sum_10.casl: 21: END Label:::: MAIN ---> #0000 MAIN.LOOP ---> #0007 MAIN.FIN ---> #0010 MAIN.FST ---> #0015 MAIN.LST ---> #0016 MAIN.STEP ---> #0017 MAIN.RST ---> #0018 Assemble ../../../../as/sample/sum_10.casl (1) ../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl ../../../../as/sample/sum_10.casl: 2:;;; 1から10までの整数をすべて加算した値をメモリーに格納する ../../../../as/sample/sum_10.casl: 3:MAIN START ../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1 #0000 #7001 #0001 #0000 ../../../../as/sample/sum_10.casl: 5: PUSH 0,GR2 #0002 #7002 #0003 #0000 ../../../../as/sample/sum_10.casl: 6: XOR GR2,GR2 ; GR2を初期化 #0004 #3622 ../../../../as/sample/sum_10.casl: 7: LD GR1,FST ; GR1に初項をメモリーから転送 #0005 #1010 #0006 #0015 ../../../../as/sample/sum_10.casl: 8:LOOP ADDL GR2,GR1 ; ループ先頭。GR2 <- GR2 + GR1 #0007 #2621 ../../../../as/sample/sum_10.casl: 9: ADDL GR1,STEP ; GR1 <- GR1 + 公差 #0008 #2210 #0009 #0017 ../../../../as/sample/sum_10.casl: 10: CPL GR1,LST ; GR1が末項より大きい場合は終了 #000A #4110 #000B #0016 ../../../../as/sample/sum_10.casl: 11: JPL FIN ; ↓ #000C #6500 #000D #0010 ../../../../as/sample/sum_10.casl: 12: JUMP LOOP ; ループ終端 #000E #6400 #000F #0007 ../../../../as/sample/sum_10.casl: 13:FIN ST GR2,RST ; GR2の結果をメモリーに転送 #0010 #1120 #0011 #0018 ../../../../as/sample/sum_10.casl: 14: POP GR2 #0012 #7120 ../../../../as/sample/sum_10.casl: 15: POP GR1 #0013 #7110 ../../../../as/sample/sum_10.casl: 16: RET #0014 #8100 ../../../../as/sample/sum_10.casl: 17:FST DC 1 ; 初項 #0015 #0001 ../../../../as/sample/sum_10.casl: 18:LST DC 10 ; 末項 #0016 #000A ../../../../as/sample/sum_10.casl: 19:STEP DC 1 ; 公差 #0017 #0001 ../../../../as/sample/sum_10.casl: 20:RST DS 1 ; 結果 #0018 #0000 ../../../../as/sample/sum_10.casl: 21: END