アセンブラ言語をマスターするための”準備と勉強”について

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

 

今回こちらの記事で解説するのは、
アセンブラ言語をマスターするための”準備と勉強”についてです。

以前当サイトでアセンブラ言語の”コツ”を解説しましたが、

基本情報におけるアセンブラ言語の"コツ" 点数をあと10点伸ばすには?
こちらでは基本情報技術者試験における、アセンブラ言語の問題を解くコツを紹介しています。アセンブラ言語は、問題自体が簡単であるため、勉強をしっかりしていれば誰でも満点が狙える言語です。

アセンブラ言語の場合、本当に重要なのは準備と勉強です。

 

だからこそ今回解説するアセンブラ言語の”準備と勉強”で、
万全の用意をして試験に挑んでください。

 

アセンブラ言語は、
命令文が少なく、できる事が限られている言語であるため、
他のプログラムより内容は単純です。

しかし少ない命令文を駆使する形でプログラムが作られているため、
プログラムを読む受験者も、
アセンブラの基礎をしっかりと把握しておく必要があります。

覚えるべき内容は、完璧にして試験に挑みましょう。

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

 

チョコ
チョコ

アセンブラって教えられる人が減っている分野だよな。
簡単で覚えやすいから、
内容を説明できる人は一定数いるとは思うが…

シロ
シロ

試験対策という観点になると、
内容が簡単なだけに、本腰を入れて教えてくれる人は少ないかもね

チョコ
チョコ

ただ内容が簡単と言っても、油断していい問題じゃない。
むしろ配点が高く設定されているから、
他の分野より念入りに勉強した方が良いと思うぞ

スポンサーリンク

 

アセンブラの問題を解くための準備と勉強

・大前提として命令文の内容は完全に把握しておく

アセンブラの問題を解くための大前提として、
アセンブラで使う命令文は一通り把握しておく必要があります。

もしかしたら人によっては、

アセンブラなんて余裕だから
問題用紙に書いてある仕様書を読めば良いや

と考える人もいます。

もちろんアセンブラの命令文は数も他の言語に比べて少なく、
覚えるべき内容も非常に簡単です。

ただ私は、アセンブラの命令文を仕様書で確認するぐらいならば、
他の問題を解く時間の方が重要だと考えます。

アセンブラの場合、命令文を覚えるだけなら、ものの数時間で済む内容であるため、
アセンブラの命令文はできる限り覚えてから試験に臨むようにしましょう。

 

ちなみに試験のアセンブラ言語で必要になる命令文は、
たったの28語

しかも似たような内容が多いため、
覚えるだけなら数時間も掛からない程となっています。

 

シロ
シロ

点取り問題のアセンブラで、
試験時間を浪費して、点数も低いなんて状況は、
正直言ってかなり合格から遠い状況だよ

チョコ
チョコ

そんな事態にならないためにも、
命令文ぐらいは覚えていった方が無難だぞ

スポンサーリンク

 

・フラグレジスタの内容を把握しておく

アセンブラには、
フラグレジスタという他のプログラミング言語ではあまり見ない、
少し特殊な要素があります。

先に説明した命令文と同じくアセンブラの基礎とも呼べる要素であり、
処理自体もレジスタに入っている内容も非常に単純です。

 

ただCPAといった比較演算命令やJPLといった分岐命令を使用する際には、
ほぼ確実に使用(参照)する重要な要素でもあります。

そのためアセンブラの問題では、
ほぼ確実にフラグレジスタの内容が解答に関わってくるため、
必ずフラグレジスタの処理を理解しておきましょう。

特に初心者や未経験者の人は、
このフラグレジスタの処理や内容で混乱する可能性があるため、
できる限り内容を把握しておくようにしてください。

 

シロ
シロ

フラグレジスタには、
「OF」「SF」「ZF」といった3つの要素があるね

チョコ
チョコ

それぞれ演算命令の結果によって、設定される値が違う。
もちろん参照するレジスタによって
処理が変わってくるから気をつける必要があるぞ

 

・一文字違いの命令文に注意

アセンブラの命令文には、似たような名前が沢山あります。

演算命令のADDAADDL
比較演算命令のCPACPLといった具合です。

どの命令文もローマ字1文字違いではありますが、
たった1文字の違いで、処理内容が大きく違ってくるため注意が必要と言えるでしょう。

 

また試験においても、その1文字違いを狙い撃ちにしたような問題が出題されます。

例えば、平成22年春期に出題された問題の中では、
以下のような選択肢が出されました。

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

上記のような選択肢が出題された場合、
アセンブラに使われている命令文を把握していないと、
選択肢を絞り込むことすら困難と言えるでしょう。

 

チョコ
チョコ

個人的に気をつけるべき命令文は、シフト演算命令のSLAやSLLだな。
試験でもよく出題される命令文だ

シロ
シロ

