ld 0x300 ; 直接 ld ADDR ; 直接 ld ixr, 0x300 ; インデクス ld ixr, OFFSET ; インデクス ld #100 ; 即値 ld #DATA ; 即値
st 0x300 ; 直接 st ADDR ; 直接 st ixr, 0x300 ; インデクス st ixr, OFFSET ; インデクス
mv dest, src ; レジスタ直接destおよびsrcは以下の4種類のレジスタが指定できます.
acc : アキュムレータ ixr : インデクス・レジスタ sp : スタック・ポインタ pc : プログラム・カウンタ
inc acc, ixrは,インデクスレジスタに1加算した値をアキュムレータに代入します.また,
dec acc, acc dec accは,ともにアキュムレータをデクリメントする記述です.
not ; accの1の補数 lsl ; accの論理左シフト asl ; accの算術左シフト lsr ; accの論理右シフト asr ; accの算術右シフト rol ; accの左回転 ror ; accの右回転単項演算命令は演算結果に応じてフラグが変化します.
add #0x30 ; 即値 sub #DATA ; 即値 and ixr, 0x30 ; インデクス eor ixr, OFFSET ; インデクス
キャリー・フラグがセットされていれば分岐 jpc 0x300 ; 直接 jpc ADDR ; 直接 ゼロ・フラグがセットされていれば分岐 jpz 0x300 ; 直接 jpz ADDR ; 直接 サイン・フラグがセットされていれば分岐 jps 0x300 ; 直接 jps ADDR ; 直接 オーバーフロー・フラグがセットされていれば分岐 jpv 0x300 ; 直接 jpv ADDR ; 直接 無条件に分岐 jp 0x300 ; 直接 jp ADDR ; 直接
call 0x300 ; 直接 call ADDR ; 直接 ret ; インヘレント
push pop
in 0x10 out 0x01なお,入出力ポート・アドレスを省略した場合は,I/Oアドレス0x00に対するアクセスであるとみなします.
swp ; インヘレント halt ; インヘレント nop ; インヘレント
ld #0x12 swp or #0x34この記述により0x1234をaccにロードします. この記述は良く使用するため,以下のようにld16という16ビット即値マクロ命令として用意しています.
ld16 #0x1234 ; 16ビット定数をaccにロードする場合 ld16 #Label ; 16ビットのラベルの値をaccにロードする場合ld16 マクロ命令は,実際には上記の3命令(ld, swp, or)に展開さ れます.
.dataこの記述は,この行以降の命令をデータ・セグメントに配置することを示します. 各セグメントに割り当てられるアドレスはアセンブラ内でロケーション・カウンタとして保持しています. この記述ではロケーション・カウンタの値を変更せずに使用します. セグメントの先頭アドレスは -Tseg_name オプションで変更できます.
.text 0x400この記述は,この行以降の命令をテキスト・セグメントに配置することをしていするとともに,テキスト用のロケーション・カウンタを0x400に変更します. 指定アドレスにラベルも使用できますが,前もってアドレスが確定している必要があります. この記述を使用した場合は,コマンドラインから指定したセグメントの先頭アドレスよりも優先されるので注意して下さい.
.word DATA0 ; ワード .dword 0x88888888 ; ダブルワード .space 10 ; 10ワード確保
This is my e-mail address: