ADDPM  START
       LD     GR1,=#5298  ;aの値
       LD     GR2,=#4853  ;bの値
       CALL   ADDP        ;副プログラムの呼び出し
       RET
       END
ADDP   START              ;BCDコード [c04.cas]
       ST     GR1,A
       ST     GR2,B
       PUSH   0,GR3
       LAD    GR3,0       ;結果の領域の初期化
       ST     GR3,RES
LOOP   AND    GR1,=#000F  ;整数aから4ビットを抽出
       AND    GR2,=#000F  ;整数bから4ビットを抽出
       ADDA   GR1,GR2     ;4ビットの加算 [  a  ]
       LAD    GR0,0
       CPA    GR1,=10     ;結果≧10?
       JMI    NOTOVR      ;NO
       SUBA   GR1,=10     ;結果から10減算
       LAD    GR0,1       ;けた上げの設定
NOTOVR SLL    GR1,0,GR3   ;加算結果を元の位置へ
       OR     GR1,RES     ;中間結果に併合
       LAD    GR3,4,GR3
       CPA    GR3,=16     ;全けた終了?
       JZE    FIN         ;YES
       ST     GR1,RES     ;中間結果を格納 [  b  ]
       LD     GR1,A       ;aの次の4ビットを右端
       SRL    GR1,0,GR3   ;       〃
       LD     GR2,B       ;bの次の4ビットを右端
       SRL    GR2,0,GR3   ;       〃
       ADDA   GR1,GR0     ;けた上げ分を加算
       JUMP   LOOP
FIN    POP    GR3
       LD     GR2,B
       RET
A      DS     1
B      DS     1
RES    DS     1
       END