MAIN START LAD GR1,NUM ;数字の先頭アドレス CALL CHECKD ;副プログラムの呼び出し ST GR0,CK ;検査文字の格納 OUT NUM,LEN ;結果の出力 RET NUM DC '2131' CK DS 1 LEN DC 5 END CHECKD START ;検査文字 [b08.cas] RPUSH ;汎用レジスタの退避 LAD GR4,0 ;数値の合計 LAD GR6,0 ;ループカウンタ LP LD GR3,0,GR1 ;1文字取り出す AND GR3,=#000F ;数値に変換 LD GR5,AD,GR6 ; [ a ] JUMP 0,GR5 AD1 ADDA GR4,GR3 ;GR4+GR3 → GR4 AD2 ADDA GR4,GR3 ;GR4+GR3 → GR4 AD3 ADDA GR4,GR3 ;GR4+GR3 → GR4 AD4 ADDA GR4,GR3 ;GR4+GR3 → GR4 [ b ] LAD GR1,1,GR1 ;GR1+1 → GR1 LAD GR6,1,GR6 ;GR6+1 → GR6 CPA GR6,=4 ;終了判定 JNZ LP LP2 SUBA GR4,=11 ;11で割る JMI NEXT JUMP LP2 ;正の場合繰り返す NEXT ADDA GR4,=11 ;11を加算 LD GR0,ABC,GR4 ;検査文字を求める [ c ] RPOP ;汎用レジスタの復元 RET AD DC AD1,AD2,AD3,AD4 ABC DC 'ABCDEFGHIJK' END