1.通用數據傳輸指令。
MOV傳輸字或字節。
MOVSX在傳輸前進行符號擴展。
MOVZX先擴展到零,然後傳輸。
PUSH將字推到堆棧上。
將單詞從堆棧中彈出。
普莎依次將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位寄存器中字節的順序。
XCHG交換字或字節。(至少有壹個操作數是寄存器,段寄存器不能用作操作數。)
CMPXCHG比較和交換操作數。(第二個操作數必須是累加器AL/AX/EAX)
交換XADD,然後累加。(結果在第壹個操作數中)
字節查找表轉換。── BX指向壹個256字節表的起點,AL是表的索引值(0-255,即0-FFH);返回AL是查找表的結果。([BX+艾爾]-& gt;鋁)
2.輸入/輸出端口傳輸指令。
輸入/輸出端口輸入。(語法:在累加器中,{端口號│DX})
OUT I/O端口輸出。(語法:OUT {端口號│DX},累加器)當輸入/輸出端口由immediate mode指定時,其範圍為0-255;當寄存器DX指定時,範圍為0-65535。
3.目的地址傳送指令。
LEA加載壹個有效地址。例子:LEA DX,string將偏移地址保存到DX。
LDS發送目標指針並將指針內容加載到DS中。例子:LDS SI,string將段地址:偏移地址保存到DS:SI。
LES發送目標指針,並將指針內容加載到ES中。例子:LES DI,string將段地址:偏移地址保存到ES:DI。
LFS發送目標指針並將指針內容加載到FS中。例子:LFS迪,弦樂;將段地址:偏移地址保存到FS:DI。
LGS發送目標指針並將指針內容加載到GS中。例子:LGS迪,弦樂;將段地址:偏移地址保存到GS:DI。
LSS發送目標指針並將指針內容加載到SS中。例子:LSS迪,弦樂;將段地址:偏移地址保存到SS:DI。
4.簽署傳輸指令。
LAHF國旗註冊轉移,載入國旗成啊。
SAHF標誌寄存器傳輸,加載AH內容到標誌寄存器。
PUSHF標記堆棧。
POPF標記堆棧。
PUSHD 32位標誌被放入堆棧。
POPD 32位標誌不在堆棧中。
二、算術運算指令
───────────────────────────────────────
添加附加物
帶進位加法的ADC。
INC加1。
AAA加法的ASCII碼調整。
DAA加法的小數調整。
減法。
SBB用借位減法。
十二月減去1。
NEG求反(負0)
CMP比較。(兩個操作數相減,只修改標誌位,不發回結果)。
AAS減法的ASCII碼調整。
DAS減法的小數調整
MUL無符號乘法。
IMUL整數乘法。以上兩項,結果送回AH和AL(字節運算)或者DX和AX(字運算)。
AAM乘法的ASCII碼調整
無符號除法。
IDIV整數除法。以上兩項,返回結果:商返回給AL,余數返回給AH,(字節運算);Or商返回AX,余數返回DX,(字運算)。
AAD司ASCII碼調整。
將CBW字節轉換成單詞。(將AL中的字節符號擴展到AH)
將CWD單詞轉換成雙單詞。(將AX中單詞的符號擴展到DX)
將CWDE單詞轉換成雙單詞。(將AX中的單詞符號擴展到EAX)
CDQ雙字擴展。(這個詞在EAX的象征延伸到了EDX)
三、邏輯運算指令
與和運算。
還是操作。
異或XOR運算。
沒有什麽是逆轉。
測試測試。(兩個操作數分別是和,只修改標誌位,不發回結果)。
SHL邏輯向左移動。
薩爾算術向左移動。(=SHL)
SHR邏輯向右移動。
SAR算法向右移動。(=SHR)
ROL環路向左移動。
ROR循環向右移動。
在進位循環中,RCL向左移動。
RCR在進位循環中向右移動。
以上八條移位指令的移位次數可以達到255次。
移位壹次,可以直接用操作碼,比如SHL AX,1。
Shift >當1次時,移位次數由寄存器CL給出。
比如MOV CL,04
化學發光二極管
第四,字符串指令
源字符串段寄存器:源字符串索引。
ES:DI目標字符串段寄存器:目標字符串索引。
CX重復計數器。
AL/AX掃描值。
d標誌0表示SI和DI應在重復操作中自動遞增;1表示應該自動減。
z標誌用於控制掃描或比較操作的結束。
MOVS弦傳輸。(MOVSB傳輸字符。MOVSW傳輸文字。MOVSD傳輸雙字。)
CMPS字符串比較。(CMPSB比較字符。CMPSW比較詞。)
SCAS字符串掃描。將AL或AX的內容與目標字符串進行比較,比較結果反映在標誌位中。
LODS裝弦。將源字符串中的元素(字或字節)逐個加載到AL或AX中。(LODSB傳輸字符。LODSW傳送文字。LODSD傳輸雙字。)
STOS拯救琴弦。這是LODS的逆過程。
CX/ecx時的代表
REPE/REPZ當ZF=1或者比較結果相等,而CX/ecx
當ZF=0或比較結果不相等時,以及CX/ecx
CF=1時的REPC和CX/ecx
CF=0和CX/ecx時的REPNC
動詞 (verb的縮寫)程序轉移指令
1。無條件分支指令(長分支)
JMP無條件轉移指令
調用過程調用
RET/RETF程序返回。
2。條件分支指令(短分支,在從-128到+127的距離內)
(當且僅當(SF XOR OF)=1,op1
JA/JNBE不小於或等於時轉移。
JAE/JNB大於或等於轉移。
JB/JNAE小於transfer。
JBE/JNA少於或等於轉移。
以上四項測試無符號整數運算的結果(符號C和Z)。
JG/JNLE大於轉會。
JGE/JNL大於或等於轉移。
JL/JNGE不到轉讓。
JLE/JNG少於或等於轉移。
以上四項測試有符號整數運算(符號S,O,Z)的結果。
JE/JZ等於轉移。
JNE/JNZ不等於時間躍遷。
有進位時JC轉移。
JNC無進位時間傳送。
JNO不溢出時轉移。
JNP/JPO宇稱是奇數時的躍遷。
JNS符號位為“0”時的轉換。
JO溢出並轉移。
當日元/JPE平價為偶數時轉移。
JS符號位為“1”時傳輸。
3。循環控制指令(短傳輸)
當它不為零時,CX循環。
LOOPE/LOOPZ CX不為零,標誌Z=1周期。
當LOOPNE/LOOPNZ CX不為零且標誌Z=0時循環。
當JCXZ·CX為零時轉移。
當JECXZ·ECX為零時轉移。
4。中斷程序
INT中斷指令
進入溢出中斷
IRET中斷返回
5。處理器控制指令
HLT處理器暫停,直到出現中斷或復位信號。
WAIT使CPU在芯片引線測試為高時進入等待狀態。
ESC切換到外部處理器。
鎖住,堵住巴士
NOP空操作。
STC設置進位標誌。
CLC清除進位標誌。
CMC進位標誌倒置。
STD設置方向標誌。
CLD明確的方向標誌。
STI設置中斷使能位。
CLI清除中斷使能位。
六、虛假說明
DW定義字(2字節)。
過程定義過程。例如:name proc var1,var2,var3。
ENDP進程結束。示例:名稱endp
段定義了壹個段。示例名稱段
假設建立段寄存器尋址。示例:假設cs:代碼,DS:數據,SS:堆棧。
端點線段端點。名稱結尾
END程序結束(也指出指令入口,即程序執行的第壹條指令)。
七、處理器控制指令:
標誌處理指令CLC(進位位置0指令)
進位位否定指令
STC(進位位置為1的指令)
CLD(方向標誌設置1指令)
STD(方向標誌位置1指令)
CLI(中斷標誌設置0指令)
STI(中斷標誌設置1指令)
無操作
關閉
等待(等待)
ESC(轉義碼)
LOCK ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++ v ++++++ v ++++ v ++++
讓我先解釋以下說明:
St(i):代表浮點寄存器,前面提到的推棧和壓棧操作都會影響st(i)。
Src、dst、dest、op等。都是指指令的操作數,其中src代表源操作數,dst/dest代表目標操作數。
Mem8、mem16、mem32、mem64、mem80等。表示內存操作數,以下值表示操作數的內存位數(8位為壹個字節)。
x & lt-y表示將y的值放入x,例如st (0)
1.常數的數據傳輸和操作說明
指令格式
指令含義
執行的操作
FLD src
將實數載入st(0)
ST(0)& lt;- src (mem32/mem64/mem80)
現場服務中心
將整數加載到st(0)
ST(0)& lt;- src (mem16/mem32/mem64)
FBLD src
加載BCD並計數到st(0)
ST(0)& lt;- src (mem80)
FLDZ
將0.0載入st(0)
ST(0)& lt;- 0.0
FLD1
將1.0載入st(0)
ST(0)& lt;- 1.0
FLDPI
將pi加載到st(0)中
ST(0)& lt;- ?(即圓周率)
FLDL2T
將log2(10)加載到st(0)中
ST(0)& lt;-日誌2(10)
FLDL2E
將log2(e)加載到st(0)
ST(0)& lt;- log2(e)
FLDLG2
將log10(2)加載到st(0)中
ST(0)& lt;-日誌10(2)
FLDLN2
將loge(2)加載到st(0)中
ST(0)& lt;-日誌(2)
FST目的地
將實數st(0)保存到dest。
dest & lt- st(0) (mem32/mem64)
FSTP目的地
dest & lt-ST(0)(mem 32/mem 64/mem 80);然後再次執行堆棧操作。
第壹目的地
將st(0)作為整數保存到dest。
dest & lt- st(0) (mem32/mem64)
FISTP目的地
dest & lt-ST(0)(mem 16/mem 32/mem 64);然後再次執行堆棧操作。
FBST目的地
將st(0)保存到BCD中的dest。
dest & lt- st(0) (mem80)
FBSTP目標
dest & lt-ST(0)(mem 80);然後再次執行堆棧操作。
2.比較說明
指令格式
指令含義
執行的操作
FCOM
實數比較
將標誌位設置為st(0)-st(1)的結果標誌位
FCOM op
實數比較
將標誌位設置為st(0)-op (mem32/mem64)的結果標誌位。
FICOM op
與整數比較
將標誌值設置為st(0)-op op (mem16/mem32)的結果。
FICOMP op
與整數比較
st(0)與op (MEM16/MEM32)對比後;再次執行堆棧操作。
FTST
零檢測
比較st(0)和0.0。
富康街(壹)
比較st(0)和st(i) [486]
富康街(壹)
比較st(0)和st(i),並執行彈出操作。
富康普街(壹)
比較st(0)和st(i),並執行兩次堆棧彈出操作。
FXAM
檢查:眼球st(0)(設置條件代碼)
3.使用說明書
指令格式
指令含義
執行的操作
添加
FADD
添加實數
ST(0)& lt;-st(0) + st(1)
FADD src
ST(0)& lt;-st(0) + src (mem32/mem64)
聖FADD街
ST(I)& lt;- st(i) + st(0)
第壹街
ST(I)& lt;-ST(I)+ST(0);然後執行堆棧操作。
FIADD src
添加壹個整數
ST(0)& lt;-st(0) + src (mem16/mem32)
減法
FSUB
減去壹個實數
ST(0)& lt;- st(0) - st(1)
FSUB src
ST(0)& lt;-st(0) - src(寄存器/內存)
聖FSUB街
ST(I)& lt;-st(i) - st(0)
FSUBP st(i),st
ST(I)& lt;-st(i)-st(0),然後執行彈出操作。
第壹次世界大戰
減去壹個實數。
ST(0)& lt;- st(i) - st(0)
FSUBRP st(i),st
ST(0)& lt;-st(i)-st(0),然後執行彈出操作。
FISUB src
減去壹個整數
ST(0)& lt;- st(0) - src (mem16/mem32)
FISUBR src
減去壹個整數。
ST(0)& lt;- src - st(0) (mem16/mem32)
增加
FMUL
乘以壹個實數
ST(0)& lt;- st(0) * st(1)
FMUL st(i)
ST(0)& lt;- st(0) * st(i)
FMUL st(i),st
ST(I)& lt;- st(0) * st(i)
FMULP st(i),st
ST(I)& lt;-st(0) * st(i),然後執行彈出操作。
FIMUL src
乘以壹個整數。
ST(0)& lt;- st(0) * src (mem16/mem32)
分開
FDIV
除以壹個實數
ST(0)& lt;-st(0) /st(1)
第壹街
ST(0)& lt;- st(0) /t(i)
第壹街
ST(I)& lt;-st(0) /st(i)
FDIVP st(i),st
ST(I)& lt;-st(0) /st(i),然後執行彈出操作。
FIDIV src
除以壹個整數。
ST(0)& lt;- st(0) /src (mem16/mem32)
第壹街
除以實數
ST(0)& lt;- st(i) /st(0)
FDIVRP st(i),st
FDIVRP st(i),st
FIDIVR src
除以整數
ST(0)& lt;- src /st(0) (mem16/mem32)
FSQRT
平方根
ST(0)& lt;- sqrt st(0)
FSCALE
2的St(0)次方
ST(0)& lt;-^街2號(0)
FXTRACT
提取指數:
ST(0)& lt;-ST(0)的指數;被推了壹把
ST(0)& lt;-ST(0)的有效位
FPREM
取余數
ST(0)& lt;-st(0) MOD st(1)
FPREM1
取余數(IEEE),與FPREM相同,但使用IEEE標準[486]。
FRNDINT
圓形(圓形)
ST(0)& lt;-INT(ST(0));取決於RC標誌
絕對值
求絕對值
ST(0)& lt;-ABS(ST(0));移除標誌
FCHS
改變符號位(尋找負數)
ST(0)& lt;-st(0)
F2XM1
計算(2 x)-1
ST(0)& lt;-(^街2號(0)) - 1
FYL2X
計算Y * log2(X)
St(0)是y;St(1)是x;將st(0)和st(1)更改為st(0) * log2( st(1))的值。
FCOS
余弦函數Cos
ST(0)& lt;- COS( st(0))
FPTAN
正切函數tan
ST(0)& lt;-譚(st(0))
FPATAN
反正切函數
ST(0)& lt;- ATAN( st(0))
FSIN
正弦函數
ST(0)& lt;- SIN( st(0))
FSINCOS
正弦函數
ST(0)& lt;-SIN( st(0)),然後按st(1)
ST(0)& lt;- COS( st(0))
FYL2XP1
計算Y * log2(X+1)
St(0)是y;St(1)是x;將st(0)和st(1)更改為st(0) * log2( st(1)+1)的值。
處理器控制指令
FINIT
初始化FPU
FSTSW AX
將狀態字的值保存到AX。
AX & lt-都市固體廢物
FSTSW目標
將狀態字的值保存到dest。
dest & lt-MSW (mem16)
FLDCW src
從src加載FPU的控制字。
FPU CW & lt-src (mem16
FSTCW目標
將FPU的控制字保存到dest。
dest & lt- FPU CW
FCLEX
清除異常
FSTENV目的地
將環境保存到存儲地址dest,以保存狀態字、控制字、標誌字和異常指針的值。
FLDENV src
從內存地址src加載保存的環境。
f保存目的地
將FPU的狀態保存到dest,長度為94字節。
FRSTOR src
從src加載FSAVE保存的FPU狀態。
FINCSTP
增加FPU的堆棧指針值
ST(6)& lt;-ST(5);ST(5)& lt;-st(4),...,ST(0)& lt;-?
FDECSTP
減少FPU的堆棧指針值
ST(0)& lt;-ST(1);ST(1)& lt;-st(2),...,ST(7)& lt;-?
弗裏街(壹)
沒有使用標誌寄存器st(i)。
FNOP
空操作,相當於CPU的nop
ST(0)& lt;-st(0)
等待
FPU與CPU同步:停止CPU,直到FPU完成當前操作碼。
FXCH
交換指令,交換st(0)和st(1)的值。
ST(0)& lt;-st(1)
ST(1)& lt;-ST (0)++++++我的手好痛!!我檢查過了!+++++++++++++++