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