欢迎来到天天文库
浏览记录
ID:38788342
大小:380.32 KB
页数:22页
时间:2019-06-19
《《字符串操作指令》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.2.4字符串操作指令以前所介绍的指令都是对字节/字/双字,位进行操作,在很多情况下需要对“串”进行操作80X86有一类功能很强串操作指令,可以完成以下操作:串传送串装入串存储串比较串搜索串输入串输出既然是针对“串”进行操作,必然涉及以下问题*串有多长(多少个元素)?*源串、目的串在什么地方?*怎么修改地址指针(增址还是减址)?*进行什么种类的串操作?指令助记符很难完整提示所有信息,所以必然有“隐含”。学习这类指令必须首先了解有关“隐含”规定、术语和操作特点。1元素在字节串中,字节是元素;在字串中,字是元素;在双字串中,双字是元素。若干元素构
2、成“串”2共同动作对串中的一个元素操作之后,都要自动修改串地址指针使其指向下一个元素。通过设置DF(P35)确定增址修改还是减址修改3隐含规定源串必须放在数据段,用SI寻址。DS:[SI]表示元素;目的串必须在附加段,用DI寻址。ES:[DI]表示元素;要习惯元素(存储单元)的表达方式!4配合使用重复前缀REP指令加上重复前缀,如虎添翼。串计数器必须用CX先从总体上了解此类指令的操作。源:::目:SI+NSIDI+NDISISI-NDIDI-N用CLD(ClearDF)设置DF=0,增址修改;也可用STD,设置减址AL/AX/EAXAL/AX/
3、EAX关键字AL/AX/EAXDF:标志寄存器中的D10string1string2N=1/2/4数据段附加段DSES串传送MOVSB/W/DDS:[SI]ES:[DI]串装入LODSB/W/DDS:[SI]AL/AX/EAX串存储STOSB/W/DAL/AX/EAXES:[DI]串比较CMPSB/W/DDS:[SI]—ES:[DI]串扫描SCASB/W/D关键字(AL/AX/EAX)—ES:[DI](1)串传送指令MOVeString基本格式MOVSB/MOVSW/MOVSD字节字双字指令的三个‘动作’:DS:[SI]ES:[DI](传送)S
4、I±NSI(修改“源”)DI±NDI(修改“目的”)CLDCLearDFDF=0,增址修改STDSeTDFDF=1,减址修改使用该指令的辅助指令(使用该指令的准备工作)1)SI,DI赋值;2)确定增址或减址;3)传送长度*带有重复前缀REP的格式(REPeat前缀助记符,不能独立使用)格式:REPMOVSB/W/D(重复次数由CX内容确定)功能:每传送一个字节,修改指针。CX-1,如果CX≠0,继续传送例:把数据段BLOCK单元开始的100个字节,依次传送到附加段BUF开始的内存区。用三种方法完成传送,目的:学习指令,比较指令。MOVSB解1:
5、用MOV指令MOVSI,OFFSETBLOCK;指向源串MOVDI,OFFSETBUF;指向目的串MOVCX,100;计数器初值LAST:.MOVAL,[SI];从源串取一字节MOVES:[DI],AL;送入目的串INCSI;指向源串下一个字符INCDI;指向目的串下一个字符LOOPLAST;传送100个字节………..;CX-1,不为0转LAST解2:用MOVSB指令配合核心指令的辅助指令MOVSI,OFFSETBLOCK;指向源串MOVDI,OFFSETBUF;指向目的串CLD;增址修改..MOVCX,100;计数器初值LAST:.MOVSB
6、;传送,修改地址指针LOOPLAST;100个字节未完,继续……….;已完,……..解3用带重复前缀的传送指令REPMOVSB配合核心指令的辅助指令MOVSI,OFFSETBLOCK;指向源串MOVDI,OFFSETBUF;指向目的串MOVCX,100;计数器初值CLD;增址修改REP.MOVSB;传送100个字节……….(2)取串指令LOaDfromString基本格式LODSB/W/DDS:[SI]AL/AX/EAX把DS:[SI]中的一个元素送入AL/AX/EAX*没有带前缀的格式(3)存串指令STOreintoString基本格式STO
7、SB/W/DAL/AX/EAXES:[DI]把一个元素AL/AX/EAX送入目的存储区*带有重复前缀REP的形式REPSTOSB/W/D(4)串比较指令CoMPareString*基本格式CMPSB/W/DDS:[SI]和ES:[DI]的当前元素比较,并按DF标志修改地址。当前元素相等?ZF标志置1ZF标志置0指令结束CMPS指令功能示意*指令的三个‘动作’:DS:[SI]―ES:[DI](比较)SI±NSI(修改)DI±NDI(修改)*带有重复前缀的串比较指令格式1:REPECMPSB/W/D(REPE=REPZ)比较,如果相等且CX≠0,重
8、复基本指令CMPSB/W/DCX=0?CX-1CX比较当前元素根据DF,修改SI,DI当前元素相等?停止重复操作的条件:重复次数计数器CX等于0或ZF
此文档下载收益归作者所有