問10 次のアセンブラプログラムの説明及びプログラムを読んで,設問に答えよ。 [プログラムの説明] 副プログラムPARITYは,連続するN語に格納されているデータにパリティビット を付加する処理(セット処理)と,パリティが正しいかどうかを検査する処理(チェ ック処理)を行う。 データは各語の第1〜15ビットの15ビットに格納し,第0ビット(左端ビット) をパリティビットとして使用する。 パリティビットの値は,各語の第1〜15ビット中の1であるビットの個数が奇数の ときは1,偶数のときは0とする。
図1 データとパリティビットの構成
(1) データとパリティビットは,図2のようにブロックに入れ,そのブロックの先頭 アドレスをGR1に格納して,主プログラムから渡される。
ブロック長  データとパリティビット
 ↓ ┌───────┴───────┐
N+1        
語   0  1  2  3         …         N
図2 ブロックの構成 (N > 0)

  (2)  主プログラムから渡されたGR0の内容が0のとき,セット処理を行う。
       このとき,主プログラムから渡されるブロック中の語1〜Nのパリティビットは
     すべて0になっている。

  (3)  主プログラムから渡されたGR0の内容が0以外のとき,チェック処理を行う。
       ブロック中の全パリティビットの値が正しければ,GR0に0を設定して,
     主プログラムに戻る。
       パリティビットの値が正しくない語を検出した時点で,GR0にその語番号
     (ブロックの先頭の語番号を0とする)を設定して,主プログラムに戻る。

  (4)  主プログラムに戻るとき,汎用レジスタGR1〜GR3の内容は呼び出される前の
     値に復元する。

[プログラム]
PARITY  START                   ;
	PUSH    0,GR3           ;┐     
	PUSH    0,GR2           ;├ レジスタの退避
	PUSH    0,GR1           ;┘
	ST      GR0,SAVER0      ;
	LD      GR2,0,GR1       ; ブロック長
	LEA     GR2,-1,GR2 	; ループカウント
LOOP1	LEA     GR0,0        	;
        ST      GR0,ODDEVN	; 1のビット数の奇偶判定語を初期化
	LEA     GR1,1,GR1	;
	LD      GR3,0,GR1       ;
LOOP2	SLL     GR3,1     	;
	JZE     CNTEND     	;
        [          a         ]  ;    
        LD      GR0,MASK	;┐
        [          b         ]  ;├ 判定語のビットを反転   
        ST      GR0,ODDEVN	;┘
	JMP     LOOP2      	;
CNTEND	LD      GR0,ODDEVN	;
	CPA     GR3,SAVER0	;
        JZE     SET             ; セット処理へ
	EOR     GR0,0,GR1	; パリティビットの検査
        [          c         ]	;
        JMP     NEXTCH     	;
SET	OR      GR0,0,GR1	; パリティビットを付加
	ST      GR0,0,GR1       ;
NEXTCH	LEA     GR2,-1,GR2	;
	JNZ     LOOP1      	;
        LEA     GR0,0  	        ;
	POP     GR1    		;┐
FIN	POP     GR2             ;├ レジスタの復元
        POP     GR3		;┘
        RET			;
ERROR   POP     GR1		;
        [          d         ]	;
        ST      GR2,WORK        ;
	SUB     GR0,WORK	;
	JMP     FIN      	;
MASK	DC      #8000    	;
ODDEVN	DS      1        	;
SAVER0	DS      1               ;
WORK	DS      1               ;
	END                     ;

設問 プログラム中の[      ]に入れる正しい答えを,解答群の中から選べ。

a,cに関する解答群

  ア  JMI    ERROR          	イ  JMI    LOOP1
    
  ウ  JMI    LOOP2	    	エ  JPZ    ERROR
    
  オ  JPZ    LOOP1	    	カ  JPZ    LOOP2
    
  キ  JZE    ERROR          	ク  JZE    LOOP1

  ケ  JZE    LOOP2
b,dに関する解答群 ア AND GR0,ODDEVN イ AND GR0,0,GR1 ウ AND GR3,ODDEVN エ EOR GR0,ODDEVN オ EOR GR3,ODDEVN カ LD GR0,0,GR1 キ OR GR0,ODDEVN ク OR GR0,0,GR1 ケ OR GR3,ODDEVN