資源描述:
《算術(shù)與邏輯運(yùn)算指令4.1算術(shù)運(yùn)算指令.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第4章算術(shù)與邏輯運(yùn)算指令4.1&4.2算術(shù)運(yùn)算指令本章包括加法,減法,乘法,和二進(jìn)制數(shù)據(jù)的除法。(13.算術(shù)運(yùn)算)加法指令:ADD、ADC、INC.減法指令:SUB、SBB、DEC、CMP乘法指令:MUL、IMUL、除法指令:DIV、IDIVINC與DEC指令用INC與DEC指令將寄存器的內(nèi)容(除了段寄存器)或?qū)?nèi)存單元的內(nèi)容增1或減1。(INC與DEC指令)格式:[標(biāo)號(hào):]INC/DECDST寄存器/內(nèi)存選項(xiàng):(DST)←(DST)±1注意:只有一個(gè)操作數(shù)清除或置位O,S,和Z標(biāo)志;不影響C。(INC與DEC指令)列表6-2-4INC指令格式指令注釋INCBL
2、INCSPINCEAXINCBYTEPTR[BX]INCWORDPTR[SI]INCDWORDPTR[ECX]INCDATA2(BL)=(BL)+1(SP)=(SP)+1(EAX)=(EAX)+1遞增數(shù)據(jù)段中通過BX尋址得到的字節(jié)內(nèi)容遞增數(shù)據(jù)段中通過SI尋址得到的字的內(nèi)容遞增數(shù)據(jù)段中通過ECX尋址得到的雙字的內(nèi)容遞增數(shù)據(jù)段中DATA2所在位置的內(nèi)容(INC)例:將NUMB+1和NUMB相加,結(jié)果放到AL中注意:會(huì)影響DI寄存器的內(nèi)容。SUMSPROCNEARMOVDI,OFFESTNUMB;尋址NUMBMOVAL,0;清除ALADDAL,[DI];加上NUMBI
3、NCDI;尋址NUMB+1ADDAL,[DI];加上NUMB+1RETSUMSENDPDEC--減1格式:DECDST寄存器/內(nèi)存操作:(DST)←(DST)-1DEC指令清除或設(shè)置OF,SF,和ZF標(biāo)志位,但是不影響CF標(biāo)志位。列表13-6DEC—遞減加法和減法格式:ADD/SUBDST,SCR寄存器寄存器/內(nèi)存/立即數(shù)內(nèi)存寄存器/立即數(shù)不可直接內(nèi)存到內(nèi)存操作。操作:(DST)←(DST)±(SCR)ADD或SUB操作會(huì)設(shè)置或清除溢出標(biāo)志、進(jìn)位標(biāo)志、標(biāo)志寄存器的右8位。用二進(jìn)制數(shù)的補(bǔ)碼表示一個(gè)負(fù)的二進(jìn)制數(shù)。加法指令減法指令(加法指令跟減法指令)例2:MOVDL
4、,12HADDDL,33H執(zhí)行,(DL)=sum=45H要改變的標(biāo)志位:Z=0(結(jié)果?0)C=0(無進(jìn)位)A=0(無輔助進(jìn)位)S=0(結(jié)果為正)P=0(校驗(yàn)是奇數(shù))O=0(無溢出)例3:數(shù)組相加;累積數(shù)組元素3、5、7,結(jié)果放在AL中;注意執(zhí)行過程會(huì)影響SI的內(nèi)容SUMPROCNEARMOVAL,0;清除總和MOVSI,3;指向元素3ADDAL,ARRAY[SI];加上元素3ADDAL,ARRAY[SI+2];加上元素5ADDAL,ARRAY[SI+4];加上元素7RETSUMENDPADC—帶進(jìn)位的加法格式:ADCDST,SCR寄存器寄存器/內(nèi)存/立即數(shù)內(nèi)存寄
5、存器/立即數(shù)操作符:(DST)←(DST)+(SCR)+CF設(shè)置或清除溢出和進(jìn)位標(biāo)志,改變標(biāo)志寄存器的右8位。ADC指令(ADC—帶進(jìn)位的加法)例:雙字加將BX-AX加DX-CX,結(jié)果放在BX-AX中SUMPROCNEARADDAX,CXADCBX,DXRETSUMENDP帶借位的減法格式:SBBDST,SCR寄存器寄存器/內(nèi)存/立即數(shù)內(nèi)存寄存器/立即數(shù)操作:(DST)←(DST)-(SCR)-C影響標(biāo)志位帶借位的減法乘法MUL處理無符號(hào)數(shù)據(jù)IMUL(整數(shù)乘法)處理帶符號(hào)數(shù)據(jù)兩者都會(huì)影響溢出和進(jìn)位標(biāo)志。乘積是乘數(shù)的雙倍長(zhǎng)度。乘法操作是字節(jié)乘字節(jié),字乘字或雙字乘雙
6、字。非立即數(shù)數(shù)據(jù)的乘法格式:[label:]MUL/IMUL操作數(shù)寄存器/內(nèi)存(非立即數(shù)數(shù)據(jù)的乘法)操作:字節(jié)乘法:(AX)←(AL)×(OPR)字乘法:(DX-AX)←(AX)×(OPR)MUL之前MUL之后AH(忽略)ALMULAX結(jié)果DX(忽略)AXMUL高DXAX低結(jié)果MUL之前MUL之后字節(jié)乘法字乘法例:生成(DX)=(BL)×(CL)MOVBL,5MOVAL,10MULBLMOVDX,AX;結(jié)果放到DX中如果上述是帶符號(hào)數(shù)據(jù)的乘法,應(yīng)當(dāng)用IMUL來代替MUL。除法格式:DIVOPR;不帶符號(hào)數(shù)寄存器/內(nèi)存IDIVOPR;帶符號(hào)數(shù)寄存器/內(nèi)存OPR可以
7、是8位、16位的操作數(shù),分別對(duì)應(yīng)字節(jié)除法、字除法。(除法)除法操作:字節(jié)除法:(AL)←(AX)/(OPR)的商(AH)←(AX)/(OPR)的余數(shù)字除法:(AX)←(DX-AX)/(OPR)的商(DX)←(DX-AX)/(OPR)的余數(shù)AX被除數(shù)AH余數(shù)AL商除前除后DX-AX高被除數(shù)低DX余數(shù)AX商除前除后(除法)當(dāng)被除數(shù)不是除數(shù)雙倍長(zhǎng)度時(shí),擴(kuò)展被除數(shù)。用0擴(kuò)展無符號(hào)數(shù)和正數(shù);用1擴(kuò)展帶符號(hào)的負(fù)數(shù);擴(kuò)展指令:CBW;將AL的最高有效位D7擴(kuò)展至AHCWD;將AX的最高有效位D7擴(kuò)展至DX