MAIN START LAD GR0,0 ;パリティビットのセット処理 LAD GR1,DATA CALL PARITY ;副プログラムの呼び出し RET DATA DC 4,#1234,#7BCD,#4567 END PARITY START ;ビットの状態 [c08.cas] PUSH 0,GR4 ;汎用レジスタの退避 PUSH 0,GR3 ; 〃 PUSH 0,GR2 ; 〃 PUSH 0,GR1 ; 〃 LD GR2,0,GR1 ;ブロック長 LAD GR2,-1,GR2 ;ループカウント LOOP1 LAD GR4,0 ;判定語の初期化 LAD GR1,1,GR1 LD GR3,0,GR1 ;データの取り出し LOOP2 SLL GR3,1 ;論理左シフト JZE CNTEND JPL LOOP2 XOR GR4,=#8000 ;判定語のビットを反転 [ a ] JUMP LOOP2 CNTEND LD GR0,GR0 ;GR0のチェック JZE SET ;セット処理へ XOR GR4,0,GR1 ;パリティビットの検査 JMI ERROR ; [ b ] JUMP NEXTCH SET OR GR4,0,GR1 ;パリティビットを付加 ST GR4,0,GR1 ;データの保存 NEXTCH SUBA GR2,=1 ;ループカウンタを1減らす JPL LOOP1 ; [ c ] LAD GR0,0 ;OK POP GR1 ;汎用レジスタの復元 FIN POP GR2 ; 〃 POP GR3 ; 〃 POP GR4 ; 〃 RET ERROR POP GR1 LD GR0,0,GR1 ; [ d ] SUBL GR0,GR2 ;エラーの語番号 JUMP FIN END