微機筆記(四)-------------------------算術運算類指令
算術運算指令:
1,不帶進位的加法(影響標誌位)
格式:ADD OPRD1,OPRD2
功能:(OPRD1)+(OPRD2)→OPRD1
2,帶進位的加法
格式:ADC OPRD1,OPRD2(使用前先將CF清零)
功能:(OPRD1)+(OPRD2)+CF>OPRD1
3,增量指令INC (不影響CF,影響AF, OF,PF,SF和ZF)
格式:INC OPRD
功能:(OPRD)+1>OPRD
1)不帶借位的減法(結果影響標誌位)
格式: SUB OPRD1,OPRD2
功能:(OPRD1) - (OPRD2) OPRD1
2)帶借位的減法(結果影響標誌位)
格式:SBB OPRD1,OPRD2
功能:(OPRD1) -(OPRD2) -CF→OPRD1
3) 增減指令(不影響CF,影響AF,OE,PE, SF和ZF)
格式:DEC OPRD
功能:(OPRD)- 1→OPRD
求補指令:
格式:NEG OPRD;對運算元取補碼後送回 功能:0-(OPRD) →OPRD
(指令影響標誌位AF,CF,OF,PF,SF和ZF,此指令執行時,只有當運算元為0時,CF為0,否則CF總為1。若運算元為80H或8000H,執行求補指令後,結果沒有變化,但OF置1。)
比較類指令(比較結果影響標誌位AF,CE,OF,PE,SF和ZF。)
不送回結果,隻影響標誌位
(若兩者相等,相減以後結果為零,ZF標誌為1, 否則為0.) (大小的比較CMP AX,BX
對無符號數,若結果沒有產生借位(CF=0),則 AX≥BX;若產生了借位(CF=1),則AX<BX。 對帶符號數,則可根據OF與SF異或運算的結果來判斷,結果為1,則AX<BX, 結果為 0 , 則 AX≥BX)
乘法指令:(有符號和無符號 乘法運算時,結果影響CF和OF)
乘數在AL中,另一個乘數在暫存器或記憶體中,乘積放在AX中;
將DX看做AX的擴充套件:乘積的高16位在DX中,低16位在AX中。
格式:MUL OPRD;不出現AL或AX 功能:AL/AXxOPRD →>AX/DX,AX
格式:IMUL OPRD;不出現AL或AX 功能上與MUL相似, 要求兩個乘數必須為有符號數
除法指令:(除法有有符號數和無符號數兩套指令)
約定:除數必須為被除數的一半字長
被除數放在AX(低位)中(DX(高位),),除數在暫存器或記憶體中,商在AX中, DX中。
例:DIV BL; AX÷BLAL(商) , AH(餘數)
格式:DIV OPRD;不出現AX或DXAX 功能:DX,AX/AX÷OPRD →AX/AL,DX/AH
IDIV OPRD;不出現AX或DXAX 功能上與DIV相似,要求被除數,除數必須為有符號數。
例:IDIV BL; AX÷BL->AL(商) , AH(餘數)
擴充套件指令:
將位元組擴充套件成字的指令:CBW
將AL中的符號位擴充套件到AH中。當AL<80H,執行
CBW後,AH=0;當AL>=80H時,AH=0FFH。
將字擴充套件成雙字的指令:CWD
將AX中的符號位擴充套件到DX中。當AX<8000H,執 行CWD後, DX=0; 當AX>=8000H時,DX=0FFFFH。
當遇到兩個位元組或字相除時,要預先執行CBW指 令或CWD指令,擴充套件被除數,否則不能正確執行 除法操作。