當前位置:編程學習大全網 - 編程語言 - 匯編語言和指令

匯編語言和指令

8086組裝說明手冊

壹、數據傳輸說明

它們在存儲器和寄存器、寄存器和輸入輸出端口之間傳輸數據。

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進程結束。

段定義了壹個段。

假設建立段寄存器尋址。

端點線段端點。

結束程序結束。

  • 上一篇:迷妳編程id
  • 下一篇:人工智能專業論文
  • copyright 2024編程學習大全網