基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成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中の に入れる正しい答えを,解答群の中から選べ。

解答群

ア JMI   LOOP1     イ JNZ   CHECK     ウ JNZ   NWORD
エ JPL   LOOP1     オ JZE   CHECK     力 JZE   NWORD

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

基本情報技術者試験


設問2 配列の内容が図のとおりであった場合,行番号 21 の CALL 命令実行直前における, 次の表に示すレジスタの内容として正しい答えを,解答群の中から選べ。

 レジスタ    内容  
 GR0     
 GR2     
 GR3     
 GR4     

c に関する解答群

ア #0000      イ #0001      ウ #0002       エ #0003

d,e に関する解答群

ア #0000      イ #0001      ウ #8000      エ #8001

f に関する解答群

ア #0208      イ #8208      ウ #82CB      エ #FFFF
解答 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
       END
g に関する解答群 ア JMI   LOOP2      イ JNZ   LOOP2
ウ JPL   LOOP2      エ JZE   LOOP2

h に関する解答群

ア SLL   GR2,14      イ SLL   GR2,15
ウ SRL   GR2,14      エ SRL   GR2,15

解答 g ←クリックすると正解が表示されます

解答 h ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]