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

平成26年 秋期 基本情報技術者 午後 問12
問12   CASL

問12 次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。

〔プログラム1の説明〕 n 個の要素(大きさ1語)から成る配列に格納されているデータを, バブルソートによって昇順に並べ替える副プログラム SORT である。

図1 配列内のデータの並べ替え( n =5の例)

(1) 配列の先頭アドレスは GR1 に設定されて,主プログラムから渡される。

(2) 配列の要素数 n( n ≧2)はGR2 に設定されて,主プログラムから渡される。

(3) 配列に格納されているデータは,符号なしの整数とみなして並べ替える。

(4) 副プログラムから戻るとき,汎用レジスタ GR1〜GR7 の内容は元に戻す。

〔プログラム1の説明]

(行番号)

 1  SORT    START
 2          RPUSH
 3          SUBA   GR2,=1         ; ループのカウンタ 1 を設定
 4  LOOP1   LD     GR3,GR2        ; ループのカウンタ 2 を設定
 5          LD     GR4,GR1        ; GR4←比較する要素のアドレス
 6  LOOP2   LD     GR5,Ø,GR4
 7          CPL    GR5,1,GR4      ; 二つの要素を比較
 8          
 9          LD     GR6,1,GR4      ; 二つの要素を入れ替え
10          ST     GR5,1,GR4
11          ST     GR6,Ø,GR4
12  CONT    ADDA   GR4,=1
13          SUBA   GR3,=1
14          JPL    LOOP2
15          SUBA   GR2,=1
16          
17          RPOP
18          RET
19          END

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

解答群

ア JMI  CONT       イ JMI  LOOP1       ウ JPL  CONT

エ JPL  LOOP1      オ JZE  CONT        カ JZE  LOOP1

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

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

設問2 次の記述中の に入れる正しい答えを, 解答群の中から選べ。

 主プログラムから渡された配列の要素数nが4で,配列の内容が図2のとき, 行番号 7 の CPL 命令は 回実行され,行番号 11 の ST 命令は 回実行される。

図2 主プログラムから渡された配列の内容

解答群 ア 1       イ 2       ウ 3

エ 4       オ 5       カ 6

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

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

設問3 m 個の数字列を入力し,副プログラム SORT を使って,昇順に並べ替えて 出力する主プログラム MAIN を作成した。プログラム2中の に 入れる正しい答えを,解答群の中から選べ。

(1) 入力する数字列は4桁以内とする。

(2) 2 ≦ m ≦ 100 とする。

(3) 出力する数字列は4桁で,左のゼロは空白で表示する。

図3 入力数字列と出力数字列(m=5の例)

(4) 主プログラム MAIN は入力した数字列を,1語長の2進化 10 進数に変換して配列に格納し, 並べ替えを行う。図4に,数字列 '298' を変換した2進化 10 進数の例を示す。

図4 2進化 10 進数の例

〔プログラム2〕

MAIN   START
       LD       GR2,=Ø        ; 多数字列のカウンタを初期化
LOOP3  IN       BUF,ILEN
       LD       GRØ,ILEN
       JMI      EOF
       LD       GR3,=Ø        ; 配列に格納する内容を初期化
       LAD      GR4,BUF
LOOP4  LD       GR5,Ø,GR4     ; GR5←数字
       AND      GR5,=#ØØØF    ; 数字の数値化
       SLL      GR3,4         ; 処理済の内容を桁上げ
       OR       GR3,GR5       ; 空いた右端4ビットに数値を格納
       ADDA     GR4,=1
       SUBA     GRØ,=1
       JNZ      LOOP4
       ST       GR3,ARRAY,GR2 ; 2 進化 1Ø 進数にした数字列を格納
       ADDA     GR2,=1
       JUMP     LOOP3
EOF    LAD      GR1,ARRAY
       CALL     SORT
       LD       GR4,=' '      ; 空白文字を設定
LOOP5  LD       GRØ,Ø,GR1
       LD       GR5,=3        ; ループカウンタを設定
LOOP6  LD       GR3,GRØ
       
       OR       GR3,=#ØØ3Ø    ; 数値の数字化
       ST       GR3,BUF,GR5   ; バッファに数字を設定
       SUBA     GR5,=1
       JMI      WRITE
       
       JNZ      LOOP6
LOOP7  ST       GR4,BUF,GR5   ; バッファに空白を設定
       SUBA     GR5,=1
       JMI      WRITE
       JUMP     LOOP7
WRITE  OUT      BUF,OLEN
       LAD      GR1,1,GR1
       SUBA     GR2,=1
       JNZ      LOOP5
       RET
BUF    DS       256
ILEN   DS       1
OLEN   DC       4
ARRAY  DS       1ØØ
       END

解答群

ア AND  GRØ,=#ØØØF      イ AND  GR3,=#ØØØF        ウ SLL  GRØ,4

エ SLL  GR3,4        オ SRL  GRØ,4           カ SRL  GR3,4

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

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


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