基本情報におけるアセンブラ言語の”コツ” 点数をあと10点伸ばすには?

アセンブラ
スポンサーリンク

アセンブラ言語は簡単って言っているけど、問題が上手く解けない・・・

プログラムの処理を考えているけど、途中で分からなくなる・・・

今回はそんな悩みを持っている方に向けて、アセンブラの点数を伸ばすためのコツについて解説します。

 

アセンブラ言語で必要になる知識は、ほんの少し。

あと必要になるのは、

  • 丁寧にプログラムをトレースできるか?
  • データを細かくチェックできるか?

というポイントだけです。

あとは勉強を真面目に進めてアセンブラ言語に慣れれば、十分に満点が見えてきます。

 

加えて以下のページでは、アセンブラにおける”準備と勉強”について解説しています。

アセンブラ言語をマスターするための"準備と勉強"について
こちらでは基本情報技術者試験にて出題される、アセンブラ言語の"勉強と準備"について解説しています。アセンブラ言語は、問題が簡単で覚えやすい初心者向けの言語。だからこそ勉強を完璧にして、試験で満点を目指してください。

今回の”コツ”と一緒に勉強で活用して、是非とも表計算の高得点を狙ってください。

出典および参考資料:今回の記事は、IPA(情報処理推進機構)の過去問題より問題を引用・出典しております。また解説の必要性に応じて、問題を抜粋・加工して掲載しております。
シロ
シロ

アセンブラに限らず、プログラムの問題は初心者にとって難しい問題だよね

チョコ
チョコ

確かにな。ただプログラムの問題で満点に近い数字を残せれば合格に大きく近づく。
しかもアセンブラならば、初心者でも十分に満点が狙える

シロ
シロ

基本情報技術者試験の午後試験は、アセンブラより難しい問題がゴロゴロあるからね。できるだけアセンブラで点数を稼いでおこう!

スポンサーリンク

アセンブラの問題を解くためのコツ

・ロードする内容をよくチェックする

アセンブラの問題を解く上で、
重要なのは汎用レジスタ(GR0など)に入っている内容を把握しておくという点です。

人によっては、「何を当たり前のことをw」なんて思ってしまうかも知れません。

しかしアセンブラの場合、汎用レジスタに対してアドレスによる指定ができるため、データを単純に入れるだけでなく、情報が複数格納される、といった状況に気をつける必要があります。

また1つの汎用レジスタに対して複数の情報が含まれていると、下記のような状況が発生するため注意が必要です。

  • プログラムで使われる回数も相対的に増える
  • プログラム内での重要度が上がる
  • 解答に関係する可能性も高くなる

だからこそアセンブラの問題を解く際には、汎用レジスタに対してロードされる内容をよくチェックしましょう。

シロ
シロ

アセンブラの場合、汎用レジスタの使いまわしが多いよね

チョコ
チョコ

アセンブラは、データを格納できる汎用レジスタの使える数が限られているから仕方のない処理だと言えるな。

シロ
シロ

ただ限られた環境の中で、効率的にプログラムを回すにはどうしたら良いか、といったポイントに悩むのもアセンブラの魅力かも知れないね

チョコ
チョコ

プログラムっていうのは、どれだけ処理を軽くするのかというポイントも重要だからな。

スポンサーリンク

プログラムを抜き出して注釈を入れる

アセンブラの場合、
プログラムにの重要ポイントに注釈を入れる、メモをするといった点が大事です。

というのもアセンブラの場合、他のプログラミング言語のように、
データを入れる変数に名前を付けるといった行為ができません

出てくるのは、GR0とかGR1とか傍から見れば訳の分からない文字の塊。

だからこそプログラムに注釈を入れたり、メモをしたりといった行為がとても重要となります。

 

またアセンブラにおいてGR0とかGR1といった汎用レジスタは、
使いまわしをするのが当たり前

レジスタに入っているデータの移動やコピー、上書きという状況がよくあるため、プログラムを読んでいて混乱するといった状況も十分に考えられます。

そんな事態を防ぐためにも、プログラムに逐一注釈やメモを入れて、問題をスムーズに読めるように、そして問題が解けるように気をつけましょう。

 

ちなみに基本情報技術者試験では、新型コロナウイルスの影響により、試験方式がマークシートからパソコンを利用したCBT方式へと移行しました。

