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