壹、數據傳輸說明
它們在存儲器和寄存器、寄存器和輸入輸出端口之間傳輸數據。
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},累加器)
當I/O端口由即時模式指定時,其範圍為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。
NEC求反(負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 & gt;在0處重復。
REPE/REPZ當ZF=1或比較結果相等,而CX/ecx >;在0處重復。
當ZF=0或比較結果不相等,且CX/ecx >時,使用REPNE/REPNZ;在0處重復。
當CF=1且CX/ecx >時的REPC;在0處重復。
CF=0且CX/ecx >時的REPNC在0處重復。
動詞 (verb的縮寫)程序轉移指令
———————————————————————————————————————
1 & gt;無條件分支指令(長分支)
JMP無條件轉移指令
調用過程調用
RET/RETF程序返回。
2 & gt條件分支指令(短分支,在從-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 & gt循環控制指令(短傳輸)
當它不為零時,CX循環。
LOOPE/LOOPZ CX不為零,標誌Z=1周期。
當LOOPNE/LOOPNZ CX不為零且標誌Z=0時循環。
當JCXZ·CX為零時轉移。
當JECXZ·ECX為零時轉移。
4 & gt中斷程序
INT中斷指令
進入溢出中斷
IRET中斷返回
5 & gt處理器控制指令
HLT處理器暫停,直到出現中斷或復位信號。
WAIT使CPU在芯片引線測試為高時進入等待狀態。
ESC切換到外部處理器。
鎖住,堵住巴士
NOP空操作。
STC設置進位標誌。
CLC清除進位標誌。
CMC進位標誌倒置。
STD設置方向標誌。
CLD明確的方向標誌。
STI設置中斷使能位。
CLI清除中斷使能位。
六、虛假說明
———————————————————————————————————————
DW定義字(2字節)。
PROC定義了流程。
ENDP進程結束。
段定義了壹個段。
假設建立段寄存器尋址。
端點線段端點。
結束程序結束。