そのためプログラムに対して直接注釈を入れるという方法が取れなくなったため、プログラムの重要部分だけをメモで抜き出して、注釈を入れるような方法を活用しましょう。

チョコ
チョコ

アセンブラは、プログラム自体は短いけど、データの使いまわしとか上書きが多いから混乱しやすいんだよな・・・

シロ
シロ

確かにね。直前で使った汎用レジスタが次の瞬間には上書きされているなんて状況がよくあるからね

チョコ
チョコ

だからこそ、注釈やメモの重要度が高いってことだな

・問題文のコメントに惑わされない

アセンブラの問題を見ていると、
プログラムの右側にプログラムの内容を説明したコメントが記載されているという状況がよくあると思います。

ただそのコメントは、あくまでもプログラムを作った人にとって、見やすく分かりやすいメモです。

例えば以下のプログラムは、平成30春の問題から抜粋したプログラムですが、

  1. LD       GR4,0,GR1   ;数字1文字を取り出し
  2. SUBL   GR4,=’0’      ;1桁を数値に変換
  3. SLL      GR0,1          ;GR0を10倍してGR4を加算
  4. LD       GR5,GR0
  5. 「      a      」
  6. ADDL  GR0,GR5
  7. ADDL  GR0,GR4
  8. LAD    GR1,1,GR1

出典:基本情報技術者試験 平成30春期 午後試験 問12より抜粋

3行目のメモである「GR0を10倍してGR4を加算」がどこを指しているか、一目で分かるでしょうか?

見る人によっては、まるで3行目だけの処理で「GR0を10倍してGR4を加算」の処理をしていると考える人もいるでしょう。

けど実際ところ「GR0を10倍してGR4を加算」は、
3行目から7行目までのプログラムがコメントに対応しており、
コメントがどの行を刺しているか、かなり曖昧であるという点が分かると思います。

以上の点を踏まえると、アセンブラのプログラムに書かれているコメントは、参考程度に考えておく方が無難と言えるでしょう。

シロ
シロ

アセンブラに書かれているコメントは、間違っていないことを言っているんだけど・・・

チョコ
チョコ

いくつかの重要なポイントが抜けているって感じだよなw

シロ
シロ

だから問題に書かれているメモは、あくまでもプログラムを読むためのヒントぐらいに思っておいた方が良いかもね

スポンサーリンク

・基本的にプログラムは上から下へ読む

アセンブラは、プログラムが短く、副プログラムが少ないといった特徴があります。

そのため変に細切れにしてプログラムを読むより、
上から下へ流れに沿って読んだ方が、確実にプログラムを読み取れるでしょう

また問題を確実に読み取れるようになると、戻しの作業が無くなるため試験時間の節約にも繋がります。

だからこそプログラム自体が短いアセンブラでは、上から下へ着実に1つ1つの命令文を読むというポイントを重視して、できる限り戻しの作業を減らしてください。

あとは短縮した時間を他の問題に使って、午後試験全体の点数アップを目指しましょう。

シロ
シロ

アセンブラは他のプログラミング言語と違って、プログラムがかなり短いからね。焦って読まなくても大丈夫だよ

チョコ
チョコ

プログラムをじっくり読んでも、時間が掛かりにくい。これはアセンブラにおける大きなメリットの1つだな

・データの内容を最初から書き出してみる

アセンブラ言語の問題を解いていると、

プログラムのコメントに書かれている機能がいまいち理解できない・・・

問題文の処理はどこに該当するんだろ?・・・

なんて事態が発生すると思います。

そんな時に重要なのが、データの内容を最初から書き出してみるという解き方です。

パッと見ると「気づいたことはプログラムに直接注釈を入れる」
と同じように思える内容ですが、重要なのは”最初から“という部分。

何故ならばプログラムの処理が分からなくなった時、大抵の場合は、
プログラムの処理をどこかで読み飛ばしているからです。

 

だからこそプログラムの処理が分からなくなったら、一度頭を真っ白にした状態で、プログラムの処理を最初から読んでみてください。

実際に読んでみると、

なんだ! こんな簡単な処理だったのか!

という状況が生まれるはずです。

シロ
シロ

プログラミングに慣れていない人で問題が解けない人は、大抵このプログラムの読み飛ばしが発生しているパターンが多いね

