X86和X87匯編指令大全(有注釋)?
---------- 一慎菲、數(shù)據(jù)傳輸指令 ----------------------------------------------------?
它們在存貯器和寄存器找前、寄存器和輸入輸出端口之間傳送數(shù)據(jù).?
1. 通用數(shù)據(jù)傳送指令.?
? ? MOV? ? 傳送字或字節(jié).?
? ? MOVSX? 先符號擴(kuò)展,再傳送.?
? ? MOVZX? 先零擴(kuò)展,再傳送.?
? ? PUSH? ? 把字壓入堆棧.?
? ? POP? ? 把字彈出堆棧.?
? ? PUSHA? 把AX,CX,DX,BX,SP,BP,SI,DI依次壓入堆棧.?
? ? POPA? ? 把DI,SI,BP,SP,BX,DX,CX,AX依次彈出堆棧.?
? ? PUSHAD? 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次壓入堆棧.?
? ? POPAD? 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次彈出堆棧.?
? ? BSWAP? 交換32位寄存器里字節(jié)的順序?
? ? XCHG? ? 交換字或字節(jié).(至少有一個操作數(shù)為寄存器,段寄存器不可作為操作數(shù))?
? ? CMPXCHG 比較并交換操作數(shù).(第二個操作數(shù)必須為累加器AL/AX/EAX)?
? ? XADD? ? 先交換再累加.(結(jié)果在第一個操作數(shù)里)?
? ? XLAT? ? 字節(jié)查表轉(zhuǎn)換.----BX指向一張256字節(jié)的表的起點,AL為表的索引值(0-255,即0-FFH);返回AL為查表結(jié)果.([BX+AL]->AL)?
2. 輸入輸出端口傳送指令.?
? ? IN? ? ? I/O端口輸入. ( 語法: IN? 累加器,? ? {端口號│DX} )?
? ? OUT? ? I/O端口輸出. ( 語法: OUT {端口號│DX},累加器 )輸入輸出端口由立即方式指定時,? ? 其范圍是 0-255; 由寄存器 DX 指定時,其范圍是? ? 0-65535.?
3. 目的地址傳送指令.?
? ? LEA? ? 裝入有效地址.例: LEA DX,string ;把偏移地址存到DX.?
? ? LDS? ? 傳送目標(biāo)指針,把指針內(nèi)容裝入DS.例: LDS SI,string? ;把段地址:偏移地址存到DS:SI.?
? ? LES? ? 傳送目標(biāo)指針,把指針內(nèi)容裝入ES.例: LES DI,string? ;把段地址:偏移地址存到ES:DI.?
? ? LFS? ? 傳送目標(biāo)指針,把指針內(nèi)容裝入FS.例: LFS DI,string? ;把段地址:偏移地址存到FS:DI.?
? ? LGS? ? 傳送目標(biāo)指針,把指針內(nèi)容裝入GS.例: LGS DI,string? ;把段地址:偏移地址存到GS:DI.?
? ? LSS? ? 傳送目標(biāo)指針,把指針內(nèi)容裝入SS.例: LSS DI,string? ;把段地址:偏移地址存到SS:DI.?
4. 標(biāo)志傳送指令.?
? ? LAHF? ? 標(biāo)志寄存器傳送,把標(biāo)志裝入AH.?
? ? SAHF? ? 標(biāo)志寄存器傳送,把AH內(nèi)容裝入標(biāo)志寄存器.?
? ? PUSHF? 標(biāo)志入棧.?
? ? POPF? ? 標(biāo)志出棧.?
? ? PUSHD? 32位標(biāo)志入棧.?
? ? POPD? ? 32位標(biāo)志出棧.?
---------- 二信粮、算術(shù)運算指令 ----------------------------------------------------?
? ? ADD? ? 加法.?
? ? ADC? ? 帶進(jìn)位加法.?
? ? INC? ? 加 1.?
? ? AAA? ? 加法的ASCII碼調(diào)整.?
? ? DAA? ? 加法的十進(jìn)制調(diào)整.?
? ? SUB? ? 減法.?
? ? SBB? ? 帶借位減法.?
? ? DEC? ? 減 1.?
? ? NEG? ? 求反(以? ? 0 減之).?
? ? CMP? ? 比較.(兩操作數(shù)作減法,僅修改標(biāo)志位,不回送結(jié)果).?
? ? AAS? ? 減法的ASCII碼調(diào)整.?
? ? DAS? ? 減法的十進(jìn)制調(diào)整.?
? ? MUL? ? 無符號乘法.結(jié)果回送AH和AL(字節(jié)運算),或DX和AX(字運算),?
? ? IMUL? ? 整數(shù)乘法.結(jié)果回送AH和AL(字節(jié)運算),或DX和AX(字運算),?
? ? AAM? ? 乘法的ASCII碼調(diào)整.?
? ? DIV? ? 無符號除法.結(jié)果回送:商回送AL,余數(shù)回送AH, (字節(jié)運算);或 商回送AX,余數(shù)回送DX, (字運算).?
? ? IDIV? ? 整數(shù)除法.結(jié)果回送:商回送AL,余數(shù)回送AH, (字節(jié)運算);或 商回送AX,余數(shù)回送DX, (字運算).?
? ? AAD? ? 除法的ASCII碼調(diào)整.?
? ? CBW? ? 字節(jié)轉(zhuǎn)換為字. (把AL中字節(jié)的符號擴(kuò)展到AH中去)?
? ? CWD? ? 字轉(zhuǎn)換為雙字. (把AX中的字的符號擴(kuò)展到DX中去)?
? ? CWDE? ? 字轉(zhuǎn)換為雙字. (把AX中的字符號擴(kuò)展到EAX中去)?
? ? CDQ? ? 雙字?jǐn)U展. (把EAX中的字的符號擴(kuò)展到EDX中去)?
---------- 三、邏輯運算指令 ----------------------------------------------------?
? ? AND? ? 與運算.?
? ? OR? ? ? 或運算.?
? ? XOR? ? 異或運算.?
? ? NOT? ? 取反.?
? ? TEST? ? 測試.(兩操作數(shù)作與運算,僅修改標(biāo)志位,不回送結(jié)果).?
? ? SHL? ? 邏輯左移.?
? ? SAL? ? 算術(shù)左移.(=SHL)?
? ? SHR? ? 邏輯右移.?
? ? SAR? ? 算術(shù)右移.(=SHR)?
? ? ROL? ? 循環(huán)左移.?
? ? ROR? ? 循環(huán)右移.?
? ? RCL? ? 通過進(jìn)位的循環(huán)左移.?
? ? RCR? ? 通過進(jìn)位的循環(huán)右移.?
? ? ? ? ? ? ? 以上八種移位指令,其移位次數(shù)可達(dá)255次.?
? ? ? ? ? ? ? 移位一次時, 可直接用操作碼. 如 SHL AX,1.?
? ? ? ? ? ? ? 移位>1次時, 則由寄存器CL給出移位次數(shù).?
? ? ? ? ? ? ? 如 MOV CL,04? SHL AX,CL?
---------- 四陷舅、串指令 ----------------------------------------------------------?
? ? ? ? ? ? ? DS:SI 源串段寄存器 :源串變址.?
? ? ? ? ? ? ? ES:DI 目標(biāo)串段寄存器:目標(biāo)串變址.?
? ? ? ? ? ? ? CX 重復(fù)次數(shù)計數(shù)器.?
? ? ? ? ? ? ? AL/AX 掃描值.?
? ? ? ? ? ? ? D標(biāo)志? 0表示重復(fù)操作中SI和DI應(yīng)自動增量; 1表示應(yīng)自動減量.?
? ? ? ? ? ? ? Z標(biāo)志? 用來控制掃描或比較操作的結(jié)束.?
? ? MOVS? ? 串傳送.( MOVSB 傳送字符. MOVSW 傳送字. MOVSD 傳送雙字. )?
? ? CMPS? ? 串比較.( CMPSB 比較字符. CMPSW 比較字. )?
? ? SCAS? ? 串掃描.把AL或AX的內(nèi)容與目標(biāo)串作比較,比較結(jié)果反映在標(biāo)志位.?
? ? LODS? ? 裝入串.把源串中的元素(字或字節(jié))逐一裝入AL或AX中.( LODSB 傳送字符. LODSW 傳送字.? ? LODSD 傳送雙字. )?
? ? STOS? ? 保存串.是LODS的逆過程.?
? ? REP? ? ? ? 當(dāng)CX/ECX<>0時重復(fù).?
? ? REPE/REPZ? 當(dāng)ZF=1或比較結(jié)果相等,且CX/ECX<>0時重復(fù).?
? ? REPNE/REPNZ 當(dāng)ZF=0或比較結(jié)果不相等,且CX/ECX<>0時重復(fù).?
? ? REPC? ? ? ? 當(dāng)CF=1且CX/ECX<>0時重復(fù).?
? ? REPNC? ? ? 當(dāng)CF=0且CX/ECX<>0時重復(fù).?
---------- 五、程序轉(zhuǎn)移指令 ----------------------------------------------------?
1. 無條件轉(zhuǎn)移指令 (長轉(zhuǎn)移)?
? ? JMP? ? ? ? 無條件轉(zhuǎn)移指令?
? ? CALL? ? ? ? 過程調(diào)用?
? ? RET/RETF? ? 過程返回.?
2. 條件轉(zhuǎn)移指令? (短轉(zhuǎn)移,-128到+127的距離內(nèi))( 當(dāng)且僅當(dāng)(SF XOR OF)=1時,OP1<OP2 )?
? ? JA/JNBE? ? 不小于或不等于時轉(zhuǎn)移.?
? ? JAE/JNB? ? 大于或等于轉(zhuǎn)移.?
? ? JB/JNAE? ? 小于轉(zhuǎn)移.?
? ? JBE/JNA? ? 小于或等于轉(zhuǎn)移.?
? ? ? ? 以上四條,測試無符號整數(shù)運算的結(jié)果(標(biāo)志C和Z).?
? ? JG/JNLE? ? 大于轉(zhuǎn)移.?
? ? JGE/JNL? ? 大于或等于轉(zhuǎn)移.?
? ? JL/JNGE? ? 小于轉(zhuǎn)移.?
? ? JLE/JNG? ? 小于或等于轉(zhuǎn)移.?
? ? ? ? 以上四條,測試帶符號整數(shù)運算的結(jié)果(標(biāo)志S,O和Z).?
? ? JE/JZ? ? ? 等于轉(zhuǎn)移.?
? ? JNE/JNZ? ? 不等于時轉(zhuǎn)移.?
? ? JC? ? ? ? ? 有進(jìn)位時轉(zhuǎn)移.?
? ? JNC? ? ? ? 無進(jìn)位時轉(zhuǎn)移.?
? ? JNO? ? ? ? 不溢出時轉(zhuǎn)移.?
? ? JNP/JPO? ? 奇偶性為奇數(shù)時轉(zhuǎn)移.?
? ? JNS? ? ? ? 符號位為 "0" 時轉(zhuǎn)移.?
? ? JO? ? ? ? ? 溢出轉(zhuǎn)移.?
? ? JP/JPE? ? ? 奇偶性為偶數(shù)時轉(zhuǎn)移.?
? ? JS? ? ? ? ? 符號位為 "1" 時轉(zhuǎn)移.?
3. 循環(huán)控制指令(短轉(zhuǎn)移)?
? ? LOOP? ? ? ? ? ? CX不為零時循環(huán).?
? ? LOOPE/LOOPZ? ? CX不為零且標(biāo)志Z=1時循環(huán).?
? ? LOOPNE/LOOPNZ? CX不為零且標(biāo)志Z=0時循環(huán).?
? ? JCXZ? ? ? ? ? ? CX為零時轉(zhuǎn)移.?
? ? JECXZ? ? ? ? ? ECX為零時轉(zhuǎn)移.?
4. 中斷指令?
? ? INT? ? ? ? 中斷指令?
? ? INTO? ? ? ? 溢出中斷?
? ? IRET? ? ? ? 中斷返回?
5. 處理器控制指令?
? ? HLT? ? ? ? 處理器暫停,? 直到出現(xiàn)中斷或復(fù)位信號才繼續(xù).?
? ? WAIT? ? ? ? 當(dāng)芯片引線TEST為高電平時使CPU進(jìn)入等待狀態(tài).?
? ? ESC? ? ? ? 轉(zhuǎn)換到外處理器.?
? ? LOCK? ? ? ? 封鎖總線.?
? ? NOP? ? ? ? 空操作.?
? ? STC? ? ? ? 置進(jìn)位標(biāo)志位.?
? ? CLC? ? ? ? 清進(jìn)位標(biāo)志位.?
? ? CMC? ? ? ? 進(jìn)位標(biāo)志取反.?
? ? STD? ? ? ? 置方向標(biāo)志位.?
? ? CLD? ? ? ? 清方向標(biāo)志位.?
? ? STI? ? ? ? 置中斷允許位.?
? ? CLI? ? ? ? 清中斷允許位.?
---------- 六拉馋、偽指令 ----------------------------------------------------------?
? ? DW? ? ? ? ? 定義字(2字節(jié)).?
? ? PROC? ? ? ? 定義過程.?
? ? ENDP? ? ? ? 過程結(jié)束.?
? ? SEGMENT? ? 定義段.?
? ? ASSUME? ? ? 建立段寄存器尋址.?
? ? ENDS? ? ? ? 段結(jié)束.?
? ? END? ? ? ? 程序結(jié)束.?
---------- 七机错、處理機(jī)控制指令:標(biāo)志處理指令 ------------------------------------?
? ? CLC? ? 進(jìn)位位置0指令?
? ? CMC? ? 進(jìn)位位求反指令?
? ? STC? ? 進(jìn)位位置為1指令?
? ? CLD? ? 方向標(biāo)志置1指令?
? ? STD? ? 方向標(biāo)志位置1指令?
? ? CLI? ? 中斷標(biāo)志置0指令?
? ? STI? ? 中斷標(biāo)志置1指令?
? ? NOP? ? 無操作?
? ? HLT? ? 停機(jī)?
? ? WAIT? ? 等待?
? ? ESC? ? 換碼?
? ? LOCK? ? 封鎖?
========== 浮點運算指令集 ======================================================?
---------- 一爬范、控制指令(帶9B的控制指令前綴F變?yōu)镕N時浮點不檢查,機(jī)器碼去掉9B)----?
FINIT? ? ? ? ? ? ? ? 初始化浮點部件? ? ? ? ? ? ? ? ? 機(jī)器碼? 9B DB E3?
FCLEX? ? ? ? ? ? ? ? 清除異常? ? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? 9B DB E2?
FDISI? ? ? ? ? ? ? ? 浮點檢查禁止中斷? ? ? ? ? ? ? ? 機(jī)器碼? 9B DB E1?
FENI? ? ? ? ? ? ? ? ? 浮點檢查禁止中斷二? ? ? ? ? ? 機(jī)器碼? 9B DB E0?
WAIT? ? ? ? ? ? ? ? ? 同步CPU和FPU? ? ? ? ? ? ? ? ? ? 機(jī)器碼? 9B?
FWAIT? ? ? ? ? ? ? ? 同步CPU和FPU? ? ? ? ? ? ? ? ? ? 機(jī)器碼? D9 D0?
FNOP? ? ? ? ? ? ? ? ? 無操作? ? ? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? DA E9?
FXCH? ? ? ? ? ? ? ? ? 交換ST(0)和ST(1)? ? ? ? ? ? ? ? 機(jī)器碼? D9 C9?
FXCH ST(i)? ? ? ? ? ? 交換ST(0)和ST(i)? ? ? ? ? ? ? ? 機(jī)器碼? D9 C1iii?
FSTSW ax? ? ? ? ? ? ? 狀態(tài)字到ax? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? 9B DF E0?
FSTSW? word ptr mem? 狀態(tài)字到mem? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? 9B DD mm111mmm?
FLDCW? word ptr mem? mem到狀態(tài)字? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? D9 mm101mmm?
FSTCW? word ptr mem? 控制字到mem? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? 9B D9 mm111mmm?
?
FLDENV? word ptr mem? mem到全環(huán)境? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? D9 mm100mmm?
FSTENV? word ptr mem? 全環(huán)境到mem? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? 9B D9 mm110mmm?
FRSTOR? word ptr mem? mem到FPU狀態(tài)? ? ? ? ? ? ? ? ? ? 機(jī)器碼? DD mm100mmm?
FSAVE? word ptr mem? FPU狀態(tài)到mem? ? ? ? ? ? ? ? ? ? 機(jī)器碼? 9B DD mm110mmm?
?
FFREE ST(i)? ? ? ? ? 標(biāo)志ST(i)未使用? ? ? ? ? ? ? ? ? 機(jī)器碼? DD C0iii?
FDECSTP? ? ? ? ? ? ? 減少棧指針1->0 2->1? ? ? ? ? ? 機(jī)器碼? D9 F6?
FINCSTP? ? ? ? ? ? ? 增加棧指針0->1 1->2? ? ? ? ? ? 機(jī)器碼? D9 F7?
FSETPM? ? ? ? ? ? ? ? 浮點設(shè)置保護(hù)? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? DB E4?
---------- 二弱匪、數(shù)據(jù)傳送指令 ----------------------------------------------------?
FLDZ? ? ? ? ? ? ? ? ? 將0.0裝入ST(0)? ? ? ? ? ? ? ? ? 機(jī)器碼? D9 EE?
FLD1? ? ? ? ? ? ? ? ? 將1.0裝入ST(0)? ? ? ? ? ? ? ? ? 機(jī)器碼? D9 E8?
FLDPI? ? ? ? ? ? ? ? 將π裝入ST(0)? ? ? ? ? ? ? ? ? ? 機(jī)器碼? D9 EB?
FLDL2T? ? ? ? ? ? ? ? 將ln10/ln2裝入ST(0)? ? ? ? ? ? 機(jī)器碼? D9 E9?
FLDL2E? ? ? ? ? ? ? ? 將1/ln2裝入ST(0)? ? ? ? ? ? ? ? 機(jī)器碼? D9 EA?
FLDLG2? ? ? ? ? ? ? ? 將ln2/ln10裝入ST(0)? ? ? ? ? ? 機(jī)器碼? D9 EC?
FLDLN2? ? ? ? ? ? ? ? 將ln2裝入ST(0)? ? ? ? ? ? ? ? ? 機(jī)器碼? D9 ED?
?
FLD? ? real4 ptr mem? 裝入mem的單精度浮點數(shù)? ? ? ? ? ? 機(jī)器碼? D9 mm000mmm?
FLD? ? real8 ptr mem? 裝入mem的雙精度浮點數(shù)? ? ? ? ? ? 機(jī)器碼? DD mm000mmm?
FLD? real10 ptr mem? 裝入mem的十字節(jié)浮點數(shù)? ? ? ? ? ? 機(jī)器碼? DB mm101mmm?
?
FILD? ? word ptr mem? 裝入mem的二字節(jié)整數(shù)? ? ? ? ? ? ? 機(jī)器碼? DF mm000mmm?
FILD? dword ptr mem? 裝入mem的四字節(jié)整數(shù)? ? ? ? ? ? ? 機(jī)器碼? DB mm000mmm?
FILD? qword ptr mem? 裝入mem的八字節(jié)整數(shù)? ? ? ? ? ? ? 機(jī)器碼? DF mm101mmm?
?
FBLD? tbyte ptr mem? 裝入mem的十字節(jié)BCD數(shù)? ? ? ? ? ? 機(jī)器碼? DF mm100mmm?
?
FST? ? real4 ptr mem? 保存單精度浮點數(shù)到mem? ? ? ? ? ? 機(jī)器碼? D9 mm010mmm?
FST? ? real8 ptr mem? 保存雙精度浮點數(shù)到mem? ? ? ? ? ? 機(jī)器碼? DD mm010mmm?
?
FIST? ? word ptr mem? 保存二字節(jié)整數(shù)到mem? ? ? ? ? ? ? 機(jī)器碼? DF mm010mmm?
FIST? dword ptr mem? 保存四字節(jié)整數(shù)到mem? ? ? ? ? ? ? 機(jī)器碼? DB mm010mmm?
?
FSTP? real4 ptr mem? 保存單精度浮點數(shù)到mem并出棧? ? ? 機(jī)器碼? D9 mm011mmm?
FSTP? real8 ptr mem? 保存雙精度浮點數(shù)到mem并出棧? ? ? 機(jī)器碼? DD mm011mmm?
FSTP? real10 ptr mem? 保存十字節(jié)浮點數(shù)到mem并出棧? ? ? 機(jī)器碼? DB mm111mmm?
?
FISTP? word ptr mem? 保存二字節(jié)整數(shù)到mem并出棧? ? ? ? ? 機(jī)器碼? DF mm011mmm?
FISTP? dword ptr mem? 保存四字節(jié)整數(shù)到mem并出棧? ? ? ? ? 機(jī)器碼? DB mm011mmm?
FISTP? qword ptr mem? 保存八字節(jié)整數(shù)到mem并出棧? ? ? ? ? 機(jī)器碼? DF mm111mmm?
?
FBSTP? tbyte ptr mem? 保存十字節(jié)BCD數(shù)到mem并出棧? ? 機(jī)器碼? DF mm110mmm?
?
FCMOVB? ? ? ? ? ? ? ? ST(0),ST(i) <時傳送? ? ? ? ? ? ? 機(jī)器碼? DA C0iii?
FCMOVBE? ? ? ? ? ? ? ST(0),ST(i) <=時傳送? ? ? ? ? ? 機(jī)器碼? DA D0iii?
FCMOVE? ? ? ? ? ? ? ? ST(0),ST(i) =時傳送? ? ? ? ? ? 機(jī)器碼? DA C1iii?
FCMOVNB? ? ? ? ? ? ? ST(0),ST(i) >=時傳送? ? ? ? ? ? 機(jī)器碼? DB C0iii?
FCMOVNBE? ? ? ? ? ? ? ST(0),ST(i) >時傳送? ? ? ? ? ? ? 機(jī)器碼? DB D0iii?
FCMOVNE? ? ? ? ? ? ? ST(0),ST(i) !=時傳送? ? ? ? ? ? 機(jī)器碼? DB C1iii?
FCMOVNU? ? ? ? ? ? ? ST(0),ST(i) 有序時傳送? ? ? ? 機(jī)器碼? DB D1iii?
FCMOVU? ? ? ? ? ? ? ? ST(0),ST(i) 無序時傳送? ? ? ? 機(jī)器碼? DA D1iii?
---------- 三、比較指令? --------------------------------------------------------?
FCOM? ? ? ? ? ? ? ? ? ST(0)-ST(1)? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? D8 D1?
FCOMI? ? ? ? ? ? ? ? ST(0),ST(i)? ST(0)-ST(1)? ? ? ? 機(jī)器碼? DB F0iii?
FCOMIP? ? ? ? ? ? ? ? ST(0),ST(i)? ST(0)-ST(1)并出棧? 機(jī)器碼? DF F0iii?
FCOM? real4 ptr mem? ST(0)-實數(shù)mem? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? D8 mm010mmm?
FCOM? real8 ptr mem? ST(0)-實數(shù)mem? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? DC mm010mmm?
?
FICOM? word ptr mem? ST(0)-整數(shù)mem? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? DE mm010mmm?
FICOM? dword ptr mem? ST(0)-整數(shù)mem? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? DA mm010mmm?
FICOMP? word ptr mem? ST(0)-整數(shù)mem并出棧? ? ? ? ? ? ? 機(jī)器碼? DE mm011mmm?
FICOMP dword ptr mem? ST(0)-整數(shù)mem并出棧? ? ? ? ? ? ? 機(jī)器碼? DA mm011mmm?
?
FTST? ? ? ? ? ? ? ? ? ST(0)-0? ? ? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? D9 E4?
FUCOM? ST(i)? ? ? ? ? ST(0)-ST(i)? ? ? ? ? ? ? ? ? ? ? 機(jī)器碼? DD E0iii?
FUCOMP ST(i)? ? ? ? ? ST(0)-ST(i)并出棧? ? ? ? ? ? ? ? ? 機(jī)器碼? DD E1iii?
FUCOMPP? ? ? ? ? ? ? ST(0)-ST(1)并二次出棧? ? ? ? ? ? 機(jī)器碼? DA E9?
FXAM? ? ? ? ? ? ? ? ? ST(0)規(guī)格類型? ? ? ? ? ? ? ? ? ? 機(jī)器碼? D9 E5?
---------- 四璧亮、運算指令? --------------------------------------------------------?
FADD? ? ? ? ? ? ? ? ? 把目的操作數(shù) (直接接在指令后的變量或堆棧緩存器) 與來源操作數(shù) (接在目的操作數(shù)后的變量或堆棧緩存器)? 相加萧诫,并將結(jié)果存入目的操作數(shù)?
FADDP? ST(i),ST? ? ? 這個指令是使目的操作數(shù)加上 ST? 緩存器,并彈出 ST 緩存器枝嘶,而目的操作數(shù)必須是堆棧緩存器的其中之一帘饶,最后不管目的操作數(shù)為何,經(jīng)彈出一次后群扶,目的操作數(shù)會變成上一個堆棧緩存器了?
FIADD? ? ? ? ? ? ? ? FIADD 是把 ST? 加上來源操作數(shù)及刻,然后再存入 ST 緩存器,來源操作數(shù)必須是字組整數(shù)或短整數(shù)形態(tài)的變數(shù)?
?
FSUB? ? ? ? ? ? ? ? ? 減?
FSUBP?
FSUBR? ? ? ? ? ? ? ? 減數(shù)與被減數(shù)互換?
FSUBRP?
FISUB?
FISUBR?
?
FMUL? ? ? ? ? ? ? ? ? 乘?
FMULP?
FIMUL?
?
FDIV? ? ? ? ? ? ? ? ? 除?
FDIVP?
FDIVR?
FDIVRP?
FIDIV?
FIDIVR?
?
FCHS? ? ? ? ? ? ? ? ? 改變 ST 的正負(fù)值?
?
FABS? ? ? ? ? ? ? ? ? 把 ST? 之值取出竞阐,取其絕對值后再存回去缴饭。?
?
FSQRT? ? ? ? ? ? ? ? 將 ST? 之值取出,開根號后再存回去骆莹。?
?
FSCALE? ? ? ? ? ? ? ? 這個指令是計算 ST*2^ST(1)之值颗搂,再把結(jié)果存入 ST 里而 ST(1)? 之值不變。ST(1)? 必須是在 -32768 到 32768 (-215 到 215 )之間的整數(shù)幕垦,如果超過這個范圍計算結(jié)果無法確定丢氢,如果不是整數(shù) ST(1)? ? 會先向零舍入成整數(shù)再計算。所以為安全起見先改,最好是由字組整數(shù)載入到 ST(1) 里疚察。?
?
FRNDINT? ? ? ? ? ? ? 這個指令是把 ST 的數(shù)值舍入成整數(shù),F(xiàn)PU? ? 提供四種舍入方式仇奶,由 FPU 的控制字組(control? ? word)中的 RC 兩個位決定?
? ? ? ? ? ? ? ? ? ? ? ? ? RC? ? 舍入控制?
? ? ? ? ? ? ? ? ? ? ? ? ? 00? ? 四舍五入?
? ? ? ? ? ? ? ? ? ? ? ? ? 01? ? 向負(fù)無限大舍入?
? ? ? ? ? ? ? ? ? ? ? ? ? 10? ? 向正無限大舍入?
? ? ? ? ? ? ? ? ? ? ? ? ? 11? ? 向零舍去?
================================================================================?