算術や論理が絡む命令文は、解答をマークシートに入れる前に、
念には念を入れて、仕様書で命令文を確認した方が良いかもね。

チョコ
チョコ

試験時間を浪費するのも嫌だが、
問題を間違えるのはもっと嫌だからな

スポンサーリンク

 

・命令文における複数の書き方に慣れておく

アセンブラにおいては、
命令文における複数の書き方についても慣れておく必要があります。

例えば、データを読み込む命令のLD。

以下のようなプログラムを書いたとすると、

TEST      START
             LAD      GR1,A        ;  DCで読み込んだAの実効アドレスをロード
             LD        GR2,GR1    ;  GR1に格納されているアドレスをロード
             LD        GR3,0,GR1 ;  (GR1+0)番地の内容をロード  10(000A)
             LD        GR4,1,GR1 ;  (GR1+1)番地の内容をロード  #001A
             LD        GR5,0,GR2 ;  (GR2+0)番地の内容をGR5にロード  10(000A)  
             RET
A           DC        10
             DC        #001A
             END

書き方によって、処理の内容や参照する内容が違うため注意が必要です。

また仕様書を見ても、一目見ただけでは理解するのが難しいパターンが多いため、
できる限り勉強の時から、
命令文における複数の書き方に慣れておいた方が良いと言えるでしょう。

 

シロ
シロ

プログラムというのは、
作る人の数だけ色々な書き方があると思った方が良いね

チョコ
チョコ

だからこそアセンブラを勉強する時も、
シミュレータを使い実践してみた方が良い。

シロ
シロ

以下のリンクにシミュレータの導入についての解説をしているから
気になる人はチェックしてみてね

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

 

・ビット計算の学習は完璧に

アセンブラの問題を解く上でビット計算の勉強は必須です。

理由は、アセンブラというプログラミング言語を動かす上で、
ビット計算が欠かせない要素となっているからです。

計算をするにもビットの知識が必要、
数字列を数値に変えるのにもビットの知識が必要、
アセンブラの場合、何をするにしてもビットの知識が必要になります。

またビットの知識に関しては、
問題用紙に載っている仕様書だけで内容を把握するのは至難の業であるため、
必ず予習をして試験に挑むようにしましょう。

 

シロ
シロ

アセンブラでは、ビット列を使った計算が頻出するからね。
絶対にビットの知識が必要だよ

チョコ
チョコ

とは言っても、ビットの知識に関しては、
午前試験で出題されるレベルの知識を持っておけば十分だ。
だからこそビットの知識ぐらいは完璧にして試験に挑む必要があるぞ

シロ
シロ

ちなみに以下のページでは、
アセンブラと関係性が深い
ハードウェアのコツや問題傾向を解説しているよ

午後試験におけるハードウェアの重要ポイント 簡単な問題が多い!
ハードウェアは、午後試験に出題される問題の中では簡単な問題と言えます。そのため午後試験をどのように勉強したらいいか迷っている人は、まずハードウェアの過去問題を解くところから始めたらいかがでしょうか?
チョコ
チョコ

アセンブラを選ぶならば、
ハードウェアを合わせて勉強しておくと、
効率的に内容を覚えられるようになるぞ!

 

スポンサーリンク

 

・最も注意すべき処理は「ビット反転」と「ビットシフト」

アセンブラの問題を解く上で、
絶対に避けられない処理があります。

それが「ビット反転」「ビットシフト」です。

 

「ビット反転」「ビットシフト」は、
アセンブラにおいて、複雑な処理をやろうと思ったら、
必ず登場する処理です。

そのため基本情報技術者試験にて、
アセンブラ言語を選ぶならば、必ず学ぶべき内容となっています。

 

ちなみに「ビット反転」「ビットシフト」の処理は、
以下のようなパターンがあります。

・ビット反転(その1)
 LAD  GR0,#0101  GR0 = 0000 0001 0000 0001
   LAD  GR1,#FFFF  GR1 = 1111 1111 1111 1111
   XOR  GR0,GR1     GR0 = 1111 1110 1111 1110
・ビット反転(その2)
   LD     GR0,=0      GR0 = 0000 0000 0000 0000
   SUBL GR0,=1      GR0 = 1111 1111 1111 1111
・ビットシフト
 LAD GR0,#FFFF   GR0 = 1111 1111 1111 1111
   SLL  GR0,8          GR0 = 1111 1111 0000 0000
   SRL  GR0,4          GR0 = 0000 1111 1111 0000

またビット反転(その1)におけるGR1を利用した処理は、
ビットマスクと言って、ビット反転には欠かせない要素です。

「ビット反転」と「ビットシフト」と共に、必ず覚えておくようにしましょう。

 

チョコ
チョコ

アセンブラに慣れていない人が躓きやすいのが、
今回解説した「ビット反転」と「ビットシフト」、
そして「ビットマスク」だよな

シロ
シロ

