1つのX86およびX87事典アセンブリ命令(注釈付き) 2 ----------データ転送命令----------------------- ----------------------------- 3どのメモリ、レジスタ、レジスタ、入力ポートと出力ポートとの間のデータを転送する。 41ユニバーサルデータ転送命令。 5 MOVワードまたはバイトが転送される。 6 MOVSX最初の符号拡張し、その後送信される。 7 MOVZXゼロ拡張し、次に送信最初にそれを行うことである。 。PUSHに8つのワードスタックに。 9単語がポップにスタックをポップ。 PUSHA 10 AXは、CX、DX、BX、 SP、BP、SI、DIは順次スタックにプッシュされている。 図11 POPA DI、SI、BP、SP、 BX、DX、CX、AXは順次スタックからポップされる。 12 PUSHAD EAX、ECX、EDXであります、EBX、ESP、EBP、ESI 、EDI 順次スタックにプッシュ。 13 EDI、ESI、EBP、ESP、POPADある EBX、EDX、ECX、EAX 順次スタックからポップ。 ため14 BSWAP交換32バイトレジスタ 15 XCHGを交換ワードまたはバイト(少なくとも一方のオペランドのオペランドが使用できないように、セグメントレジスタを登録する) 16が交換しCMPXCHG動作を比較する(第2オペランドAL / AX / EAXアキュムレータなければなりません) 、次いで17 XADD第交換累積。(最初の結果オペランド) 18 XLATバイトのルックアップテーブル変換.---- BXは、256バイトのテーブルの開始点を指し、テーブルインデックス値AL(0〜255、すなわち、0-FFH);戻り結果ALは、[(ルックアップテーブルです。 AL + BX] - > AL) 。19 2 Oポート転送命令。 20 I / Oポートの入力(構文である。)INアキュムレータ、{}ポート番号│DX。 21 I / Oポート出力(構文OUT:です。 OUT {ポート番号│DX}、アキュムレータ)の入力および出力ポートは、即時の実施例で指定された場合、スコープはその0〜255である。DXは範囲0〜65535であるレジスタによって指定された 。22 3.宛先アドレス転送命令 23は、LEAあります実効アドレス例荷重:LEA DX、ストリング、DXに記憶されたオフセットアドレス 24の送信LDS先ポインタ、ポインタがDS例にロードされている:LDS SI、ストリング、アドレスセグメント:DSに格納されたオフセットアドレスを。:SI 25 LESが宛先ポインタを送信し、ポインタがES例にロードされる:LES DI、文字列を、アドレスセグメント:保存されたESのオフセットアドレス:DI 26 LFS転送先ポインタであり、ポインタがFSの実施形態にロードされます。 :LFS DI、文字列、アドレスセグメント:FS維持するオフセットアドレス:DI 29 4.フラグ転送命令。 30 LAHFフラグ 転送レジスタ、フラグがAHロードされます。 27 LGS転送先ポインタ、ポインタはGSの実施形態にロードされます。 :LGS DI、文字列、アドレスセグメント:オフセット 預金GSへのアクセス:DI。 28 LSS送信先ポインタ、ポインタがSS例にロードされている:LSS DI、文字列、アドレスセグメント:保存されたSSのオフセットアドレス:DI 47 ASCIIコードをAAS減算を調整します。 31 SAHFフラグレジスタ転送、フラグレジスタAHにロードされる。 32 PUSHFマークスタック。 33 POPFフラグのスタックである。 34 PUSHDフラグスタックである32 35 32フラグPOPDスタック。 36 ------- ---第二に、演算命令------------------------------------------ ---------- 37 [ADD加算器。 38 ADCのキャリー。で 39プラスINC。1. 加算器40 AAA調整のASCIIコード。 41 DAAが小数調整の添加である。 42 SUBの減算である。 図43は、ボロースチールビジネスブリーフィングであります引き算。 44 12月保存は1である (0マイナスIT)45 NEGがネゲート。 比較46 CMP。(2つのオペランドだけフラグが送信されていないバック結果を修正し、減算)。 48 DAS減算を調整小数。 49 MUL符号なし乗算結果ループバックAHおよびAL(バイト動作)、またはDXとAX(ワード操作) 乗算結果ループバックAHおよびAL(バイト動作)、またはDXとAX(ワード操作),.整数50 IMULを ASCIIコード調整51 AAM乗算。 52 DIV符号なし除算結果のループバックである:サプライヤー。ループバックAL、残りAHループバック(バイトオペレーション)、または商業的にループバックAX、残りループバックDX、(ワード操作) 53がIDIV除算の整数結果は、ループバックされる:リストループバックAL、残りループバックAH、(バイト動作)、または。リストループバックAX、残りループバックDX、(ワード操作)。 ASCIIコード調整54 AAD除算。 55 CBW単語にバイト。(拡張ALは、AHの外出先にシンボルをバイト) 56は、ダブルワードにCWD語であります。(DXのゴー内の単語の拡張シンボルのAX) 57のダブルワードにCWDEの言葉である。(EAX中AXでの拡張文字の数に) 58 CDQダブルワード拡張。(EAX語シンボルの値行きEDX)延長 59 ---------- 3、論理演算命令を---------------------------- ------------------------ 60とAND演算子。 61であるか、又は動作 62は、XOR排他的論理和演算である。 63がネゲートされていません。 64試験試験(二オペランドと操作のみ修飾フラグ)結果をエコーしません。 65 SHL論理左シフト。 66 SAL算術左シフト(= SHL) 67論理右シフトSHR。 68 SAR算術右シフト(= SHR) 69 ROL左回転。 70 ROR回転右。 71 RCLが回転されるキャリービットを介して左。 72 RCRによっては右。キャリー回転 シフト命令の73 8上記の種類、最大の数255倍の変位に。 74シフトオペコード一度直接SHL AX、1として使用することができる 75シフト> 1、次いでこれは、シフトレジスタCL。の数によって与えられる CL MOVとして76、SHL AX 04、CL 77 ---------- 4ストリング命令---------------- ------------------------------------------ 78 DS:SI、ソースストリングセグメント・レジスタ:インデックスソース文字列 。79個のES:DIターゲット文字列セグメント・レジスタ:ターゲット文字列インデックス 80回の繰り返しがCXカウンタ 81 AL / AXスキャン値。 82 Dフラグ0は、動作はSIおよびDIが自動的にインクリメントべき繰り返されていることを示し、1は自動デクリメントべきで表します。 83走査を制御するためのZフラグ又は操作終了を比較。 84 MOVSストリング転送(MOVSB文字を送信。MOVSWワードを送信した。MOVSD転送ダブルワード) 85 CMPSは、文字列を比較する。(CMPSB文字を比較する。CMPSWはコンパ。) 86 SCAS ALの内容とフラグビットに反映される比較用AXまたはターゲット文字列を走査ストリング。 87 LODS列を充填した。ソース文字列内の要素(単語またはバイト)は、個別に充電またはAX、AL。(LODSB文字を送信する。LODSWワードを送信した。LODSD転送ダブルワードを。) 88 STOS格納されている文字列。プロセス逆LODS。 89 CX / ECX <> 0が繰り返されるREPは 90 REPE / REPZはZF = 1又は比較結果が等しい場合、およびCX / ECX <> 0繰り返し ZF = 0又は比較結果が等しくない場合91はREPNE / REPNZであり、CX / ECX <> 0繰り返す。 92 REPC場合CF = 1、CX / ECX <> 0繰り返す。 93 <> REPNC CF = 0、CX / ECX 0。繰り返し 97コール・プロシージャ・コール 98 RET / RETFプロセス戻ります。 94 ---------- 5プログラムの分岐命令---------------------------------------------- ------ 95 1.無条件ジャンプ命令(転送長) 96 JMP無条件分岐命令 99 2条件分岐命令(+127まで-128の短い移動距離)(IFF OF(SF XOR)=時間1、OP1 < OP2) 100 JA /ていないよりも小さいか等しい。転写JNBE より101 JAE / JNBの大きい又は移転。に等しい 転移。未満102 JB / JNAE 未満103 JBE / JNAまたは転送に等しい。 104 4つの試験符号なし整数演算上記結果(フラグCおよびZ)。 転移より105 JG / JNLEが大きい。 移転に等しい106 JGE / JNLのより大きいか。 107 JL / JNGE以下転移より。 108 JLE / JNG未満または転送に等しい。 演算結果整数符号付き109 4上記試験(フラグS、OおよびZ)。 110 JE / JZ等しい転送。 111 JNE / JNZ等しくない。転送 キャリーがある場合転送112 JCを。 113 JNC転送ないキャリー。 114 JNO時間を転送していないがオーバーフローしません。 奇数115 JNP / JPOパリティを転送する。 116 JNS符号ビットの間に転送すると、「0」である 117 JOオーバーフロー転送。 転送も118 JP / JPEパリティがある。 119の転送JSの符号ビットが「1」である。 120 3は、制御命令サイクル(短い転送) 121 LOOP CXがゼロでない場合ループ。 122 LOOPE / LOOPZ及びCXは=サイクル1.ゼロフラグZされていない 123 LOOPNE / LOOPNZ CXはゼロではなく、Z = 0のときにループフラグ。 転送124 JCXZ CXゼロ 遷移時間125 jECXZ ECXゼロ。 前記割り込み命令126 命令割り込み127 INT 割り込みオーバーフローINTO 128 129 IRETリターン割り込み 130プロセッサ制御命令は 131 HLTプロセッサがリセット信号または継続する前に割り込みされるまで停止される。 132そうWAITチップリードハイレベルのTESTへのCPUは、待機状態に入る。 ESCを変換するためのプロセッサ133の外部。 134ロックバスをブロック。 135 NOPノーオペレーション。 136 STCキャリーフラグ。 ビット位置に154 STCコマンドを1 137 CLCは、キャリー・フラグをクリアします。 キャリーフラグ138 CMC逆変換。 139 STD方向フラグがセットされます。 140 CLD明確な方向フラグ。 141 STIは、ビットがセットされている割り込みイネーブルである。 142 CLI割り込みイネーブルビットをクリア。 143 ---------- VIディレクティブ-------------------------------------------------- -------- 144 DW定義ワード(2バイト) 145は、PROCプロセスを定義。 146 ENDP手順を終了する。 147セグメント定義セグメント。 148を確立するためにアドレッシングセグメントレジスタを想定する。 端部セグメント149を終了する。 エンドプログラム150の端を。 151 ---------- 7、プロセッサ制御命令:処理指示フラグ---------------------------- -------- ビット位置0コマンドに152 CLC 153 CMCは、キャリービット命令ネゲート 156 STD方向コマンドフラグを1 155 CLD方向フラグセット命令 170 WAIT同期CPUおよびFPUマシンコード9B フラグ割り込み0 157 CLIコマンドは 158 STI命令フラグ割り込み 159 NOPノーオペレーション 160 HLTストップ 161 WAITウェイト 162 ESCはエスケープ 163 LOCKブロック 164浮動小数点命令セットを========== === ================================================== = 165 ----------制御指令(接頭9B FN浮動小数点Fと制御コマンドは、マシンコードの削除9Bをチェックしないようになる)---- FINITを初期化する166 FPUマシンコードDB E3(b) 167 FCLEX明確な例外DB E2マシンコード(b) 168 FDISI浮動小数点検査機コード禁止割り込みDB E1(b) 169 FENI浮動小数点検査割り込み禁止2 DB E0マシンコード(b) CPUとFPU 171 FWAIT同期機コードD0〜D9 172 FNOPノーオペレーションE9エンコーディングDA 173交換FXCH ST(0)、ST(1)符号化C9 D9 174 FXCH ST(I)交換ST(0)及びST(I)エンコーディングC1iii D9 175 FSTSW斧斧ステートマシンのコードワードDF E0 9Bに DD mm111mmm 9B MEMに176 MEM FSTSW単語PTRステート・マシン・コードワード MEM MEM mm101mmm D9に177 FLDCW語単語PTRステートマシンのコードを 178 FSTCW制御ワードワードPTR MEM D9 mm111mmm 9BにMEMマシンコード 179 の完全な環境D9のmm100mmm 180 [FLDENVワードPTR MEM MEMマシンコード PTR MEM MEMマシンコードD9 mm110mmm 9Bに全体環境181 FSTENVワード 192 FLDPIは、ST(0)マシンコードD9 EBに充電しますπ DD mm100mmmに182 FRSTORワードPTR MEM MEM FPUステート・マシン・コード DD mm110mmm 9B MEMに183 FSAVEワードPTR MEMはFPU状態マシンコード 184 185 FFREE ST(I)フラグST(i)がエンコード未使用C0iii DD 186 FDECSTP減らすスタックポインタ1-> 02-> 1エンコーディングF6 D9 187を> 1 0- 1-> 2エンコーディングF7 D9スタックポインタFINCSTPを増加 188 FSETPM浮動小数点E4保護マシンコードDB 第二に、データ転送命令189 ---------- -------- -------------------------------------------- 190 FLDZは0.0まで充電しましたST(0)をコードEE D9 191 FLD1 1.0 ST(0)をコードE8 D9荷電 193 FLDL2TをLN10 / LN2荷電ST(0)をコードE9 D9 1 / LN2はST荷電194 FLDL2E(0)マシンコードD9 EA FLDLG2 LN2 / LN10荷電ST(0)ECマシンコードD9 195 196 STに充電FLDLN2 LN2(0)マシンコードED D9 197 198 FLD REAL4 PTR MEM MEMロードmm000mmm D9の単精度浮動小数点マシンコード 199 REAL8 PTR MEM FLD倍精度浮動小数点数は、マシンコードをロードMEM mm000mmm DD 200はFLD REAL10 PTR MEM MEM 10バイト浮動小数点mm101mmmマシンコードDBロードされる 201 202 FILDワードPTR MEM MEMマシンコードにロードされた2バイト整数mm000mmm DF 203 FILD DWORD PTR MEM MEMは4バイト整数mm000mmmマシンコードDB荷電 MEMは8バイト整数エンコードDFをロード204 FILD QWORD PTRをMEMをmm101mmm 205 206 FBLDテラバイトPTR MEM MEM 10がロードされ、マシンバイトBCD mm100mmmコードDF 207 D9 mm010mmm単一フロートマシンコードを保存208 FST real4 PTR MEM MEM 倍精度浮動小数点mm010mmm DDにFST REAL8 PTR MEM MEMマシンコードを保存する209 210 2バイト整数mm010mmmにFISTワードPTRのMEM MEMマシンコードを保存211 DF 212 FIST DWORD PTR MEM MEM 4バイト整数mm010mmmマシンコードDB保存する 213 214 FSTP REAL4 PTR MEM MEMは小数点スタックとマシンコードmm011mmm D9浮動単精度に保存 スタックとMEMに保存された215 FSTP REAL8 PTR MEM倍精度浮動小数点エンコーディングmm011mmm DD 216 FSTP REAL10 PTR MEM MEM 10バイト浮動小数点スタックとマシンコードmm111mmm DB保存する 217 220格納されたMEM PTR QWORDをFISTP 8バイトの整数とMEM mm111mmm DFにスタックマシンコード 221 218 FISTPワードPTRは、2つのMEMを保存スタックへのMEMバイトの整数とマシンコードDF mm011mmm 219 FISTP DWORD PTR MEM 4バイトの整数スタックに格納され、MEM mm011mmm機械コードDB 231 FCMOVU ST(0)、場合転送マシンコードDA D1iii ST(I)ランダム 222 FBSTPテラバイトPTR MEM 10 BCDはMEMがDF mm110mmmスタックとマシンコードへのバイトセーブ 223 224 FCMOVB転送マシンコードDA C0iii ST(0)、ST (I)< 225 FCMOVBE ST(0)、ST (I) <=マシンコードD0iii DA送信 226 FCMOVE ST(0)、ST(I)の転送マシンコードDA C1iii = 227 FCMOVNB ST(0)、ST (i)は> =マシンコードがC0iii DB送信 228 FCMOVNBE STを(0を)、ST(I)>マシンコード送信D0iii DB 229 FCMOVNE ST(0)、ST(I)!= C1iii転送するときマシンコードDB 230 FCMOVNU ST(0)、DBマシンコード転送ST(i)を注文したときにD1iii 232 ----------第三に、比較命令----------------------------------- --------------------- 233 FCOM ST(0)-ST(1)符号化のDI D8 234 FCOMI ST(0)、ST(I)ST(0 )-ST(1)F0iiiマシンコードDB 235 FCOMIP ST(0)、ST(I)ST(0)-ST(1)と、スタックマシンコードF0iii DF 236 REAL4 FCOM PTR MEM ST(0) -実機MEM mm010mmmコードD8 237 REAL8 FCOM PTR MEM ST(0) -実際のマシンコードMEMはDCをmm010mmm 238 239 FICOMワードPTR ST MEM(0) - MEM整数エンコードmm010mmm DE 240 FICOM DWORD PTR MEM ST(0) - MEM整数エンコーディングmm010mmm DA 241 FICOMPワードPTR STのMEM(0) - MEM整数とスタックマシンコードDEのmm011mmm 242 FICOMP DWORD PTR MEM ST(0) - MEM整数およびスタックマシンコードDA mm011mmm 243 244 FTST ST(O)-OエンコーディングD9 E4 245ザFUCOM ST(I)ST(0)(I)をコードE0iii DD -ST 246 FUCOMP ST(I)ST(0)-ST (I)スタックとマシンコードE1iii DD 247 FUCOMPP ST(0)-ST(1)及び第二のスタックマシンコードE9 DA 248 FXAM ST(0)仕様E5エンコーディングD9入力 249 ------- ---四則命令------------------------------------------- ------------- FADDの250宛先オペランド(デスティネーションオペランドスタックバッファまたは変数に接続されている)(直接命令バッファまたはスタック後変数に接続された)操作ソースオペランドそしてデスティネーションオペランドに結果を配置し 、STこの命令は、宛先を追加するオペランドSTをバッファリングすることで、ST緩衝液およびPOP 251 FADDP ST(I)の目的は、オペランドスタックバッファでなければなりません最初にかかわらず、最終的なデスティネーションオペランドの理由、ポップアップした後、上のデスティネーションオペランドスタックバッファとなるであろう ソースオペランドプラスST、STと、バッファに格納され、ソースオペランドマスト252 FIADD FIADDれますこれは整数、又は短い整数ブロックのフォーム変数であります 253 254 FSUB保存 255 FSUBP 256 FSUBRの被減数と減数を入れ替え 257 FSUBRPを 258 FISUB 259 FISUBR 260 FMULによって261 262 FMULP 263 FIMUL 264 FDIV除く265 266 FDIVP 267 FDIVR 268 FDIVRP FIDIV 269 270のFIDIVR 271 STの272 FCHS正および負の変化 273 274 ST FABSの値を除去絶対値は、バック格納されています。 275 FSQRTの276 ST値を除去し、再び平方根が格納されています。 277 このコマンドは、値の278 FSCALE ST * 2 ^ ST(1)を計算し、同じ値のST及びST(1)に結果を格納しています。ST(1)、ST(1)整数演算結果がこの範囲を超える場合に決定することができない、-32768及び32768(215 -215)の間の整数である、場合はならない最初の整数に丸められます再計算ゼロ。このため、安全上の理由から、ST(1)内部にワードをロードする、好ましくは整数のために。 279 280 FRNDINTこのコマンドがSTの値が整数に丸められている、FPUは、FPU制御ワード(制御ワード)RCの2ビットによって決定される、4つの丸めモードを提供して 281ラウンド制御RCで 丸め28200 に28301を負の無限大は丸め 正の無限大に丸める28410を 丸め、ゼロに28511 286 ================
サブオープンサブルーチンプロシージャの
サブは、ESP、0x40のは、ローカル変数のスタックに部屋を出ます。
単語は、スタックレジスタEBXにPUSHをEBX
プッシュEBPのEBPレジスタの内容に
移動EBP、DWORD PTR DS:[ ] EBPを登録するには、送信ワードまたはバイト