チョコ
チョコ

基本情報技術者試験は、試験時間が少なくて焦りがちだが、プログラムを読み飛ばすような試験時間の節約は禁物だ

シロ
シロ

だからこそまずは、
プログラムをじっくり読むというポイントを重視して勉強を進めてね

スポンサーリンク

・実際にプログラムを動かして理解力アップ

基本情報技術者試験のプログラミング言語問題を解いていると、

どうしてこんな処理になるのか分からない・・・

なんて事態が発生するかと思います。

そんなときに有効なのが、プログラムを実際に実行してみるという方法です。

プログラムを実際に書いて実行してみると、データの流れが明確になるため、プログラムが理解しやすくなります。

一見すると面倒で回りくどい方法に感じるかも知れませんが、アセンブラの場合、プログラムが試しやすい環境が幾らでもあるため、試さないのは損だと言えるでしょう。

 

ちなみに以下のページでは、アセンブラのテスト環境を解説しています。

アセンブラ(CASLⅡ・basic)のテスト環境を用意するには?
アセンブラ(CASLⅡ・basic)のテスト環境を用意するにはどうすればよいのでしょうか? 実のところ、アセンブラのテスト環境はものすごく簡単に用意できます。

そのためアセンブラの勉強に詰まってしまった場合は、一度問題文から目を離して、実際にプログラムを実行してみてはいかがでしょうか?

プログラムを実際に書いてみると、机での勉強だけでは見えなかった風景が見えるようになり、更には良い気分転換にもなるでしょう。

チョコ
チョコ

確かにプログラムを実行するという方法は有効かもしれないが、試験で使われているプログラムを書いて実行するって、結構大変だと思うんだが?

シロ
シロ

うん。だから全てのプログラムを書き出すのではなく、分からない部分だけを書いてみて実行すると良いよ

チョコ
チョコ

なるほど。

シロ
シロ

計算問題とかも同じだけど、長い式を解く場合は、部分的に計算をしてみると分かりやすいよね。だからそういった方法とプログラムは同じだと考えると良いよ

まとめ

今回はアセンブラの問題を解くためのコツについて解説しました。

  • ロードする内容をよくチェックする
  • プログラムを抜き出して注釈を入れる
  • 問題文に書いてあるコメントに惑わされ過ぎないように
  • 基本的にプログラムは上から下へ流れに沿って読む
  • 困った時は、データの内容を最初から書き出してみる
  • どうしても問題が分からない場合は、実際にプログラムを動かしてみる

アセンブラの問題は、正直言って他の言語に比べて簡単です。

基本的にアセンブラは、他のプログラミング言語より、プログラムや情報処理の基礎的な要素が重視される分野であるため、
情報処理の初心者や未経験者でも、十分に満点が狙える分野となっています。

だからこそアセンブラの場合、

  • プログラムの基礎的要素を理解しているか?
  • プログラムを丁寧にトレースできるか?
  • データを逐一チェックできるか?

といった基礎的な要素が重要だと言えるでしょう。

 

ちなみに冒頭でも紹介しましたが、当サイトでは、アセンブラ言語の問題を解くための”準備と勉強”についても解説しています。

アセンブラ言語をマスターするための"準備と勉強"について
こちらでは基本情報技術者試験にて出題される、アセンブラ言語の"勉強と準備"について解説しています。アセンブラ言語は、問題が簡単で覚えやすい初心者向けの言語。だからこそ勉強を完璧にして、試験で満点を目指してください。

アセンブラ言語の場合、むしろ”準備と勉強”の方が重要と言えるため、アセンブラ言語で得点を落としたくないと考える人は、必ず内容をチェックしておくようにしてください。

 

また以下のページでは、私がおすすめするアセンブラの参考書を解説しています。

レビュー『プログラミング入門 CASL2―情報処理技術者テキスト』
『プログラミング入門 CASL2―情報処理技術者テキスト』は、丁寧な解説が特長である参考書です。プログラムに対して必要であれば1行から解説が入っているため、プログラムに慣れていない人でも、余裕をもって学習を進められるでしょう。
  • 丁寧な解説
  • 分かりやすい説明
  • 問題も数が揃っている

といった特長があり、使いやすい参考書であるため是非とも勉強の糧として役立ててください。

コメント