|
1: 2007-12-06 (木) 11:05:45 |
| + | AX アキュムレータ |
| + | BX ベースレジスタ |
| + | CX カウントレジスタ |
| + | DX データレジスタ |
| + | SI ソースインデックス |
| + | DI デスティネーションインデックス |
| + | 汎用レジスタ(特殊) |
| + | BP ベースポインタ |
| + | SP スタックポインタ |
| + | IP インストラクションポインタ |
| + | セグメントレジスタ |
| + | CS コードセグメント |
| + | DS データセグメント |
| + | ES エキストラセグメント |
| + | SS スタックセグメント |
| + | フラグレジスタ |
| + | EFLAGS フラグレジスタ : CPU状態記述 |
| + | フラグの種類 |
| + | OF オーバーフローフラグ : 符号付演算の桁上がりが起こるとセット |
| + | DF ディレクションフラグ : メモリ転送命令の転送方向を示す |
| + | SF サインフラグ : 演算結果の符号を示す |
| + | ZF ゼロフラグ : 演算結果が0であればセット |
| + | AF 補助キャリーフラグ : BCD演算用キャリーフラグ |
| + | PF パリティフラグ : 演算結果が偶数だとセット |
| + | CF キャリーフラグ : 演算結果が桁上がりが起こるとセット |
| | | |
| + | |
| + | マシン語命令(ニーモニック) |
| + | データ転送命令 |
| + | mov mov ax,bx bx→ax |
| + | xchg xchg ax,bx axとbxの内容を入れ替え |
| + | 算術演算命令 |
| + | add add ax,bx ax=ax+bx |
| + | adc adc ax,bx キャリー付き加算 |
| + | cmp cmp ax,bx |
| + | ax>bx |
| + | フラグ 値 |
| + | ZF 0 |
| + | |
| + | フラグ 値 |
| + | CF 0 |
| + | ax=bx |
| + | フラグ 値 |
| + | ZF 1 |
| + | |
| + | フラグ 値 |
| + | CF 0 |
| + | ax<bx |
| + | フラグ 値 |
| + | ZF 0 |
| + | |
| + | フラグ 値 |
| + | CF 1 |
| + | dec dec ax 1減算 |
| + | inc inc ax 1加算 |
| + | div |
| + | ソースオペランドが、8ビットであればディスティネーションはAXレジスタになり |
| + | 商はALレジスタ、余りはAHレジスタに格納 |
| + | 17C4:0100 MOV AX , A |
| + | 17C4:0103 MOV DL , 3 |
| + | 17C4:0105 DIV DL |
| + | 17C4:0107 |
| + | -G =100 107 |
| + | |
| + | AX=0103 BX=0000 CX=0000 DX=0003 SP=FFEE BP=0000 SI=0000 DI=0000 |
| + | DS=17C4 ES=17C4 SS=17C4 CS=17C4 IP=0107 NV UP EI PL NZ AC PO NC |
| + | 16ビットであれば、上位16ビットがDX、下位16ビットがAXの32ビットと演算され |
| + | 商はAXに、余りはDXレジスタに格納 |
| + | 17C4:0100 MOV AX , FFFF |
| + | 17C4:0103 MOV DX , 0001 |
| + | 17C4:0106 MOV WORD PTR [0200] , 100 |
| + | 17C4:010C DIV WORD PTR [0200] |
| + | 17C4:0110 |
| + | -G =100 110 |
| + | |
| + | AX=01FF BX=0000 CX=0000 DX=00FF SP=FFEE BP=0000 SI=0000 DI=0000 |
| + | DS=17C4 ES=17C4 SS=17C4 CS=17C4 IP=0110 NV UP EI PL NZ AC PO NC |
| + | idiv idiv dl 符号付割り算 |
| + | mul mov al , 50 |
| + | mov dl , 2 |
| + | mul dl ソースオペランドが8ビットの場合、 |
| + | ALレジスタとソースオペランドが乗算され |
| + | その結果は、AX16ビットレジスタに格納されます |
| + | |
| + | ソースオペランドが16ビットの場合、 |
| + | AXレジスタとソースオペランドが乗算され |
| + | その結果は、上位DX、下位AXとして、 |
| + | それぞれのレジスタに格納されます |
| + | imul imul dl 符号付乗算 |
| + | sub sub ax,bx 減算 |
| + | sbb sbb ax,bx キャリー付き減算 |
| + | 単純ジャンプ命令 |
| + | jmp jmp アドレス 無条件ジャンプ |
| + | jc jc アドレス キャリーフラグがセットされていたらジャンプ |
| + | jnc jnc アドレス キャリーフラグがセットされていなかったらジャンプ |
| + | jcxz jcxz アドレス CXレジスタがゼロならジャンプ |
| + | je |
| + | jz je アドレス |
| + | jz アドレス ゼロフラグがセットされていたらジャンプ |
| + | jne |
| + | jnz jne アドレス |
| + | jnz アドレス ゼロフラグがセットされていなかったらジャンプ |
| + | 符号なし整数比較結果ジャンプ命令 |
| + | ja |
| + | jnbe ja アドレス |
| + | jnbe アドレス cmp op1 , op2 という命令で、op1 > op2 ならばジャンプ |
| + | jb |
| + | jnae jb アドレス |
| + | jnae アドレス cmp op1, op2 という命令で、op1 < op2 ならばジャンプ |
| + | jae |
| + | jnb jae アドレス |
| + | jnb アドレス cmp op1, op2 という命令で、op1 >= op2 ならばジャンプ |
| + | jbe |
| + | jna jbe アドレス |
| + | jna アドレス cmp op1, op2 という命令で、op1 <= op2 ならばジャンプ |
| + | 符号あり整数比各結果ジャンプ命令 |
| + | jg |
| + | jnle jg アドレス |
| + | jnle アドレス cmp op1, op2 という命令で、op1 > op2 ならばジャンプ |
| + | jl |
| + | jnge jl アドレス |
| + | jnge アドレス cmp op1, op2 という命令で、op1 < op2 ならばジャンプ |
| + | jge |
| + | jnl jge アドレス |
| + | jnl アドレス cmp op1, op2 という命令で、op1 >= op2 ならばジャンプ |
| + | jle |
| + | jng jle アドレス |
| + | jng アドレス cmp op1, op2 という命令で、op1 <= op2 ならばジャンプ |
| + | ループ命令 |
| + | loop loop アドレス cx レジスタの値を1減じて、0になるまで繰り返す |
| + | loope |
| + | loopz loope アドレス |
| + | loopz アドレス cx レジスタの値を1減じて、ゼロフラグがセットされている間繰り返す |
| + | loopne |
| + | loopnz loopne アドレス |
| + | loopnz アドレス cx レジスタの値を1減じて、ゼロフラグがセットされていない間繰り返す |
| + | コール命令 |
| + | call call bx プロシージャ呼び出し |
| + | ret ret プロシージャから復帰 |
| + | 論理演算命令 |
| + | and and al,04h al=al&0x04 |
| + | or or ax,88h ax=ax|0x88 |
| + | not not ax ax=~ax |
| + | neg neg ax 符号反転命令 |
| + | xor xor ax,bx 排他的論理和命令 |
| + | test test ax,bx 論理和積テスト命令 |
| + | 実際にはレジスタの値に変化なし |
| + | スタック命令 |
| + | push push ax スタックへデータ退避 |
| + | pop pop ax スタックからデータ取り出し |
| + | pushf pushf スタックへフラグを退避 |
| + | popf popf スタックからデータ取り出し |
| + | フラグ操作 |
| + | std std ディレクションフラグをセット |
| + | cld cld ディレクションフラグをクリア |
| + | stc stc キャリーフラグをセット |
| + | clc clc キャリーフラグをクリア |
| + | cmc cmc キャリーフラグを反転 |
| + | cli cli 割り込みを禁止 |
| + | sti sti 割り込みを許可 |
| + | シフト命令 |
| + | shl shl ax,2 論理左シフト |
| + | |
| + | shr shr ax,1 論理右シフト |
| + | |
| + | sal sal ax,1 算術左シフト |
| + | |
| + | sar sar ax,1 算術右シフト |
| + | |
| + | ローテート命令 |
| + | rol rol ax,1 左ローテート |
| + | |
| + | ror ror ax,1 右ローテート |
| + | |
| + | rcl rcl ax,1 左キャリーローテート |
| + | |
| + | rcr rxr ax,1 右キャリーローテート |
| + | |
| + | 割り込み命令 |
| + | int int 21h |
| + | 割り込み番号 割り込みの種類 |
| + | 0 除算エラー(0で除算した場合) |
| + | 1 シングルステップ |
| + | 2 NMI割り込み |
| + | 3 ブレイク・ポイント割り込み |
| + | 4 オーバーフロー割り込み |
| + | 21 MS-DOSシステムコール |
| + | iret iret 割り込みからの復帰 |