アセンブリ言語注意事項

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を登録するには、送信ワードまたはバイト

おすすめ

転載: www.cnblogs.com/yuanscn/p/12350053.html
おすすめ