アセンブリ言語とは

計算機は機械語というもので動いているということは理解したとして、人がい ちいち機械の動きと、その命令がおかれるべき番地を計算して0と1の並びを 書く、というのははなはだ非効率です。そこで、アセンブリ言語 (assembly language) というものが出来ました。

これは、機械語命令( インストラクション(コード)とか、 オ ペコード (opcode) とか言ったりします)にほぼ対応した命令を文字 列(アルファベット、数字)で書き表し(これをニーモニック (mnemonic) といいます)その引数( オペランド (operand) と いうことがあります)も、レジスタ番号(記号)やアドレスに名前をふったも の(ラベルといいます)で書き表すことで、生の機械語を書くよりは数段楽に プログラミングすることができます。

ちなみに、アセンブリ言語を機械語に変換するのは(計算機が発明された当初 は人間が手でやっていましたが)アセンブラ (assembler, assemble する もの、の意) というプログラム(ソフトウェア)でおこなうのが一般的で す。このことから、アセンブリ言語のことをアセンブラ(ル)言 語とか、あるいは略してアセンブラと言うこともあります。

まずは、例

ということで、まずは例です。
     TIA 1
     AIA 2
     AO
L0:  JUMP L0
これの読み方の詳細はやはり 学研の「大人の科学」 No.24 ふろく4ビットマイコン 等をみてみてください(_ _)
  1. まず、
    
        TIA 1
    
    
    で、A レジスタに1という値をロード(代入)します。レジスタ(メモリ)の 内容を、そのまま1にする、ということです。

  2. 次に、
    
        AIA 2
    
    
    で、Aレジス タの値に2を加える、ということでAレジスタの値は3になるわけです。
    このCPUにおいて、Aレジスタはデータ処理用の作業領域の役目、と覚えておけ ばよいでしょう。

  3. つぎの
    
       AO
    
    
    これは、「Aレジスタの値を数字 LED に表示する」ということですので、ここ では加算された結果の3を表示します。この命令はかならず実行レジスタを1 にします。

  4. 最後に
    
    L0: JUMP L0
    
    
    これは、「実行フラグが1の場合、ラベル L0 が示すアドレスに制御を移す」 ということで、前の命令で実行フラグは1になったのでこの命令を実行する、 ということは、自分自身を再度実行せよ、ということになります。つまりここ で無限ループに入ることになり、実質的なプログラムの終了です。

ということで、実はこれは 生の計算機での 例 をアセンブリ言語で書いたものでした。 命令を 数値ではな く 文字列(ニーモニック といいます)で書けたり、また アド レス も数値ではなく ラベル という文字列で書けたりするこ とで、かなり読み書きしやすいのが分かると思います。
もうちょっと、アセンブリ言語   目次にもどる
講義用スタイル
印刷用スタイル