アセンブラメモ

提供: Astarisk Works Wiki

目次

アセンブラの命令

命令 説明 例の説明
ADD add 加算命令 ADD SI,1 レジスタSIの値に1を加える
CALL


CMP compare 比較命令。JE等と組み合わせて使う

CMP  AL,0

JE fin

レジスタALの値と0を比較する。

比較の結果が等しければラベルfinにジャンプする

DB

data byte  1バイトを直接書き込む



DD data double-word 4バイト(32ビット)を書き込む

DW data word 2バイト(16ビット)を書き込む

EQU equal 定数を定義する CYLS EQU 0x0ff0 CYLS=0x0ff0という定数を定義
HLT halt CPUを待機状態にする。
INT interrupt ソフトウェア割り込み。BIOSの関数を呼ぶ


IRETD
JB
jump if below 小さければジャンプ


JBE
jump if below or equal 小さいか等しければジャンプ


JC jump if carry キャリーフラグが1ならジャンプ JC error キャリーフラグが1ならerrerラベルまでジャンプ
JE jump if equal 等しければジャンプ
JNC jump if not carry キャリーフラグが0ならジャンプ JNC error
JMP jump 指定された箇所にジャンプする。 JMP  putloop putloopのラベルがつけられた箇所にジャンプする。
ORG origin プログラムが読み込まれる予定の番地を示す ORG 0x0700 プログラムが0x0700に読み込まれる予定
OUT

output 指定されたI/Oポートに接続されたデバイスに出力する



MOV move 代入 MOV  SS,AX SSにAXの内容を代入する。
POP pop
POPAD pop all
PUSH push
PUSHAD
RESB reserve byte 指定されたバイト数だけ空ける。 RESB 10 10バイトを空ける
RET return


各命令では読み込みや書き込みにレジスタやメモリの番地を指定することができる。

メモリの番地を指定する場合には[ ]をつけてアドレスを指定する。

レジスタ

16ビットレジスタ

レジスタ名 説明
AX アキュムレータ。累積演算器の意味。番地の指定には使えない
CX カウンタ。番地の指定には使えない
DX データ。番地の指定には使えない
BX ベース
SP スタックポインタ。スタック用ポインタ。番地の指定には使えない
BP ベースポインタ。ベース用ポインタ
SI ソースインデックス。読み込みインデックス
DI ディスティネーションインデックス。書き込みインデックス


8ビットレジスタ

それぞれ対応する16ビットレジスタの上位ビット、下位ビットに対応する。

つまりAX=AH+ALとなる。たとえばAXにE21Fを格納するとAH=E2、AL=1Fとなる。

レジスタ名
説明
AL
アキュムレータロウ
CL
カウンタロウ
DL
データロウ
BL
ベースロウ
AH
アキュムレータハイ
CH
カウンタハイ
DH
データハイ
BH
ベースハイ


32ビットレジスタ

32ビットレジスタもやはり一部16ビットレジスタと値を共有しているが、下位16ビットのみを共有する。

上位16ビットの値をとりたい場合はビットをシフトさせたりして取り出す。

レジスタ名 説明
EAX
ECX
EDX
EBX
ESP
EBP
ESI
EDI


変数

変数 説明
$

先頭からのバイト数が格納される。

ORG命令があれば読み込まれる予定のメモリの番地が格納される



個人用ツール