MAX-IDEの䜿甚にあたっお

芁玄

MAX-IDEは、MAXQ®マむクロコントロヌラファミリのための、フル機胜のアプリケヌション開発/デバッグ環境です。MAX-IDEは、MAXQのすべおの暙準評䟡キットで動䜜するように蚭蚈されおおり、プロゞェクトベヌスの開発環境、MAXQの暙準デバッグ機胜ぞのアクセス、統合マクロアセンブラ、およびJTAGむンタフェヌスを䜿甚したむンサヌキットアプリケヌションのロヌディングを実珟しおいたす。

抂芁

MAX-IDEは、MAXQ™マむクロコントロヌラファミリのための、フル機胜のアプリケヌション開発/デバッグ環境です。MAXQのすべおの暙準評䟡キットで動䜜し、以䞋の機胜が甚意されおいたす。

  • MAXQアセンブリアプリケヌション甚プロゞェクトベヌスの開発環境
  • すべおのMAXQマむクロコントロヌラ甚の暙準ヘッダファむルを含むMAXQマクロアセンブラを内蔵
  • JTAG/TAPむンタフェヌスずROMブヌトロヌダを䜿甚したむンサヌキットアプリケヌションのロヌディング(フラッシュたたはEEPROMプログラムメモリを備えたMAXQマむクロコントロヌラ甚)
  • JTAG/TAPむンタフェヌスを経由しお利甚可胜なむンサヌキットデバッグ機胜(ブレヌクポむント機胜、ステップバむステップのプログラム実行、およびメモリ/レゞスタの内容衚瀺を含む)
参考資料
詳现に぀いおは、MAXQ2000評䟡キットのデヌタシヌトを参照しおください。このデヌタシヌトは、評䟡キットCDたたはオンラむンからダりンロヌドするこずができたす。

MAX-IDEのむンストヌル

システム芁件

  • オペレヌティングシステムWindows® 98、Windows NT、Windows 2000、Windows ME、たたはWindows XP®
  • 少なくずも1぀の空きシリアルCOMポヌト(MAXQ評䟡キットずの通信に必芁)、たたはUSB-to-serialアダプタず1぀の空きUSBポヌト

むンストヌルプログラムの実行

  1. MAX-IDE甚のむンストヌルパッケヌゞはMAX-IDE.zip。
  2. このパッケヌゞをダりンロヌドしお解凍し、setup.exeを実行しおMAX-IDEをハヌドドラむブにむンストヌルしたす。
  3. [InstallShield]ダむアログで、[Typical installation]を遞択するず、評䟡キットを甚いおMAXQアプリケヌションを開発するのに必芁なすべおのファむルがむンストヌルされたす。
  4. むンストヌルが完了すれば、[スタヌト]メニュヌからMAX-IDEを起動するこずができたす。

MAX-IDEのむンストヌルファむル

MAX-IDEのメむン実行ファむルずヘルプファむルは、MAX-IDEのルヌトディレクトリにありたす。デフォルトでは、このディレクトリは、Program Files\MAX-IDEです。その他のファむルは、以䞋のサブディレクトリにありたす。

  • Compilersサブディレクトリには、MAX-IDEでむンストヌルされたすべおのコンパむラずアセンブラのための実行ファむルずデヌタファむルが栌玍されおいたす。ここには、少なくずもMAXQの暙準アセンブラが含たれたす。䜿甚する配垃バヌゞョンによっおは、他のアセンブラやコンパむラもむンストヌルされる堎合がありたす。
  • Devicesサブディレクトリには、ラむブラリ、ドラむバ、および構成ファむルが栌玍されおいたす。これらは、すべおのMAXQマむクロコントロヌラず評䟡キットのためのアプリケヌションを察象ずしたものであり、さらにこれらず通信するためのものです。
Examplesサブディレクトリには、すべおのMAXQマむクロコントロヌラのためのコヌドサンプル(<デバむスのディレクトリ>/xxx_Demo内)、および暙準のむンクルヌドファむルずラむブラリ(<デバむスのディレクトリ>/api内)が栌玍されおいたす。

JTAGむンタフェヌスのセットアップ

Serial-to-JTAGアダプタボヌド

MAX-IDEは、JTAG IEEE芏栌1149に準拠した専甚のJTAGテストアクセスポヌト(TAP)むンタフェヌスを経由しお、MAXQマむクロコントロヌラのブヌトロヌダずデバッグ゚ンゞン機胜にむンタフェヌス接続されたす。このむンタフェヌスは、TMS (Test Mode Select)、TCK (Test Clock)、TDI (Test Data In)、およびTDO (Test Data Out)の信号で構成され、通垞、ポヌト端子で倚重化されたす。

図1は、すべおのMAXQマむクロコントロヌラの評䟡キットに搭茉されおいるSerial-to-JTAGアダプタが、PCのシリアルCOMポヌトずMAXQマむクロコントロヌラのJTAGむンタフェヌス間のむンタフェヌス局を提䟛する仕組みを瀺しおいたす。

図1. MAXQ甚のSerial-to-JTAGむンタフェヌス
図1. MAXQ甚のSerial-to-JTAGむンタフェヌス

JTAGむンタフェヌスの信号ずケヌブル

Serial-to-JTAGアダプタボヌドは、䞡端に2 x 5の゜ケット(0.100"間隔)を備えた10芯リボンケヌブルを甚いおMAXQ評䟡キットボヌドず接続されたす。このケヌブルで䌝送される信号を以䞋の衚1に瀺したす。

衚1. JTAGむンタフェヌスの信号

Pin Number Signal Type Signal Name Signal Description
1 Input to MAXQ TCK JTAG/TAP Test Clock
2 Ground GND Ground
3 Output from MAXQ TDO JTAG/TAP Test Data Out
4 Reference VREF Supplied by MAXQ kit to set the reference level for JTAG signals output by the Serial-to-JTAG board
5 Input to MAXQ TMS JTAG/TAP Test Mode Select
6 Input to MAXQ nRST Open-drain drive, connected to MAXQ reset line
7 None KEY Keyed pin for JTAG cable alignment
8 Power VCC5 +5.0V (±5%) supply provided by JTAG board
9 Input to MAXQ TDI JTAG/TAP Test Data In
10 Ground GND Ground

評䟡キットの接続

䜿甚する評䟡キットの皮類によっおは、Serial-to-JTAGむンタフェヌスボヌドたたは評䟡キットボヌド、あるいはその䞡方で電源が必芁ずなる堎合がありたす。䞡方のボヌドを蚭定するための手順をここで簡単に説明したす(衚2)。手順の詳现に぀いおは、評䟡キットのデヌタシヌトを参照しおください。Serial-to-JTAGボヌドたたはMAXQ評䟡キットボヌドで䜿甚する電源はすべおDCのみ(センタヌポストがプラス)であるこずに留意しおください。

衚2. 評䟡キットのセットアップ

Evaluation Kit JTAG Power Supply Kit Power Supply Jumper Settings JTAG Header
MAXQ2000 5V, ±5% None JTAG—Close JH1, JH2, JH3Kit—Close JU11; Close 1+2 on JU1, JU2, JU3 J4

MAX-IDEで䜿甚するこずができるように、MAXQ評䟡キットずSerial-to-JTAGボヌド(図2)をセットアップする方法

  1. 䞊述のようにSerial-to-JTAGボヌドに電源を接続したす。
  2. 䞊述のように評䟡キットずSerial-to-JTAGボヌドのゞャンパを蚭定したす。キットの特定の機胜にアクセスするためには、評䟡キットボヌド䞊でゞャンパやDIPスむッチを远加で蚭定するこずが必芁ずなるこずがありたす。詳现に぀いおは、評䟡キットのデヌタシヌトを参照しおください。
  3. 2 x 5の10芯リボンケヌブルをSerial-to-JTAGボヌドのP2ヘッダから評䟡キットボヌドの察応するヘッダに接続したす。コネクタは䞀方向にのみ接続可胜なように調節されおいたす。調節されおいない堎合は、赀いワむダが䞡方のヘッダの同じ端子に接続されるようにしおください。
  4. ストレヌトシリアルケヌブルをSerial-to-JTAGボヌドのJ1からPCのCOMポヌトに接続したす。
  5. すべおの電源をオンにしたす。
図2. MAXQの評䟡キットずSerial-to-JTAGボヌド
図2. MAXQ2000の評䟡キットずSerial-to-JTAGボヌド

MAX-IDEでのプロゞェクトの凊理

新しいMAXQアセンブリプロゞェクトの䜜成

MAX-IDEで新たにMAXQアセンブリ蚀語のプロゞェクトを䜜成するには、以䞋の手順にしたがいたす。

  1. [MAX-IDE]メニュヌから[Device] → [MAXQ JTAG]を順に遞択したす。
  2. [Project] → [New Project]を順に遞択したす。無題のプロゞェクトが䜜成されたす。
  3. [Project] → [Save Project As]を遞択したす。プロゞェクト(.prjファむル)を保存したい堎所を遞択したす。
  4. 新しいアセンブリ蚀語ファむルを䜜成するには、[File] → [New File]を遞択したす。ファむルにアセンブリコヌドを入力した埌、[File] → [Save As]を遞択し、新しく䜜成した.asmファむルをプロゞェクトディレクトリに保存したす。次に、[Project] → [Add Files]を遞択し、新しく䜜成したファむルを遞択しおプロゞェクトに远加したす。
  5. 既存のアセンブリ蚀語ファむルをプロゞェクトに远加するには、単に[Project] → [Add Files]を遞択し、プロゞェクトに远加するファむルを遞択するだけです。
  6. むンクルヌドファむルは、わざわざプロゞェクトに远加する必芁はありたせん。アセンブリプロセス時に自動的に読み取られたす。
MAXQ2000のアセンブリファむルの䟋を以䞋に瀺したす

$include (..\api\maxQ2000.inc)

org 0000h

main:
    jump  $

end
䞊蚘の$include行は、むンクルヌドファむルの堎所によっお異なりたす。$includeずorg呜什の詳现に぀いおは、本曞のMAX-IDEアセンブラの䜿甚の項を参照しおください。

アセンブリファむルずむンクルヌドファむルに関する泚蚘

  • すべおのMAXQマむクロコントロヌラに共通のシステムレゞスタ(アキュムレヌタ、デヌタポむンタ、ルヌプ制埡レゞスタなど)は、MAX-IDEアセンブラであらかじめ定矩されおいたす。デバむスごずに異なる呚蟺機噚レゞスタは、むンクルヌドファむルで定矩する必芁がありたす。暙準むンクルヌドファむルは、各MAXQマむクロコントロヌラ甚のMAX-IDEのむンストヌルに含たれおいたす。したがっお、䞊の䟋で瀺したむンクルヌドファむルはMAXQ2000甚になりたす。
  • プリプロセッサ呜什(等匏、定矩、マクロなど)が、プロゞェクト内のファむルからファむルに持ち越されるこずはありたせん。MAX-IDEアセンブリプロゞェクトに耇数のアセンブリファむルが含たれる堎合は、いずれのプリプロセッサ呜什たたはむンクルヌドファむル呜什も、この呜什を䜿甚する各アセンブリファむルに含たれおいなければなりたせん。
  • プロゞェクト内のアセンブリファむルの数にかかわらず、各アセンブリファむルの末尟にendステヌトメントを蚘入する必芁がありたす。
  • むンクルヌドファむルの末尟には、endステヌトメントを配眮しないようにしおください。
  • 耇数のアセンブリファむルがプロゞェクトに含たれおいる堎合、すべおのファむルのすべおの識別子が実質的にパブリックになりたす。すなわち、いずれのアセンブリファむルのコヌドも、そのプロゞェクト内の他のアセンブリファむルで定矩されたルヌチンを呌び出したり、ラベルを参照したりするこずができるずいうこずです。

既存のプロゞェクトを開く

以前に䜜成したMAX-IDEプロゞェクトを開くには、メニュヌから[Project] → [Open Project]を遞択し、開きたいプロゞェクトの.prjファむルを遞択したす。Serial-to-JTAGボヌドず評䟡キットボヌドを正しく接続しないで電源を投入した堎合にMAXQ JTAGプロゞェクトを開くず、゚ラヌメッセヌゞが衚瀺される堎合がありたす。

プロゞェクトを䜜成しお開くず、プロゞェクトに含たれるアセンブリコヌドファむルが巊偎のパネルに䞀芧衚瀺されたす。ファむル名をダブルクリックするず、以䞋の図3に瀺すように、そのファむルが開いおMAX-IDEで線集するこずができるようになりたす。

図3. MAX-IDEのプロゞェクト環境
図3. MAX-IDEのプロゞェクト環境

コヌドの実行ずデバッグ

プロゞェクトのコンパむル

プロゞェクトファむルをコンパむルするには、メニュヌから[Debug] → [Make]たたは[Debug] → [Build All]を順に遞択し、ツヌルバヌのこれらのコマンドに察応するショヌトカットボタンをクリックするか、F7 ([Make]ず同じ)を抌したす。MAXQアセンブラが起動したす。゚ラヌが発生しなければ、Compiling...Build Successfulのメッセヌゞが[Messages]りィンドりに衚瀺されたす。構築によっお䜕らかの゚ラヌがある堎合、その゚ラヌも[Messages]りィンドりに衚瀺されたす。

プロゞェクトの実行

プロゞェクトのコンパむルが正垞に完了すれば、以䞋のいずれかの方法を䜿甚しおデバッガでプロゞェクトを実行するこずができたす。

  1. [Debug] → [Run] (F5)を遞択するず、JTAGむンタフェヌスを経由しお、コンパむルされたプロゞェクトコヌドがMAXQマむクロコントロヌラにロヌドされお実行が開始されたす。プログラムの実行は、[Debug] → [Stop] (Shift+F5)を遞択するたで、たたは[Pause]ボタンをクリックするたで、あるいはブレヌクポむントが珟れるたで継続されたす。
  2. [Debug] → [Step Into] (F11)を遞択するず、コンパむルされたプログラムがロヌドされお、゜ヌスコヌドの最初の行で実行が停止したす。
  3. [Debug] → [Run to Cursor] (Control+F10)を遞択するず、コンパむルされたプログラムがロヌドされお実行が開始されたす。実行は、実行ポむントが、線集カヌ゜ルの配眮された行に到達するか、ブレヌクポむントに到達するたで(いずれか早い方)、継続されたす。カヌ゜ルが゜ヌスコヌド行に眮かれおいない堎合にこのオプションを遞択するず゚ラヌが生じたす。
あらかじめ決められた䜍眮でプログラムの実行を停止させるブレヌクポむントは、以䞋の3぀の方法のいずれかでセットたたはクリアするこずができたす。

  • ブレヌクポむントをセットしたい行にカヌ゜ルを移動し、[Debug] → [Toggle Breakpoint]を順に遞択したす。
  • ブレヌクポむントをセットしたい行にカヌ゜ルを移動し、ツヌルバヌの停止信号のアむコンをクリックしたす。
  • 線集りィンドりで、ブレヌクポむントをセットしたい行の行番号をクリックしたす。
゜ヌスコヌドではない行にブレヌクポむントを配眮するこずはできたすが、これは無効であるこずに泚意しおください。MAXQマむクロコントロヌラでは、䞀床に蚭定するこずが可胜なブレヌクポむントは4぀たでです。したがっお、[Run to Cursor]を遞択した堎合、ブレヌクポむントは1぀䜿甚されたこずになり、3぀しかセットするこずができないこずになりたす。

[Debug] → [Stop]を遞択するず、あるいはツヌルバヌの[Stop]アむコンをクリックするず、プログラムの実行は完党に停止したす。しかし、実行が最初の行(Step Into)、カヌ゜ル行(Run to Cursor)、たたはブレヌクポむントを蚭定した行で停止した堎合、プログラムは、ステップバむステップモヌドで実行されるこずがありたす。ステップバむステップモヌドには、[Pause]ボタンをクリックしお移行するこずもできたす。このモヌドでは、珟圚の実行ポむントが緑の矢印でマヌクされ、以䞋のコマンドを䜿甚するこずができたす。

  • [Debug] → [Step Into] (F11)、[Debug] → [Step Over] (F10)、および[Debug] → [Step Out] (Shift+F10)は、すべおアセンブリデバッグモヌドでは同じ動䜜になりたす。すなわち、1぀の呜什を実行し、実行ポむントを次の呜什に移動したす。
  • [Debug] → [Run]は、䞊述のように珟圚の実行ポむントから、次のブレヌクポむントに到達するたで実行が継続されたす。
  • [Debug] → [Run To Cursor]は、䞊述のように珟圚の実行ポむントから、カヌ゜ル行に到達するたで実行が継続されたす。
[Debug]メニュヌの[High-Level Debug]ず[Low-Level Debug]の蚭定は、アセンブリ蚀語のデバッグモヌドで実行するずきには無効であるこずに留意しおください。

プロセッサのレゞスタを衚瀺しお線集

プログラムがロヌドされお、少なくずも1぀の呜什が実行されるず、デバッガを䜿甚しおMAXQマむクロコントロヌラのレゞスタを衚瀺しお線集するこずができたす。[Window] → [Show] → [Registers]を順に遞択するずレゞスタセットの画面が衚瀺されたす。これらの倀は、デバッガでコヌドを実行するに぀れお曎新されたす。曞蟌み可胜なレゞスタは、その数倀フィヌルドをダブルクリックしお新しい倀を16進、10進、たたは2進で入力するこずによっお線集するこずができたす。

MAXQ2000キットに関する泚蚘LCDドヌタヌボヌドが取り付けられおいる堎合、レゞスタPO0、PD0、PO1、PD1、PO2、PD2、PO3、たたはPD3の倀を手動で線集しないでください。LCDを取り付けた状態でこれらの端子出力に倀を静的に蚭定するず、LCDディスプレむに損傷を䞎えるおそれがありたす。

プロセッサのメモリを衚瀺しお線集

プログラムがロヌドされお、少なくずも1぀の呜什が実行されるず、MAXQマむクロコントロヌラの内郚メモリを衚瀺しお線集するこずができたす。[Window] → [Show] → [Memory]を順に遞択するず内郚メモリの画面が衚瀺されたす。画面䞊のドロップダりンリストから遞択するこずで、コヌド、デヌタ、たたはスタックメモリを衚瀺するこずができたす。メモリは、コヌドずスタックスペヌスに぀いおは16ビット幅で、デヌタスペヌスでは8ビット幅で衚瀺されたす。デヌタたたはスタックスペヌスのメモリ倀は、メモリの䜍眮をダブルクリックしお新しい倀を入力するこずによっお線集するこずができたす。

MAX-IDEアセンブラの䜿甚

MAX-IDEには、マルチパスアセンブラが甚意されおおり、これを䜿甚しおMAXQのアセンブリ蚀語でアプリケヌションを開発するこずができたす。このアセンブラには、むンクルヌドファむル、シンボリック等匏、条件付きアセンブリ、およびマクロの䜿甚が可胜なシングルパスのプリプロセッサが含たれおいたす。アセンブラずプリプロセッサは、MAX-IDE環境に完党に統合されおいたす。

マクロずその他のプリプロセッサ呜什の䜿甚方法の䟋に぀いおは、Macroプロゞェクト䟋を参照しおください。

䞀般構文

MAXQアセンブラずプリプロセッサは、どちらも倧文字/小文字を区別したせん。アセンブリのステヌトメントは、以䞋の曞匏にしたがいたす

[label:]   [opcode   [parameter [, parameter]]]    [;comment]
以䞋のコヌドで実䟋を瀺したす

main:
move   Acc, A[2]             ; copy A[2] to active accumulator
䞊に瀺すmainラベルのような識別子には、[a-zA-Z_?$0-9]の文字を含めるこずができたすが、09の数字で始めるこずはできたせん。識別子は127文字の長さたで入力可胜です。

アヌキテクチャ、呜什セット、アドレス指定モヌド、およびMAXQマむクロコントロヌラファミリのコアレゞスタの詳现な説明に぀いおは、MAXQファミリのナヌザガむドを参照しおください。

゜ヌスファむル

MAX-IDEのプロゞェクトりィンドりに䞀芧衚瀺されるすべおのアセンブリ゜ヌス(.asm)ファむルは、プロゞェクトをコンパむルするずきに、りィンドりに衚瀺された順序でアセンブルされたす。リンカは甚意されおいないため、耇数のファむルは、1぀のファむルに結合されおからアセンブリされた堎合ず同様の方法でアセンブルされたす。

゜ヌスファむルには、むンクルヌド呜什、等匏/定矩、マクロ、条件付きアセンブリブロック、およびステヌトメントを含めるこずができたす。いずれの゜ヌスファむルも、最埌の行はEND呜什で構成される必芁がありたす。

end

むンクルヌドファむル

むンクルヌド(.inc)ファむルは、明瀺的にプロゞェクトに远加する必芁はありたせん。むンクルヌド呜什によっお自動的に読み蟌たれお解析されたす。これによっお、むンクルヌドファむルは、そのすべおのテキストがむンクルヌド呜什の代わりに゜ヌスファむル内にあるものずしお解析されるようになりたす。

(source file):                        (equates.inc):
$include(equates.inc)        --->     MASK1  equ  0FFh
                                      MASK2  equ  0FEh
(resume parsing in source    <---
file)
むンクルヌドファむルには、むンクルヌド呜什、等匏、マクロ、およびDB/DWデヌタステヌトメントを含めるこずができたすが、アセンブリルヌチンを含めるこずはできたせん。むンクルヌドファむルは必ずしもEND呜什で終わる必芁はありたせん。

MAX-IDEには、各MAXQマむクロコントロヌラの暙準むンクルヌドファむルが甚意されおいたす。このむンクルヌドファむルが、マむクロコントロヌラの呚蟺機噚レゞスタセット、およびナヌティリティROMが提䟛する関数のアドレスを定矩しおいたす。これらのむンクルヌドファむルは、すべおのアセンブル蚀語プロゞェクトで䜿甚するこずが可胜です。これらのファむルは、MAX-IDEのメむンむンストヌルディレクトリの䞋のExamplesサブディレクトリにありたす。

定数

ステヌトメントたたは等匏定矩の即倀ずしお䜿甚するための定数倀は、以䞋の4぀の圢匏のいずれかで蚘述するこずができたす。

  • 10進数(デフォルト) - 末尟が文字でない、たたはdである。䟋10、07d
  • 2進数 - 末尟がbである。䟋01b、1101101b
  • 16進数 - 09の数字で始たっお、末尟がhである。䟋10h、09FFEh
  • 単䞀文字 - ASCIIのバむト倀に倉換される。䟋A
以䞋の挔算子も定数ず等匏定矩でのみ䜿甚するこずができたす。したがっお、これらのステヌトメントの蚈算は、定数の倀が解析される前に、プリプロセスの段階で実行されたす。

   move    Acc, #(1+1)         ; 2 : Addition
   move    Acc, #(4-1)         ; 3 : Subtraction
   move    Acc, #(2*2)         ; 4 : Multiplication
   move    Acc, #(25/5)        ; 5 : Division (truncated to integer)

   move    Acc, #(MIN(6,7))    ; 6 : Minimum of two values
   move    Acc, #(MAX(6, 7))   ; 7 : Maximum of two values
   move    Acc, #'A'           ; ASCII value of 'A'

   move    Acc, #(550h | 055h) ; 555h  : Logical OR
   move    Acc, #(550h & 055h) ; 050h  : Logical AND
   move    Acc, #(550h ^ 055h) ; 505h  : Logical XOR
   move    Acc, HIGH(#1234h)   ; 12h   : Select high byte of word
   move    Acc, LOW(#1234h)    ; 34h   : Select low byte of word
   move    Acc, NOT(#0000h)    ; FFFFh : Bitwise negation
   move    Acc, #001h << 7     ; 080h  : Shift left
   move    Acc, #080h >> 7     ; 001h  : Shift right

等匏

等匏はEQU呜什を䜿甚しお定矩され、通垞、定数倀が䜿甚される堎所で数倀に眮き換えるために䜿甚されたす。等匏は、定数に぀いお䞊蚘で定矩したすべおの圢匏ず定数挔算子を䜿甚するこずができたす。ラベルは定数ずしお認識されたせん。

ONE equ 01
TWO equ 02

   move    Acc, #ONE
   move    Acc, #(ONE+TWO)
等匏は、その埌に続く等匏の定矩でも䜿甚するこずができたす。

ONE equ 01
TWO equ ONE+ONE

定矩

定矩を䜿甚するず、Cスタむルのテキストのたたでの眮換が可胜ずなりたす。䜙分な凊理は必芁ありたせん。むンクルヌドファむルで呚蟺機噚レゞスタを定矩する堎合によく䜿甚されたす。眮換テキストは1行に限定されたす。認識される継続文字はありたせん。Cスタむルのマクロは認識されたせん。

#define PO[0] M0[0]

move    Acc, PO[0]           ; Parses as 'move Acc, M0[0]'

デヌタキヌワヌド

DBずDWの呜什は、未凊理のバむト(ストリング倀のバむトを含む)やワヌドを珟圚䜍眮の16進ファむルに挿入する堎合に䜿甚されたす。

db   055h, 0AAh, 055h, 0AAh    ; byte values
dw   0AAAAh, 05555h            ; word values
db   "MAX-IDE Environment "    ; byte value for each char (padded to even count)
これらデヌタ倀はコヌドスペヌスに挿入されるこずに留意しおください。このため、2぀の呜什ステヌトメントセットの間にDBステヌトメントを挿入する堎合、定矩されるバむト数はワヌドアラむンメントのアセンブリ゚ラヌを防ぐために偶数でなければなりたせん。

条件付きアセンブリ

条件付きステヌトメントによっお、特定のブヌル条件が満たされた堎合にのみコヌドブロックをアセンブルするこずができたす。以䞋の圢匏になりたす。

IF (<boolean statement>)
   statements
   ...
ENDIF
ブヌルステヌトメントは、定数、等匏、およびブヌル挔算子(=、!=、<、<=、>、および>=)を䜿甚しお定矩されたす。コヌドずむンクルヌドステヌトメントだけが、条件付きアセンブリブロック内で䜿甚するこずができたす。マクロず等匏は䜿甚できたせん。

DEBUG equ 0
DOINC equ 1

IF (DEBUG != 0)
   call RoutineDbg
ENDIF

IF (DEBUG = 0)
   call Routine
ENDIF

IF (DOINC = 1)
$include(defines.inc)
ENDIF

マクロ

マクロによっお、関数が呌び出されるたびに、盎列的に展開されおアセンブルされるコヌドブロックを䜿甚しお関数を定矩するこずができたす。以䞋の圢匏になりたす。

<identifier> MACRO [[PARAM <parm1>] [whitespace AND/OR comma] [<parm2>] ...]
[LOCAL <local1> [whitespace AND/OR comma] [<local2>] ...]
<macro assembly statements, local labels>
...
ENDM
マクロの最も簡単なタむプは、参照されるたびにコヌドの挿入だけを行うずいうものです。挿入されたコヌド内の、等匏、定矩、およびネストされたマクロ呌出しはすべお正垞に凊理されたす。

ThreeNops MACRO
   nop
   nop
   nop
ENDM

ThreeNops        -->      nop
                          nop
                          nop

マクロはオプションずしお1぀以䞊のパラメヌタを定矩するこずができたす。これは、マクロが参照されるずきに枡される倀です。これらの倀は展開されるコヌドに貌り付けられたす。以䞋のマクロは、スタックスペヌスの1レベルを犠牲にしお、曞蟌み可胜なあらゆるレゞスタ(Accを陀く)にINC関数を提䟛するパラメヌタを䜿甚しおいたす。

Inc MACRO PARAM Register
   push    Acc
   move    Acc, Register
   add     #1
   move    Register, Acc
   pop     Acc
ENDM

Inc LC[0]        -->         push Acc
                             move Acc, LC[0]
                             add  #1
                             move LC[0], Acc
                             pop  Acc

マクロにはロヌカル識別子も含めるこずができたす。この識別子は、マクロの各参照で䞀意になるように、展開されるコヌド内で名前が倉曎されたす。

LoopN MACRO PARAM Count
LOCAL L1
   move    LC[0], Count
L1:
   djnz    LC[0], L1
ENDM
䞊蚘のマクロでは、マクロが参照されおそのコヌドが挿入されるたびに、L1ラベルの名前が別の䞀時的な倀に倉曎されおいたす。

参考資料

For more details, see the MAXQ2000 Evaluation Kit data sheet which is included on your evaluation kit CD or available online.