[更新日]1998.05.15
問14 次のアセンブラプログラムの説明及びプログラムを読んで, 設問 1 〜 3 に答えよ。
〔プログラムの説明〕
連続する 49 語の領域を 7 行 7 列の表とみなす。副プログラム RECTGL は,その表と 2 点の座標 (x1,y1),(x2,y2) を主プログラムから 受け取り,表中のその 2 点を対角の頂点とする長方形の内側を,指定された 文字で塗りつぶす。
(1) 主プログラムは,図 1 に示す形式のパラメタの先頭アドレスを GR1 に設定し, RECTGL を呼び出す。
図1 パラメタの形式
(2) 長方形の各辺は,x 軸又は y 軸と平行とする。
例えば,2 点 (2,3) と (6,5) を頂点とする長方形を,文字“*”で 塗りつぶす場合,図 2のようになる。
図2 長方形の塗りつぶし例
(3) 1 ≦ x1 ≦ x2 ≦ 7,1 ≦ y1 ≦ y2 ≦ 7 とする。
(4) 副プログラム RECTGL は,主プログラムに戻るとき,汎用レジスタ GR1〜GR3 の内容を元に戻す。
(5) 副プログラム XY2ADR は,座標 (x,y) を値 z に変換し,z を GR3 に設定して返す。
〔プログラム〕 (行番号) 01 RECTGL START 02 PUSH 0,GR2 ; 03 PUSH 0,GR3 ; 04 LEA GR2,3,GR1 ; 05 CALL XY2ADR ;(x2,y2)を変換 06 ADD GR3,0,GR1 ;長方形の右下のアドレス 07 ST GR3,ENDADR ; 08 LEA GR2,1,GR1 ; 09 CALL XY2ADR ;(x1,y1)を変換 10 ADD GR3,0,GR1 ;長方形の左上のアドレス 11 LD GR2,3,GR1 ; 12 SUB GR2,1,GR1 ; 長方形の横幅 13 LEA GR2,1,GR2 ; 14 ST GR2,WIDTH ; 15 LEA GR2,7 ; 16 SUB GR2,WIDTH ; 18 ST GR2,DISP ; 19 LD GR0,5,GR1 ; 20 LOOP1 LD GR2,WIDTH ; 21 LOOP2 ST GR0,0,GR3 ; 22 LEA GR3,1,GR3 ; 長方形の横1列を塗りつぶす 23 LEA GR2,-1,GR2 ; 24 JNZ LOOP2 ; 25 CPA GR3,ENDADR ; 26 JPZ FIN ; 27 ADD GR3,DISP ; 28 JMP LOOP1 ; 29 FIN POP GR3 ; 30 POP GR2 ; 31 RET ; 32 ENDADR DS 1 ; 33 WIDTH DS 1 ; 34 DISP DS 1 ; 35 XY2ADR PUSH 0,GR1 ;α 36 LD GR1,1,GR2 ;α 37 LEA GR3,0 ;α 38 LOOP3 LEA GR1,-1,GR1 ;α 39 JZE ADDX ;α 40 LEA GR3,7,GR3 ;α 41 JMP LOOP3 ;α 42 ADDX ADD GR3,0,GR2 ;α 43 LEA GR3,-1,GR3 ;α 44 POP GR1 ;α 45 RET ;α 46 END ;
設問1 副プログラム XY2ADR(プログラム中のαの部分)の処理において, x,y,z の関係を示す正しい式を,解答群の中から選べ。
解答群
ア z = (x−1) + 7(y−1) イ z = (x−1) + 7y
ウ z = 7(x−1) + (y−1) エ z = 7x + 7(y−1)
オ z = 7x + y カ z = x + 7y
設問2 主プログラムから渡された 2 点の座標を (3,4),(6,5) とする。 副プログラム RECTGL を実行した後,主プログラムに戻るとき,34 行目の 領域 DISP の値として正しい答えを,解答群の中から選べ。
ア 0 イ 1 ウ 2
エ 3 オ 4 カ 5
キ 6 ク 7
設問3 副プログラム RECTGL を使用して,図 3 のように,長方形の外側を 指定された文字で塗りつぶし,長方形の内側を空白で塗りつぶす副プログラム SPREC を作成した。 に入れる 正しい答えを,解答群の中から選べ。
図3 SPREC の実行例
SPREC START LD GR0,0,GR1 ST GR0,PARAM ST GR0,CHAR PUSH 0,GR1 LEA GR1,PARAM CALL RECTGL POP GR1 LEA GR0,32 ;空白の文字コード → GR0 ST GR0,5,GR1 CALL RECTGL LD GR0,CHAR ST GR0,5,GR1 RET PARAM DS 1 CHAR DS 1 END
a に関する解答群
ア LD GR0,5,GR1 イ LD GR0,6,GR1 ウ LEA GR0,5,GR1 エ LEA GR0,20 オ LEA GR0,32
b に関する解答群
ア DC 0 イ DC 0 ウ DC 0 DC 0 DC 0 DC 0 DC 0 DC 6 DC 7 DC 0 DC 6 DC 7 エ DC 1 オ DC 1 DC 1 DC 1 DC 6 DC 7 DC 6 DC 7