ソフトⅡコース担当 ブログのおにーさまこと高橋です。
今回は平成26年度春期基本情報技術者試験午後問12の解説です。
文字列を、単語で分解し、管理テーブルに設定するプログラムです。文字列の先頭文字から順に処理しますが、文字により、処理内容が異なります。
- .であれば、処理中である最後の単語の格納処理を行った後、終端マークを格納して終了する。
- 空白であれば、処理中の単語の格納処理を行った後、次の文字に進む。
- 空白以外であれば、
- 単語の処理中(GR3が0か1)でなければ、新しい単語の開始なのでアドレスを(GR6に)退避し、種別を数字のみ(0)にする。数字以外に対処するため、続けて単語の途中の処理も行う
- 数字以外を含む単語の処理中(GR3が1)であれば、種別が変わることはないので次の文字に進む。
- 数字のみの単語の処理中(GR3が0)であれば、
- 数字であれば、種別は変わらないので次の文字に進む。
- 数字以外であれば、種別を1にする。
レジスタの変化を簡単に図示すると次のようになります。
単語の設定では、
- 単語の処理中でなければ(GR3が-1)、設定しない。
- 単語の処理中であれば、設定する。
- 先頭アドレスはGR6に退避してある。
- 単語の長さは現位置から先頭アドレスの差で求まる。
- 単語の種別はGR3に設定してある。
設問1
空欄aは、空白文字で単語の格納処理を行った直後なので、次の文字に進みます。次の文字に進むには、ラベルLPの行に戻ります。イの「JUMP LP」が入ります。空欄bは、単語の長さの計算の部分です。GR5とGR6の差の計算なので、カのSUBL GR5,GR6が入ります。
設問2
ラベルNEXTの行は、単語の種別を1に設定したときに実行されます。これは、単語の種別が数字のみのときに、数字以外の文字である場合に発生します。単語の先頭では一旦0を設定するので、先頭文字が数字以外の時も発生します。つまり、3文字目のAのとき、7文字目のCのときにNEXTの行を実行します。5文字目のBでは、Aにより単語の種別がすでに1になっているので種別を変更しません。つまり、NEXTの行は実行しません。
2回目はCの文字のときなので、GR4には文字Cが格納されています。カが正解です。
今回はここまで。次回、設問3の解説を書きます。
2014年(平成26年度)春期の解説
- 平成26年度 春 基本情報技術者試験 【問13】(その2)
- 平成26年度 春 基本情報技術者試験 【問13】(その1)
- 平成26年度 春 基本情報技術者試験 【問12】(その2)
- 平成26年度 春 基本情報技術者試験 【問12】(その1)
- 平成26年度 春 基本情報技術者試験 【問6】
- 平成26年度 春 基本情報技術者試験 【問7】(その2)
- 平成26年度 春 基本情報技術者試験 【問7】(その1)
- 平成26年度 春 基本情報技術者試験 【問4】
- 平成26年度 春 基本情報技術者試験 【問5】
- 平成26年度 春 基本情報技術者試験 【問9】
- 平成26年度 春 基本情報技術者試験 【問8】(その2)
- 平成26年度 春 基本情報技術者試験 【問3】(その3)
- 平成26年度 春 基本情報技術者試験 【問8】(その1)
- 平成26年度 春 基本情報技術者試験 【問3】(その2)
- 平成26年度 春 基本情報技術者試験 【問3】(その1)
- 平成26年度 春 基本情報技術者試験 【問1】
- 平成26年度 春 基本情報技術者試験 【問2】
- Date:
- この記事を
友だちに教える - LINE
- - HatenaBookmark
- GooglePlus