大二上复习最终完美版汇编-08_第1页
大二上复习最终完美版汇编-08_第2页
大二上复习最终完美版汇编-08_第3页
大二上复习最终完美版汇编-08_第4页
大二上复习最终完美版汇编-08_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Chapter8Processingstringdata处理串数据Textbook:11Processingstringdata8086SymbolicinstructionsAlistofthesymbolicinstructionsfortheIntelprocessorfamilyarrangedbycategory.①DataTransfer

数据传送类指令②ArithmeticandLogical算术、逻辑运算类指令③BitShifting

位操作类指令④StringOperation

串操作类指令⑤Transfer(ConditionalandUnconditional)控制转移类指令⑥ProcessorControl

处理机控制类指令Processingstringdata处理串数据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:从源操作数地址把一个字节、字或双字复制到目的操作数地址,存放在源地址的值不会改变。比如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.串操作指令可以指定每次以字节/字/双字的形式操作。(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来表示字节/字/双字操作。(Featuresofstringoperations)Therearebasicallytwowaystocodestringinstructions:

(两种串操作编程方式)Wherethedefinitionoftheoperandsindicatesthelength

(通过操作数的长度定义)

Codetheinstructionwithoutoperands(无操作数)LEADI,BYTE2

;addressofbyte2LEASI,byte1;addressofbyte1MOVSB

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

Format:REPstring-primitive

Suchas:REPMOVSBREP的位置:在除LOADS的其它串指令之前,重复操作次数由CX值确定。REP:repeatstringprefixREPexecutesthestringinstructionCXCX-1,and

repeatsthisoperationuntilCX=0.REP功能:每执行一次串操作,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定义传送数量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)功能:将内存单元的数据放入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的数据放入内存单元中,不涉及SI(STOS:Storestringinstruction)(STOS:Storestringinstruction)CMPS7.6CMPS:ComparestringinstructionComparesbyte,wordordouble-wordmemorylocations.memorymemory (DS:[SI])) (ES:[DI])+or–DIandSI

,dependingondirectionflagD.TosetA,C,O,P,S,andZflags.比较一段内存单元的内容

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论