どの内容も試験において高頻度で出題されるから、
よく勉強しておいてね

スポンサーリンク

 

・文字の符号表は存在だけでも把握しておく

アセンブラでは、
数字と数値の扱いが違うという点をご存知でしょうか?

数字の場合は、文字として
数値の場合は、値として
アセンブラの場合は扱いが違います。

 

また基本情報技術者試験におけるアセンブラの問題では、
数字を数値に変換するような問題が出題されます。

そしてその時に使われるのが、文字の符号表です。

文字の符号表に関しては、IPA(情報処理推進機構)が配布している
基本情報技術者試験における過去問題(午後試験)の巻末に掲載してあります。

 

文字の符号表を使った数値変換には、

SUBL   GR0,=’0’   ;  GR0には、’1’が入っていると想定

といった方法を用います。

この方法は、数字の’0’のアドレスが#0030という点に着目している方法です。

つまり、

‘0’ = #0030
‘1’ = #0031

#0031 – #0030 = 1

という形になっています。

ちなみにこの数字を数値に変換する方法は、頻繁に出題されるロジックではありません。

ただ上記のロジックをその場で読み解くのは
それなりに時間が掛かる内容であるため、
原理だけでも覚えておくようにしましょう。

 

シロ
シロ

数字を数値に変換するのは、
アセンブラでよくやる処理だよね

チョコ
チョコ

数字を数値に変換する方法は他にも方法はあるぞ。
例えば、AND   GR0,= #000Fのような感じだな

シロ
シロ

ビット列の下位4ビットに着目した方法だね

チョコ
チョコ

そうだ。
もしかしたら試験で出題されるかも知れないから
覚えておくと良いぞ

シロ
シロ

あと符号表の読み方に関してだけど、
符号表は「行」が16進数の下位1桁、
「列」が16進数の下位2・3桁に当たるよ

チョコ
チョコ

ちなみに「行」に書いてある2桁の数字は、
それぞれ16進数に変換して考える。
例えば、記号の’*’を16進数に直すと、
002Aといった形になるぞ

シロ
シロ

混乱しやすい内容になっているから、
しっかりと頭に入れて試験に挑んでね

スポンサーリンク

 

・アセンブラ言語は過去問題の復習がかなり有効

アセンブラは、命令文が少なく、できる事が限られている言語です。

そのため試験に出題される問題も
ビット列の変換や操作、日数割出や単純な計算といった
簡単な問題に偏りがちになっています。

 

またアセンブラの場合、
過去問題と同じ問題は出題されませんが、似たような問題は多いため、
過去問題の復習がかなり有効です。

アセンブラの問題に慣れるという点でも有効であるため、
是非とも過去問題をやり込んで点数UPに勤めてください。

 

シロ
シロ

アセンブラにおいても
過去問題の復習は有効な勉強方法なんだね

チョコ
チョコ

ただアセンブラにおいて過去問題の復習をする際には、
命令文を把握しておく、ビットを使った計算を把握しておく
といったポイントが必要になる。

シロ
シロ

だからいきなり過去問題の復習をしたところで
効果は薄いってことだね

チョコ
チョコ

アセンブラの問題が他の言語に比べて簡単だとしても、
気と手を抜くのは間違いだぞ!

スポンサーリンク

 

まとめ

今回は基本情報技術者試験における
アセンブラ言語の”勉強と準備”について解説しました。

・大前提として命令文の内容は完全に把握しておく
・フラグレジスタの内容を把握しておく
・一文字違いの命令文に注意
・命令文における複数の書き方に慣れておく
・ビット計算の学習は完璧に
・最も注意すべき処理は「ビット反転」と「ビットシフト」
・文字の符号表は存在だけでも把握しておく
・アセンブラ言語は過去問題の復習がかなり有効

 

アセンブラ言語という言語は、誰にでも習得可能な簡単な言語です。

ただ簡単なだけに、
命令文やビット計算といった基礎的な要素を完璧にしておかないと、
せっかくの点取り問題を取り逃すことにもなるため注意してください。

 

ちなみに冒頭でもリンクを貼りましたが、
当サイトでは、アセンブラの問題を答える”コツ”についても解説しています。

基本情報におけるアセンブラ言語の"コツ" 点数をあと10点伸ばすには?
こちらでは基本情報技術者試験における、アセンブラ言語の問題を解くコツを紹介しています。アセンブラ言語は、問題自体が簡単であるため、勉強をしっかりしていれば誰でも満点が狙える言語です。

是非とも今回解説した”勉強と準備”と一緒に参考にして、
アセンブラで満点を狙ってください。

 

また以下の参考書は、
種類が少ないアセンブラの参考書の中でも、
丁寧で分かりやすい説明が特長となっているおすすめの参考書です。

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

アセンブラの基礎から本番を模した問題まで、
一通りの内容が揃っている参考書となっています。

コメント