1: 2007-12-06 (木) 11:05:45 |
現: 2024-01-06 (土) 22:37:40 |
- | AX アキュムレータ | + | **レジスタ [#ua631774] |
- | BX ベースレジスタ | + | |>|~汎用レジスタ| |
- | CX カウントレジスタ | + | |AX|アキュムレータ| |
- | DX データレジスタ | + | |BX|ベースレジスタ| |
- | SI ソースインデックス | + | |CX|カウントレジスタ| |
- | DI デスティネーションインデックス | + | |DX|データレジスタ| |
- | 汎用レジスタ(特殊) | + | |>|~インデックスレジスタ| |
- | BP ベースポインタ | + | |SI|ソースインデックス| |
- | SP スタックポインタ | + | |DI|デスティネーションインデックス| |
- | IP インストラクションポインタ | + | |>|~特殊レジスタ| |
- | セグメントレジスタ | + | |BP|ベースポインタ| |
- | CS コードセグメント | + | |SP|スタックポインタ| |
- | DS データセグメント | + | |IP|インストラクションポインタ| |
- | ES エキストラセグメント | + | |>|~セグメントレジスタ| |
- | SS スタックセグメント | + | |CS|コードセグメント| |
- | フラグレジスタ | + | |DS|データセグメント| |
- | EFLAGS フラグレジスタ : CPU状態記述 | + | |ES|エキストラセグメント| |
- | フラグの種類 | + | |SS|スタックセグメント| |
- | OF オーバーフローフラグ : 符号付演算の桁上がりが起こるとセット | + | |>|~フラグレジスタ| |
- | DF ディレクションフラグ : メモリ転送命令の転送方向を示す | + | |FLAGS|フラグレジスタ| |
- | SF サインフラグ : 演算結果の符号を示す | + | |
- | ZF ゼロフラグ : 演算結果が0であればセット | + | |
- | AF 補助キャリーフラグ : BCD演算用キャリーフラグ | + | |
- | PF パリティフラグ : 演算結果が偶数だとセット | + | |
- | CF キャリーフラグ : 演算結果が桁上がりが起こるとセット | + | |
| | | |
- | | + | **フラグレジスタ [#h8bf81e5] |
- | マシン語命令(ニーモニック) | + | |
- | データ転送命令 | + | |
- | 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 | + | |
| | | |
- | フラグ 値 | + | |bit15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|bit0|h |
- | CF 0 | + | | |NT|>|IOPL|0F|DF|IF|TF|SF|ZF||AF ||PF||CF| |
- | ax=bx | + | |
- | フラグ 値 | + | |
- | ZF 1 | + | |
| | | |
- | フラグ 値 | + | **命令(ニーモニック)一覧 [#qe8a33fa] |
- | 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 | + | ||命令|備考|h |
- | DS=17C4 ES=17C4 SS=17C4 CS=17C4 IP=0107 NV UP EI PL NZ AC PO NC | + | |転送系|[[MOV>NASK/8086/命令/MOV]]|転送・代入など等| |
- | 16ビットであれば、上位16ビットがDX、下位16ビットがAXの32ビットと演算され | + | |~|xchg|| |
- | 商はAXに、余りはDXレジスタに格納 | + | |~|push|スタックにレジスタ・メモリの値を積む| |
- | 17C4:0100 MOV AX , FFFF | + | |~|pop|スタックからレジスタ・メモリの値を取り出す| |
- | 17C4:0103 MOV DX , 0001 | + | |~|pushf|スタックにフラグレジスタを積む| |
- | 17C4:0106 MOV WORD PTR [0200] , 100 | + | |~|popf|スタックからフラグレジスタへデータを取り出す| |
- | 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 左キャリーローテート | + | +計算系 |
| + | ++add(足し算) |
| + | ++adc(足し算) |
| + | ++dec(デクリメント) |
| + | ++inc(インクリメント) |
| + | ++div(割り算) |
| + | ++idiv(割り算) |
| + | ++mul(掛け算) |
| + | ++imul(掛け算) |
| + | ++sub(引き算) |
| + | ++sbb(引き算) |
| | | |
- | rcr rxr ax,1 右キャリーローテート | |
| | | |
- | 割り込み命令 | + | +比較系 |
- | int int 21h | + | ++cmp |
- | 割り込み番号 割り込みの種類 | + | |
- | 0 除算エラー(0で除算した場合) | + | +ジャンプ系 |
- | 1 シングルステップ | + | ++jmp |
- | 2 NMI割り込み | + | ++jc |
- | 3 ブレイク・ポイント割り込み | + | ++jnc |
- | 4 オーバーフロー割り込み | + | ++jcxz |
- | 21 MS-DOSシステムコール | + | ++je |
- | iret iret 割り込みからの復帰 | + | ++jz |
| + | ++jz |
| + | ++jne |
| + | ++jnz |
| + | ++jnz |
| + | ++ja |
| + | ++jnbe |
| + | ++jnbe |
| + | ++jb |
| + | ++jnae |
| + | ++jnae |
| + | ++jae |
| + | ++jnb |
| + | ++jnb |
| + | ++jbe |
| + | ++jna |
| + | ++jna |
| + | ++jg |
| + | ++jnle |
| + | ++jnle |
| + | ++jl |
| + | ++jnge |
| + | ++jnge |
| + | ++jge |
| + | ++jnl |
| + | ++jnl |
| + | ++jle |
| + | ++jng |
| + | ++jng |
| + | |
| + | |
| + | +ループ系 |
| + | ++loop |
| + | ++loope |
| + | ++loopz |
| + | ++loopz |
| + | ++loopne |
| + | ++loopnz |
| + | ++loopnz |
| + | |
| + | +サブルーチン系 |
| + | ++call |
| + | ++ret |
| + | ++int |
| + | ++iret |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | +論理演算系 |
| + | ++and |
| + | ++or |
| + | ++not |
| + | ++neg |
| + | ++xor |
| + | ++test |
| + | |
| + | |
| + | +フラグ操作系 |
| + | ++std |
| + | ++cld |
| + | ++stc |
| + | ++clc |
| + | ++cmc |
| + | ++cli |
| + | ++sti |
| + | |
| + | +ビット操作系 |
| + | ++shl |
| + | ++shr |
| + | ++sal |
| + | ++sar |
| + | ++rol |
| + | ++ror |
| + | ++rcl |
| + | ++rcr |