平成19年 秋期 基本情報技術者 午後 問13
問13 CASL次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。 〔プログラムの説明〕 連続する 16 語を 16 × 16 ビットからなる2次元配列とみなし,この配列の中で, 1であるビットが 16 個並んでいる行,列及び対角線の本数を数える副プログラム BTEST である。 図の例では網掛けの部分が該当し,本数は4である。
図 ビットの配列例 (1) 語0のアドレスが GR1 に設定されて,主プログラムから渡される。 (2) 本数を数えた結果は GR0 に設定して,主プログラムに返す。 (3) 行番号 21 で呼び出される副プログラム SETGR0 は,副プログラム BTEST から 渡された GR0, GR2, GR3, GR4 の内容を基に,列及び対角線の本数を加えた結果を GR0 に設定する。 (4) 副プログラム BTEST から戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。 〔プログラム1〕 (行番号) 1 BTEST START 2 RPUSH 3 LD GR0,=0 4 LD GR2,=#0001 ; 左下がり対角線の検査用ビット 5 LD GR3,=#8000 ; 右下がり対角線の検査用ビット 6 LD GR4,=#FFFF ; 列の検査用ビット 7 LD GR5,=16 ; ループカウント 8 LOOP1 LD GR6,0,GR1 9 AND GR2,GR6 ; GR6 中で検査用ビットに 10 AND GR3,GR6 ; 対応するビットが0であれば 11 AND GR4,GR6 ; 検査用ビットを0にする。 12 CPL GR6,=#FFFF ; 行のビットはすべて1か? 13 14 ADDA GR0,=1 ; 行のカウント 15 NWORD SUBA GR5,=1 ; 全語処理済み? 16 17 SLL GR2,1 ; 対角線の検査用ビットを 18 SRL GR3,1 ; 1ビットずつシフト 19 LAD GR1,1,GR1 ; ポインタを次の語に位置付ける。 20 JUMP LOOP1 21 CHECK CALL SETGR0 ; 列と対角線について GR0 に結果を設定 22 RPOP 23 RET 24 END設問1 プログラム1中の に入れる正しい答えを,解答群の中から選べ。 解答群 エ JPL LOOP1 オ JZE CHECK 力 JZE NWORD
設問2 配列の内容が図のとおりであった場合,行番号 21 の CALL 命令実行直前における, 次の表に示すレジスタの内容として正しい答えを,解答群の中から選べ。
c に関する解答群 d,e に関する解答群 f に関する解答群
設問3 副プログラム SETGR0 を次に示す。プログラム2中の に入れる正しい答えを, 解答群の中から選べ。 〔プログラム2〕 SETGR0 START LOOP2 SLL GR4,1 ; 列の検査用ビットのうち1であるビットを数える。 JOV COUNT UMP XCHECK COUNT ADDA GR0,=1 ; 列のカウント JUMP LOOP2 XCHECK ; 対角線の検査用ビットをシフト ADDA GR0,GR2 ADDA GR0,GR3 RET ENDg に関する解答群 ウ JPL LOOP2 エ JZE LOOP2 h に関する解答群 ウ SRL GR2,14 エ SRL GR2,15
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||||||