2014計算機三級《PC技術》考試要點:80x86指令系統
1.傳送指令
傳送指令用于在存儲單元、寄存器、輸入/輸出端口之間傳送地址或數據。
①通用數據傳送指令
MOV指令:該指令可以將一個立即數傳送到寄存器或存儲單元中,也可以在寄存器與寄存器之間、寄存器與存儲器之間傳送字數據或字節數據。例如:將一個立即數傳送到寄存器中的指令MOV AL,05H;在兩個寄存器之間傳送字節數據的指令MOV AL,BL;在寄存器和存儲器之間傳送數據的指令MOV SI,[BX+5AH]。
XCHG指令:該指令可以將源操作數和目的操作數進行交換,但操作數可以是寄存器或存儲單元,不能是段寄存器或立即數,也不能同時為兩個存儲器操作數。
PUSH指令:PUSH指令是對一個16位操作數執行進棧操作,這是在一個操作數和堆棧之間進行數據傳送,而不是在兩個操作數之間進行數據傳送。
POP指令:POP指令是將一個16位操作數執行出棧操作,這也是在一個操作數和堆棧之間進行數據傳送。
XLAT指令:該指令專門用于在AL寄存器與字節表中某一存儲單元之間進行數據傳送。其中字節表的首地址存放在BX基址寄存器中,根據AL設置的偏移地址,可以將該單元的內容傳送到AL累加寄存器中。
?、谳斎?輸出指令
該指令專門用于在累加器和I/O端口之間進行數據傳送操作。輸入/輸出的工作原理:CPU使用AL或AX寄存器接收數據或發送數據,最多可提供64K個8位端口地址,或32K個16位端口地址。當端口地址小于256時使用直接尋址來獲得操作數,即在指令中直接指定端口地址;當端口地址超過256時使用間接尋址來獲得操作數,即先將端口地址放到DX寄存器中,然后利用IN指令或OUT指令進行輸入/輸出操作。例如:IN AX,28H是從I/O端口28H輸入一個字到AX寄存器中;OUT 5,AL是從AL寄存器輸出一個字節到I/O端口5中。
③地址傳送指令
LEA指令:該指令是將源操作數的偏移地址傳送到通用寄存器、指針寄存器或變址寄存器中,要求目的操作數是一個16位寄存器,源操作數是一個存儲器地址,這樣就可以獲得指令執行所需的有效地址。
LDS指令:該指令是將源操作數指定的連續四個存儲單元中存放的32位地址指針(包括一個段地址和一個偏移量)傳送到兩個16位寄存器,其中兩個高位字節(段基址)送段寄存器DS,兩個低位字節(指偏移量)送指令指定的16位通用寄存器,這樣就獲得指令執行所需的地址指針。LES指令:該指令是將源操作數指定的連續四個存儲單元中所存放的32位地址指針(一個段地址和一個偏移量)傳送到指令指定的16位通用寄存器和段寄存器ES中。其中兩個高位字節(段基址)送段寄存器ES,兩個低位字節(指偏移量)送指令指定的16位通用寄存器,這樣就獲得指令執行所需的地址指針。④標志傳送指令
該指令用于對標志寄存器中的內容進行數據傳送操作。
2.算術運算指令
在8086/8088微處理器中,算術運算指令可用于二進制數和無符號十進數的各種算術運算。二進制數可以是單字或雙字節,也可以是有符號數或無符號數。十進制數直接使用BCD碼,以表示無符號(Unsigned)的十進制數。
(1)加法指令
?、貯DD
格式: ADD OPRD1,OPRD2
功能:實現兩個操作數相加,結果送原來存放目的操作數的地方。目的操作數可以是累加器、通用寄存器或存儲器操作數。
加法指令可以完成累加器與立即數,或與任一通用寄存器、或與存儲單元的內容相加,結果放在累加器中。
說明:加法指令可以完成任一通用寄存器與任一通用寄存器,或與立即數、或與存儲單元的內容相同,其“和”放在通用寄存器中。
加法指令也可以實現存儲器操作數與立即數,或與累加器、或與通用寄存器內容相加,其“和”放在存儲單元中。
注意:存儲器操作數與立即數相加時,必須指明操作數的類型。ADD指令的執行結果將影響標志位CF、AF、PF、ZF、SF和OF。
?、贏DC
格式: ADC OPRD1,OPRD2
功能:ADC指令與ADD類似,不同之處在于兩個操作數相加時,還要加上進位標志CF的當前值,結果送原來存放目的操作數的地方。
說明:指令執行結果對標志值的影響與ADD相同。
?、跧NC
格式: INC OPRD
功能:操作數OPRD加1。操作數可以是通用寄存器,也可為存儲器操作數。說明:該指令執行結果影響標志位SF、ZF、AF、PF和OF,而對CF無影響。④AAA
功能:AAA是未組合BCD碼加法調整指令
。它對在AL中兩個未組合的十進制數相加的結果進行校正,產生一個未組合的十進制和數。⑤DAA
功能:DAA為十進制加法調整指令。它對AL中兩個組合的十進制數相加的結果進行校正,產生一個組合的十進制和數。
(2)減法指令
?、賁UB
格式: SUB OPRD1,OPRD2
功能:完成兩個操作數相減,結果放在目的操作數OPRD1中。其規則與加法指令相同。
說明:SUB的執行結果影響標志位SF、ZF、AF、PF、CF和OF。
?、赟BB
格式: SBB OPRD1,OPRD2
功能:SBB指令與SUB基本相同,不同的是兩個操作數相減時,還要減去借位標志位CF的當前值。
?、跠EC
格式: DEC OPRD
功能:完成對操作數OPRD減1運算后返回操作數中。操作數可以是寄存器或存儲器。
說明:指令執行對標志位CF無影響,但影響標志位SF、ZF、AF、PF和OF。
?、躈EG
格式: NEG OPRD
功能:完成對操作數取補,即用零減去操作數,再把結果送回操作數。
說明:該指令執行結果影響標志位SF、ZF、AF、PF和OF,對于CF一般總是CF=1,只有當操作數為0時,CF=0。⑤CMP
格式: CMP OPRD1,OPRD2
功能:完成兩個操作數相減,但不回送結果,結果只影響狀態標志位。操作數規定與加法操作數相同。
CMP指令只比較兩個數的大小。若兩數相等,則ZF=1,否則ZF為0。若兩數不相等,則其大小的確定可利用CMP指令執行后的其他標志位來確定。例如,對于無符號數,可利用CF標志值來判斷。當CF=1時,則OPRD1OPRD2。對于有符號數,則用標志位SF和OF的狀態一同判定。
?、轆AS
功能:完成對在AL中的兩個未組合的十進制數相減的結果進行校正,在AL中產生一個正確的未組合十進制數的差。
?、逥AS
功能:完成對在AL中兩個未組合的十進制數相減以后的結果進行校正,在AL中產生一個正確的組合十進制數的差。
(3)乘法指令
?、費UL
格式: MUL OPRD
功能:完成源操作數OPRD與累加器中的數相乘,結果放在累加器中。參與運算的操作數可以是寄存器或存儲器。乘積為單字節長時,放在AX中;乘積為雙字長時,分別存放在DX(乘積的高16位)和AX中。
說明:將內存單元FIRST和SECOND的兩個字節的內容相乘,乘積放在THIRD單元和下一個單元內。MUL指令運行結果只影響標志位CF和OF。
②IMUL
格式: IMUL OPRD
功能:IMUL指令為帶符號數相乘指令,即將源操作數與累加器中的數都作為帶符號數相乘,其余與MUL指令相同。
?、跘AM
功能:對在AX中兩個未組合的十進制數的乘積進行校正,以得到正確的未組合的十進制數的乘積。
(4)除法指令
?、貲IV
格式: DIV OPRD
功能:無符號除法指令。用指定的源操作數OPRD去除累加器中的值,所得商和余數分別放在AL和AH(字節操作)或AX和DX(字操作)中。
?、谄渌ㄖ噶?/p>
●IDIV: 完成帶符號數的除法運算。
●AAD: 完成AX中的兩位未組合的十進制數在兩個數相除之前進行核正。
●CBW: 字節轉換為字。具體操作是按AL的符號位擴展到整個AH中。
●CMD: 字轉換為雙字。按AX的符號擴展到整個DX中。
3.邏輯運算和移位指令
(1)邏輯運算指令①NOT
格式: NOT OPRD
功能:完成對操作數求反,然后送回原處。說明:此指令對標志位無影響。
?、贏ND
格式: AND OPRD1,OPRD2
功能:對兩操作數進行按位邏輯“與”運算,結果送目的操作數。目的操作數可為通用寄存器、存儲器,源操作數可以是立即數、寄存器、存儲器。
③OR
格式: OR OPRD1, OPRD2
功能:對兩操作數進行按位“或”運算,結果回送目的操作數。操作數規定與AND相同。
說明:“或”運算令標志位CF=0,OF=0,其“或”操作后的結果反映在標志位PF、SF和ZF上。
④XOR
格式: XOR OPRD1,OPRD2
功能:對兩個操作數進行按位“異或”運算,結果回送目的操作數。
說明:XOR執行后,標志位CF=0,OF=0,“異或”操作結果反映在標志位PF、SF和ZF上。
?、軹EST
格式: TEST OPRD1,OPRD2
功能:TEST指令的操作與AND指令完全相同,但結果不送目的操作數,僅反映在狀態標志位上,TEST指令的操作數規定與AND相同,對標志位的影響亦與AND相同,即:CF=0,OF=0,結果反映在標志位PF、SF和ZF上。
(2)移位指令
移位指令可將寄存器或存儲單元的8位或16位的內容向左或向右移動1位或多位。
?、賁AL/SHL
格式: SAL/SHL OPRD m
功能:SAL(算述左移)和SHL(邏輯左移)指令將操作數OPRD左移m位,移位后空出的位填零。操作數可以是寄存器、存儲器。m是移位次數,為1時取立即數,大于1時先將m賦予CL寄存器。
?、赟AR
格式: SAR OPRD m
功能:算術右移指令。將指定操作數右移m位,最低位進入標志位CF,其他位依次右移,但符號位(最高位)保持不變。m的規定與SHL相同。③SHR
格式: SHR OPRD m
功能:邏輯右移指令。與SAR類擬,最低位進入標志位CF,但移位后空位的最高位填0。
(3)循環移位指令
8086/8088有四條循環移位指令,它們是:
●ROL OPRD M ;左循環移位
●ROR OPRD M ;右循環移位
●RCL OPRD M ;帶進位的左循環移位
●RCR OPRD M ;帶進位的右循環移位