マイクロコンピュータの命令 制御用コンピュータを扱ううえで,アセンブラによるプログラムは必須項目です. 「アセンブラは難しい」というイメージが先行していますが,ハードウェアさえ理解していればほかの言語と比較し, (1)文法がシンプルである (2)異なるCPUでも命令の内容は同じで,また覚え なければならない命令数が少なくて済む (3)異なるCPUに合わせたイニシャライズ(初期化)が容易に記述できる (4)処理速度が絶対に速い 逆にデメリットもあり, (a)関数計算が不得意 (b)整然とした記述を怠ると,製作者本人でもメンテナンスのできないプログラムになる CPUの選定もしかりですが,開発言語の選定もその目的に合ったもの,例えばI/O制御が主体となる制御システムであればアセンブラ,演算が主体となるシステムであれば高級言語とすべきです. しかし,演算が主体となるシステムを制御用組み込み型CPUで製作することは,あまり得策とはいえません.その場合は,図1-15のような分散型制御システムを提案します.
制御用CPUの命令 少し話がそれましたが,ここでは制御用CPUがもっている命令を種類別に説明します.説明では,Z80のニーモニックを主に使用します. 表1-3に,マイクロコンピュータの命令大別表を示します.
マクロコンピュータの命令形式とアドレッシング 命令コードとオペランド 図1-16のように,マイクロコンピュータの命令は,命令コードとオペランドから構成されます.
なお,インテル系(Z80,8086,TLCS-900など)とモトローラ系(68000,H8など)では,ソースとディスティネーションの並びが逆になりますので,注意が必要です. アドレッシングの方法 アドレッシングとは,オペランドで指定するデータまたはデータのある場所を示す方法のことです. アドレッシング方法は,CPUにより若干異なりますが,次の5種類に大別され,その組み合わせでプログラムを記述します レジスタ・モードの例 LD A,B レジスタA,レジスタBなどのように,直接レジスタ名を指定します.アドレッシングに要するクロック数が一番少ない,もっとも効率の良いモードです. イミディエイト・モードの例 LD A,12H イミディエイト・データ12Hが直接コードになります. この例の第1オペランドはレジスタ・モードで,第2オペランドがイミディエイト・モードです. 直接番地指定モードの例 (1) LD (1000H),A (2) JR mn ;mnは通常ラベルを使用する (3) JP 2000H 操作対象となるアドレスを直接,絶対値または相対値で指定します. レジスタ間接モードの例 LD HL,1000H ;HLレジスタに1000H ;をロード LD (HL),12H ;HLレジスタの内容で ;間接指定される1000H ;番地へ12Hをストア 1行目はレジスタ・モードとイミディエイト・モード,2行目の(HL)が間接モードです. インデックス間接モードの例 LD (IX+34H),A レジスタ間接モードとよく似ていますが,インデックス間接モードの場合,ベース指定されたインデックス・レジスタの内容に,ディスプレースメント値が加算された値のメモリ番地が操作対象となります. 命令とアドレッシングの組み合わせ例 いろいろな命令とアドレッシング・モードがソース,ディスティネーションを問わずに自由に組み合わせ可能なCPUが使いやすいCPUです. しかし,Z80の命令体系はAレジスタ,HLレジスタを中心に構成していますから,あまり使いやすいCPUとはいえません. リスト1-1は,Z80の各種命令とアドレッシングの組み合わせ例です.
Copyright 2000 武下 博彦 |
|
Copyright 1997-2001 CQ Publishing Co.,Ltd.