平成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
設問2 次の記述中の に入れる正しい答えを, 解答群の中から選べ。 主プログラムから渡された配列の要素数nが4で,配列の内容が図2のとき, 行番号 7 の CPL 命令は 回実行され,行番号 11 の ST 命令は 回実行される。
図2 主プログラムから渡された配列の内容 解答群 ア 1 イ 2 ウ 3 エ 4 オ 5 カ 6
設問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 解答群 エ SLL GR3,4 オ SRL GRØ,4 カ SRL GR3,4
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ] |