win32汇编指令汇总
生活随笔
收集整理的這篇文章主要介紹了
win32汇编指令汇总
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
-----------------------算數(shù)運算指令-----------------------
ADD????????? 加法
ADC????????? 帶位加法
SBB ??? ????? 帶位減法
SUB????????? 減法.
INC????????? 加法.
NEC????????? 求反(以0減之).?
NEG????????? 求反然后加1,假如NEG AL相當(dāng)于Not AL; INC AL
CMP????????? 比較.(兩操作數(shù)作減法,僅修改標(biāo)志位,不回送結(jié)果).?
INC DPTR???? 數(shù)據(jù)指針寄存器值加1 (說明:將16位的DPTR加1,當(dāng)DPTR的低字節(jié)(DPL)從FFH溢出至00H時,會使高字
節(jié)(DPH)加1,不影響任何標(biāo)志位)
MUL A B???? 將累加器的值與B寄存器的值相乘,乘積的低位字節(jié)存回累加器,高位字節(jié)存回B寄存器(說明:將累加
器A和寄存器B內(nèi)的無符號整數(shù)相乘,產(chǎn)生16位的積,低位字節(jié)存入A,高位字節(jié)存入B寄存器.如果積大于FFH,則溢出
DIV A B???? 將累加器的值除以B寄存器的值,結(jié)果的商存回累加器,余數(shù)存回B寄存器(說明:無符號的除法運算,
將累加器A除以B寄存器的值,商存入A,余數(shù)存入B。執(zhí)行本指令后,進位位(C)及溢出位(OV)被清除為0)
IDIV??? 整數(shù)除法. 以上兩條,結(jié)果回送: 商回送AL,余數(shù)回送AH, (字節(jié)運算);? 或? 商回送AX,余數(shù)回送DX, (字運
算).?
?AAA??? 加法的ASCII碼調(diào)整.?
?DAA??? 加法的十進制調(diào)整.?
?AAS??? 減法的ASCII碼調(diào)整.?
?DAS??? 減法的十進制調(diào)整.?
?AAM??? 乘法的ASCII碼調(diào)整.?
?AAD??? 除法的ASCII碼調(diào)整.?
?CBW?? 字節(jié)轉(zhuǎn)換為字. (把AL中字節(jié)的符號擴展到AH中去)?
?CWD?? 字轉(zhuǎn)換為雙字. (把AX中的字的符號擴展到DX中去)?
?CWDE? 字轉(zhuǎn)換為雙字. (把AX中的字符號擴展到EAX中去)?
?CDQ?? 雙字?jǐn)U展.???? (把EAX中的字的符號擴展到EDX中去)?
-----------------------邏輯運算指令---------------------------------
AND??? 與運算.?
OR????? 或運算.?
XOR??? 異或運算.?
NOT??? 取反.?
TEST??? 測試.(兩操作數(shù)作與運算,僅修改標(biāo)志位,不回送結(jié)果).?
SHL??? 邏輯左移.
SHR??? 邏輯右移. ?
SAL??? 算術(shù)左移.(=SHL)?
SAR??? 算術(shù)右移. (左移是一樣的,右移是不同的.邏輯右移補0,算術(shù)右移補最高位)? ?
ROL??? 循環(huán)左移.? ( ((unsigned char)a) << 5 ) | ( ((unsigned char)a) >> 3 )?
????????????????? rol eax,cl ==> eax=(eax<<cl)+(eax>>(32-cl));?
ROR??? 循環(huán)右移.? ror eax,cl ==> eax=(eax>>cl)+(eax<<(32-cl));
RCL??? 通過進位的循環(huán)左移.?
RCR??? 通過進位的循環(huán)右移.?
以上八種移位指令,其移位次數(shù)可達255次.?
?? ?移位一次時, 可直接用操作碼.? 如 SHL AX,1.?
?? ?移位>1次時, 則由寄存器CL給出移位次數(shù).?
?? ???? 如? MOV CL,04?
?? ??? ?SHL AX,CL?
-----------------------數(shù)據(jù)轉(zhuǎn)移指令---------------------------------
1. 通用數(shù)據(jù)傳送指令.?
?? ?MOV??? 傳送字或字節(jié).?
?? ?MOVSX? 先符號擴展,再傳送.?
?? ?MOVZX? 先零擴展,再傳送.?
?? ?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 指定時,?
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.?
----------------------- 標(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)志出棧.?
0012F618? |00A8E5A8? ASCII "nk'MHBh30"
-----------------------程序轉(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????? 有進位時轉(zhuǎn)移.?
?? ?JNC??? 無進位時轉(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進入等待狀態(tài).?
?? ?ESC??? 轉(zhuǎn)換到外處理器.?
?? ?LOCK??? 封鎖總線.?
?? ?NOP??? 空操作.?
?? ?STC??? 置進位標(biāo)志位.?
?? ?CLC??? 清進位標(biāo)志位.?
?? ?CMC??? 進位標(biāo)志取反.?
?? ?STD??? 置方向標(biāo)志位.?
?? ?CLD??? 清方向標(biāo)志位.?
?? ?STI??? 置中斷允許位.?
?? ?CLI??? 清中斷允許位.?
-----------------------串指令-----------------------
DS:SI?? 源串段寄存器? :串變址.?
ES:DI?? 目標(biāo)串段寄存器:串變址.?
CX????? 重復(fù)次數(shù)計數(shù)器.?
AL/AX?? 掃描值.?
D標(biāo)志?? 0表示重復(fù)操作中SI和DI應(yīng)自動增量; 1表示應(yīng)自動減量.?
Z標(biāo)志?? 用來控制掃描或比較操作的結(jié)束.?
cld? 將DF置為0
std? 將DF置為1
MOVS??? 串傳送.?
??? ( MOVSB? 傳送字符。將ds:si指向的內(nèi)存單元中的字節(jié)送入es:di中,然后根據(jù)DF的標(biāo)志將si和di的值增或減(0增1減)
????? MOVSW? 傳送字。? 將ds:si指向的內(nèi)存單元中的字節(jié)送入es:di中,然后根據(jù)DF的標(biāo)志將si和di的值增或減(0增1減)?
????? MOVSD? 傳送雙字. ) 經(jīng)常這么用rep movsb相當(dāng)于s:movsb ; loop s
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ù).?
-----------------------偽指令-----------------------
DW????? 定義字(2字節(jié)).?
PROC??? 定義過程.?
ENDP??? 過程結(jié)束.?
SEGMENT 定義段.?
ASSUME? 建立段寄存器尋址.?
ENDS??? 段結(jié)束.?
END??? 程序結(jié)束. ? 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
ADD????????? 加法
ADC????????? 帶位加法
SBB ??? ????? 帶位減法
SUB????????? 減法.
INC????????? 加法.
NEC????????? 求反(以0減之).?
NEG????????? 求反然后加1,假如NEG AL相當(dāng)于Not AL; INC AL
CMP????????? 比較.(兩操作數(shù)作減法,僅修改標(biāo)志位,不回送結(jié)果).?
INC DPTR???? 數(shù)據(jù)指針寄存器值加1 (說明:將16位的DPTR加1,當(dāng)DPTR的低字節(jié)(DPL)從FFH溢出至00H時,會使高字
節(jié)(DPH)加1,不影響任何標(biāo)志位)
MUL A B???? 將累加器的值與B寄存器的值相乘,乘積的低位字節(jié)存回累加器,高位字節(jié)存回B寄存器(說明:將累加
器A和寄存器B內(nèi)的無符號整數(shù)相乘,產(chǎn)生16位的積,低位字節(jié)存入A,高位字節(jié)存入B寄存器.如果積大于FFH,則溢出
標(biāo)志位(OV)被設(shè)定為1,而進位標(biāo)志位為0)?
DIV A B???? 將累加器的值除以B寄存器的值,結(jié)果的商存回累加器,余數(shù)存回B寄存器(說明:無符號的除法運算,
將累加器A除以B寄存器的值,商存入A,余數(shù)存入B。執(zhí)行本指令后,進位位(C)及溢出位(OV)被清除為0)
IDIV??? 整數(shù)除法. 以上兩條,結(jié)果回送: 商回送AL,余數(shù)回送AH, (字節(jié)運算);? 或? 商回送AX,余數(shù)回送DX, (字運
算).?
?AAA??? 加法的ASCII碼調(diào)整.?
?DAA??? 加法的十進制調(diào)整.?
?AAS??? 減法的ASCII碼調(diào)整.?
?DAS??? 減法的十進制調(diào)整.?
?AAM??? 乘法的ASCII碼調(diào)整.?
?AAD??? 除法的ASCII碼調(diào)整.?
?CBW?? 字節(jié)轉(zhuǎn)換為字. (把AL中字節(jié)的符號擴展到AH中去)?
?CWD?? 字轉(zhuǎn)換為雙字. (把AX中的字的符號擴展到DX中去)?
?CWDE? 字轉(zhuǎn)換為雙字. (把AX中的字符號擴展到EAX中去)?
?CDQ?? 雙字?jǐn)U展.???? (把EAX中的字的符號擴展到EDX中去)?
-----------------------邏輯運算指令---------------------------------
AND??? 與運算.?
OR????? 或運算.?
XOR??? 異或運算.?
NOT??? 取反.?
TEST??? 測試.(兩操作數(shù)作與運算,僅修改標(biāo)志位,不回送結(jié)果).?
SHL??? 邏輯左移.
SHR??? 邏輯右移. ?
SAL??? 算術(shù)左移.(=SHL)?
SAR??? 算術(shù)右移. (左移是一樣的,右移是不同的.邏輯右移補0,算術(shù)右移補最高位)? ?
ROL??? 循環(huán)左移.? ( ((unsigned char)a) << 5 ) | ( ((unsigned char)a) >> 3 )?
????????????????? rol eax,cl ==> eax=(eax<<cl)+(eax>>(32-cl));?
ROR??? 循環(huán)右移.? ror eax,cl ==> eax=(eax>>cl)+(eax<<(32-cl));
RCL??? 通過進位的循環(huán)左移.?
RCR??? 通過進位的循環(huán)右移.?
以上八種移位指令,其移位次數(shù)可達255次.?
?? ?移位一次時, 可直接用操作碼.? 如 SHL AX,1.?
?? ?移位>1次時, 則由寄存器CL給出移位次數(shù).?
?? ???? 如? MOV CL,04?
?? ??? ?SHL AX,CL?
-----------------------數(shù)據(jù)轉(zhuǎn)移指令---------------------------------
1. 通用數(shù)據(jù)傳送指令.?
?? ?MOV??? 傳送字或字節(jié).?
?? ?MOVSX? 先符號擴展,再傳送.?
?? ?MOVZX? 先零擴展,再傳送.?
?? ?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.?
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.?
----------------------- 標(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)志出棧.?
0012F618? |00A8E5A8? ASCII "nk'MHBh30"
-----------------------程序轉(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????? 有進位時轉(zhuǎn)移.?
?? ?JNC??? 無進位時轉(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進入等待狀態(tài).?
?? ?ESC??? 轉(zhuǎn)換到外處理器.?
?? ?LOCK??? 封鎖總線.?
?? ?NOP??? 空操作.?
?? ?STC??? 置進位標(biāo)志位.?
?? ?CLC??? 清進位標(biāo)志位.?
?? ?CMC??? 進位標(biāo)志取反.?
?? ?STD??? 置方向標(biāo)志位.?
?? ?CLD??? 清方向標(biāo)志位.?
?? ?STI??? 置中斷允許位.?
?? ?CLI??? 清中斷允許位.?
-----------------------串指令-----------------------
DS:SI?? 源串段寄存器? :串變址.?
ES:DI?? 目標(biāo)串段寄存器:串變址.?
CX????? 重復(fù)次數(shù)計數(shù)器.?
AL/AX?? 掃描值.?
D標(biāo)志?? 0表示重復(fù)操作中SI和DI應(yīng)自動增量; 1表示應(yīng)自動減量.?
Z標(biāo)志?? 用來控制掃描或比較操作的結(jié)束.?
cld? 將DF置為0
std? 將DF置為1
MOVS??? 串傳送.?
??? ( MOVSB? 傳送字符。將ds:si指向的內(nèi)存單元中的字節(jié)送入es:di中,然后根據(jù)DF的標(biāo)志將si和di的值增或減(0增1減)
????? MOVSW? 傳送字。? 將ds:si指向的內(nèi)存單元中的字節(jié)送入es:di中,然后根據(jù)DF的標(biāo)志將si和di的值增或減(0增1減)?
????? MOVSD? 傳送雙字. ) 經(jīng)常這么用rep movsb相當(dāng)于s:movsb ; loop s
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ù).?
-----------------------偽指令-----------------------
DW????? 定義字(2字節(jié)).?
PROC??? 定義過程.?
ENDP??? 過程結(jié)束.?
SEGMENT 定義段.?
ASSUME? 建立段寄存器尋址.?
ENDS??? 段結(jié)束.?
END??? 程序結(jié)束. ? 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
總結(jié)
以上是生活随笔為你收集整理的win32汇编指令汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 内核调试器 调试指南
- 下一篇: 264 解码之 yuv