大二上復習最終完美版匯編-08_第1頁
大二上復習最終完美版匯編-08_第2頁
大二上復習最終完美版匯編-08_第3頁
大二上復習最終完美版匯編-08_第4頁
大二上復習最終完美版匯編-08_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Chapter8Processingstringdata處理串數(shù)據(jù)Textbook:11Processingstringdata8086SymbolicinstructionsAlistofthesymbolicinstructionsfortheIntelprocessorfamilyarrangedbycategory.①DataTransfer

數(shù)據(jù)傳送類指令②ArithmeticandLogical算術、邏輯運算類指令③BitShifting

位操作類指令④StringOperation

串操作類指令⑤Transfer(ConditionalandUnconditional)控制轉移類指令⑥ProcessorControl

處理機控制類指令Processingstringdata處理串數(shù)據(jù)7.1Textbook:11ProcessingstringdataoutlineREP:

repeatstringprefix

(重復前綴)MOVS: movestring

LODS: loadstringSTOS: StorestringCMPS:

Comparesbyte,wordordouble-wordlocations.SCAS:

ComparesthecontentsoftheAL,AX,orEAXwiththecontentsofamemorylocation.INS: TransfersabytefromporttomemoryOUTS: Transfersabytefrommemorytoport.MOVinstruction(move)TheMOVinstructiontransfers(orcopies)data

referencedbytheaddressinthesecondoperandtotheaddressinthefirstoperand.Format:從源操作數(shù)地址把一個字節(jié)、字或雙字復制到目的操作數(shù)地址,存放在源地址的值不會改變。比如C語言中賦值語句intcount=0;[label:]MOVreg/mem,reg/mem/imm;reg/mem←reg/mem/immValidMOVOperationsByteflddb?;DefineabyteWordflddb?;Defineaword1)RegisterMovesmovdx,cx;register-to-registermoves,ax;register-to-segmentregistermovbytefld,dh;Register-to-memory,directmov[bx],al;register-to-memory,indirectExamplesFeaturesofstringoperationsAstringinstructioncanspecifytherepetitiveprocessingbyte,word,ordouble-wordatatime.串操作指令可以指定每次以字節(jié)/字/雙字的形式操作。(Featuresofstringoperations)ForthestringinstructionsMOVS,STOS,CMPS,andSCAS,besurethatyour.EXEprogramsinitializetheESregister.ESregisterusually,butnotnecessarily,withthesameaddressasthatintheDSregister:

使用串操作指令MOVS/STOS/CMPS/SCAS時,需要初始化ES寄存器。ES常與DS有相同的值。(Featuresofstringoperations)ESregisterusually,butnotnecessarily,withthesameaddressasthatintheDSregister:

MOVAX,@data;getaddressofdatasegmentMOVDS,AX

;storeitinDSMOVES,AX;andinES簡化段定義中給ES賦值實例,完整段定義中?Examples(Featuresofstringoperations)ForstringinstructionsusethesuffixesB,W,andDforhandlingbyte,word,ordouble-wordstring.串操作指令可以使用后綴B/W/D來表示字節(jié)/字/雙字操作。(Featuresofstringoperations)Therearebasicallytwowaystocodestringinstructions:

(兩種串操作編程方式)Wherethedefinitionoftheoperandsindicatesthelength

(通過操作數(shù)的長度定義)

Codetheinstructionwithoutoperands(無操作數(shù))LEADI,BYTE2

;addressofbyte2LEASI,byte1;addressofbyte1MOVSB

;movebyte2tobyte1MOVSbyte1,byte2Examples(Featuresofstringoperations)REPrepeatstringprefix7.2REP:repeatstringprefixTheREPprefiximmediatelybeforeastringinstruction(anystring-instructionexceptingLOADS)providesforrepeatedexecutionbasedonaninitialcountthatyousetintheCXregister.

Format:REPstring-primitive

Suchas:REPMOVSBREP的位置:在除LOADS的其它串指令之前,重復操作次數(shù)由CX值確定。REP:repeatstringprefixREPexecutesthestringinstructionCXCX-1,and

repeatsthisoperationuntilCX=0.REP功能:每執(zhí)行一次串操作,CX<-CX-1,直至CX=0Prepare:SISourcestringfirstaddress(orendaddress)源串首地址DIDestinationstringfirstaddress

(orendaddress)

目的串首地址CXString-lengthcount串長度Setdirectionflag(D).傳送方向(REP:repeatstringprefix)使用REP時的預備工作(REP:repeatstringprefix)DirectionflagD:Determinesthedirectionofarepeatedoperation. Justusedinstringinstruction;

MakeDI、SI:auto-increment(增)

when

(D=0)

or

auto-decrement

(減)

when(D=1)方向標志D用于確定操作的方向,在串操作中使DI/SI自動遞增或遞減。(REP:repeatstringprefix)2Directionflagcontrolinstruction:

CLD

ClearDirectionflagD(D=0)Selectauto-increment

STD

SetDirectionflagD(D=1)Selectauto-decrementDATASTR1DB25DUP(‘*’);sendingfieldDATASTR2DB25DUP(‘‘);receivingfield…CLD;cleardirectionflagMOVCX,25;initializefor25byteLEADI,DATASTR2;initializereceivingLEASI,DATASTR1;initializesendingaddress

REPMOVSB;copydatastr1todatastr2Equivalent:L1:MOVAX,[SI];getbytefromDATASTR1MOV[DI],AX;storebyteinDATASTR2INCSI;incrementfornextbyteINCDILOOPL1;decrementCXandrepeatExamples:REP使用例程1定義方向2定義傳送數(shù)量3定義源/目的串偏移量4串操作指令Examples(REP:repeatstringprefix)REPRepeatoperation,untilCX=0.REPE/REPZ

Repeatwhileequal/zero,

Stopwhennotequal/zero

or

CX=0.REPNE/REPNZ

Repeatwhilenotequal/zero,

Stopwhenequal/zero

or

CX=0.MOVS7.4MOVS:movestringinstructionMOVS;memorymemoryES:[DI]byte,word,double-word(DS:[SI])

+or–DIandSI

,dependingondirectionflagD(MOVS:movestringinstruction)MOVSLODS7.4LODS:loadstringinstructionLODS;AL(orAX,orEAX)memory

;(AL)

/(AX)/(EAX)(DS:[SI])

(noteffectDI,notuseREP)功能:將內(nèi)存單元的數(shù)據(jù)放入AL/AX中,不涉及DI,不使用REP(LODS:loadstringinstruction)(LODS:loadstringinstruction)DataSegmentFigure12-LODSWinstructionoperation(D=0)STOS7.5STOS:StorestringinstructionSTOS;memoryAL(orAX,orEAX);(ES:[DI]) (AL)

/(AX)/(EAX)

(noteffectSI)功能:將AL/AX的數(shù)據(jù)放入內(nèi)存單元中,不涉及SI(STOS:Storestringinstruction)(STOS:Storestringinstruction)CMPS7.6CMPS:ComparestringinstructionComparesbyte,wordordouble-wordmemorylocations.memorymemory (DS:[SI])) (ES:[DI])+or–DIandSI

,dependingondirectionflagD.TosetA,C,O,P,S,andZflags.比較一段內(nèi)存單元的內(nèi)容

(DS:[SI])<->(ES:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論