スゴ技

平成26年度 秋 基本情報技術者試験 【問12】

Blog:IT・情報処理BLOG |

ブログのおねーさまこと山口あかねです。久々に基本情報の午後問題、CASLの解説をしてみますね。

設問1
配列中のデータをバブルソートで入れ替えをする、という簡単なプログラムである。
プログラムを見ると、
6行目:GR5に先頭データを取り出している。
7行目:GR5の内容と(GR4)+1番地の記憶内容を比較している。
つまり、先頭のデータとその次のデータを比較していることになる。

今回のバブルソートは昇順に並べるので、先頭からの比較であれば、先頭とその次のデータを比較して、大きなデータが後ろになるように並べ替えを行う。
今回であれば、GR5の内容の方が小さければそのまま、GR5の内容の方が大きければ次のデータと入れ替えることになる。
9行目から11行目で入れ替えを行っているので、GR5の内容が小さい場合は入れ替えの部分を飛び越える必要がある。
すなわち、解答は「JMI CONT」で、アとなる。

a:ア  b:エ

設問2

バブルソートの比較交換の様子を下に図式化しておく。

zu01

zu02

zu03比較は合計6回行われ、赤丸のところで交換が起きているため、CPL命令の実行は6回、交換が実行されてデータが格納される時に実行されるST命令は3回実行される。

c:カ   d:ウ

設問3

設問3のプログラム2は、IN命令で数字文字列を入力し、それを2進化10進数に変換したあと、前述のプログラムを使い、バブルソートによって昇順に並べ替える。その後、再び数字文字列に直して、OUT命令で出力するという内容になっている。

まず、IN命令で入力した数字文字列は下の図左のように入力される。それをARRAYからの連続した領域に「0289」というような2進化10進数に変換して1つの数字を1領域ずつに格納していく。メモリは16ビットの大きさなので、2進化10進数は最大4桁のものまで入れることができる。

zu04

変換する手順は次の通り。

①IN命令で入力された文字コードの数字文字を先頭のものからGR5へ取り出す。(7行目)
②下位4ビットを取り出すためにマスクデータ#000FとANDする。
③2進化10進数を作成するレジスタ(GR3)を左へ4ビットシフトする。(9行目)
④空いた下位4ビットへ文字コードから取り出した下位4ビットデータを併合する。

zu05

この作業を文字の桁数分だけ繰り返すと、2進化10進数が作成できる。

これをデータ数回繰り返したのち、設問1のプログラム1を使い昇順に並べ替える。
昇順に並んだら、次はOUT命令を使って出力をする。出力の手順は入力の手順の逆で以下のことを行う。

①ARRAY配列の先頭からデータをGR0へ取り出す。(19行目)
②GR0のデータをGR3へコピーする。(21行目)
③下位から4ビットごとに2進化10進数を取り出す。(22行目の空欄e)
④取り出した下位4ビットデータに#0030を併合し、文字コードへと変換する。(23行目)
➄出来上がった文字コードをBUF配列に格納する。(24行目)
⑥GR0にある元データを右へ4ビットシフトして次の桁の数字が下位4ビットに来るようにする。(27行目空欄f)

以上の操作を繰り返す。

注意!!格納はBUF+3番地から上へと入れていくこと。

e:イ  f:オ

2014年(平成26年度)秋期の解説

Date:

神戸電子の
IT・情報処理学科
についてもっと知りたい!

Webアプリケーション等のシステム管理、設計、開発が行える総合的なITエンジニアを育成する学科です。

学科紹介を見る (神戸電子サイト)

学科紹介イメージ
Info神戸電子からのお知らせ

Tagタグ

Teamライターチーム紹介

神戸電子オフィシャルSNS

オープンキャンパスなどの
誰でも参加OKの楽しいイベント
やブログの最新記事などお届けします!

ページの上へ移動