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 |