字符串操作指令.ppt
《字符串操作指令.ppt》由会员分享,可在线阅读,更多相关《字符串操作指令.ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1页电气工程学院电气工程学院3.2.4 字符串操作指令字符串操作指令 以前所介绍的指令都是对以前所介绍的指令都是对字节字节/字字/双字,位双字,位进行操作,在很多情况下进行操作,在很多情况下需要对需要对“串串”进行操作进行操作 80X86有一类功能很强有一类功能很强串操作串操作指令,可以完成以下操作:指令,可以完成以下操作:串传送串传送 串装入串装入 串存储串存储 串比较串比较 串搜索串搜索 串输入串输入 串输出串输出既然是针对既然是针对“串串”进行操作,必然涉及以下问题进行操作,必然涉及以下问题*串有串有多长多长(多少个(多少个元素元素)?)?*源串、目的串在什么源串、目的串在什么地方地方
2、?*怎么修改地址指针(怎么修改地址指针(增增址还是址还是减减址)?址)?*进进行什么行什么种种类类的串操作?的串操作?指令助指令助记记符很符很难难完整提示完整提示所有信息,所以必然有所有信息,所以必然有“隐隐含含”。学学习这类习这类指令必指令必须须首先首先了解有关了解有关“隐隐含含”规规定、定、术语术语和和操作特点操作特点。1 元素元素 在在字节串字节串中,字节是元素;在中,字节是元素;在字串字串中,字是元素;中,字是元素;在在双字串双字串中,双字是元素。若干元素构成中,双字是元素。若干元素构成“串串”2 共同动作共同动作 对串中的一个元素操作之后,都要对串中的一个元素操作之后,都要自动修改自
3、动修改串地址指针串地址指针 使其指向下一个元素。使其指向下一个元素。通过设置通过设置DF(P35)确定)确定增址修改增址修改还是还是减址修改减址修改第2页电气工程学院电气工程学院3 隐含规定隐含规定 源源串必须放在串必须放在数据段数据段,用,用SI寻址。寻址。DS:SI 表示表示元素;元素;目的串目的串必须在必须在附加段附加段,用,用DI寻址。寻址。ES:DI 表示表示元素元素;要习惯元素(存储单元)的表达方式!要习惯元素(存储单元)的表达方式!4 配合使用配合使用重复前缀重复前缀REP 指令加上指令加上重复前缀,重复前缀,如虎添翼。如虎添翼。串串计计数器必数器必须须用用CX 先先从总体上从总
4、体上了解此类指令的操作。了解此类指令的操作。源源:目目:SI+NSIDI+NDISISI-NDIDI-N用用CLD(Clear DF)设置)设置DF=0,增址修改增址修改;也可用也可用STD,设置减址设置减址AL/AX/EAXAL/AX/EAX关键字关键字AL/AX/EAXDF:标志寄存器中的:标志寄存器中的D10string1 string2 N=1/2/4 数据段数据段 附加段附加段 DS ES 第3页电气工程学院电气工程学院串传送串传送 MOVSB/W/D DS:SI ES:DI串装入串装入LODSB/W/D DS:SI AL/AX/EAX串存储串存储 STOSB/W/D AL/AX/E
5、AX ES:DI 串比较串比较 CMPSB/W/D DS:SI ES:DI串扫描串扫描 SCASB/W/D 关键字(关键字(AL/AX/EAX)ES:DI(1)串传送指令)串传送指令 MOVe String基本格式基本格式 MOVSB/MOVS W/MOVSD 字节字节 字字 双字双字 指令的三个指令的三个动作动作:DS:SI ES:DI(传送)(传送)SIN SI (修改(修改“源源”)DIN DI (修改(修改“目的目的”)CLD CLear DF DF=0,增址修改,增址修改STD SeT DF DF=1,减址修改,减址修改使用该指令的使用该指令的辅助指令辅助指令(使用该指令的(使用该指
6、令的准备工作准备工作)1)SI,DI赋值;赋值;2)确定)确定增址增址或或减址;减址;3)传送长度)传送长度*带有重复前缀带有重复前缀REP的格式的格式 (REPeat 前缀助记符,不能独立使用)前缀助记符,不能独立使用)格式:格式:REP MOVSB/W/D (重复次数由(重复次数由CX内容确定)内容确定)功能:功能:每传送一个字节,修改指针。每传送一个字节,修改指针。CX-1,如果,如果CX0,继续传送,继续传送第4页电气工程学院电气工程学院例:把数据段例:把数据段BLOCK单元开始的单元开始的100个字节,依次传送到个字节,依次传送到 附加段附加段BUF开始的内存区。开始的内存区。用三种
7、方法完成传送,目的:学习指令,比较指令。用三种方法完成传送,目的:学习指令,比较指令。MOVSB解解1:用:用MOV指令指令MOV SI,OFFSET BLOCK;指向;指向源串源串MOV DI,OFFSET BUF ;指向;指向目的串目的串 MOV CX,100 ;计数器初值;计数器初值LAST:.MOV AL,SI ;从源串取一字节;从源串取一字节MOV ES:DI,AL ;送入目的串;送入目的串 INC SI ;指向源串下一个字符;指向源串下一个字符 INC DI ;指向目的串下一个字符;指向目的串下一个字符 LOOP LAST ;传送;传送100个字节个字节 .;CX-1,不为不为0转
8、转LAST解解2:用用MOVSB 指令指令配合核心指令配合核心指令的辅助指令的辅助指令 MOV SI,OFFSET BLOCK;指向源串;指向源串 MOV DI,OFFSET BUF ;指向目的串;指向目的串 CLD ;增址修改;增址修改.MOV CX,100 ;计数器初值;计数器初值 LAST:.MOVSB ;传送,修改地址指针;传送,修改地址指针 LOOP LAST ;100个字节未完,继续个字节未完,继续 .;已完,;已完,.第5页电气工程学院电气工程学院解解3 用带重复前缀的传送指令用带重复前缀的传送指令 REP MOVSB配合核心配合核心指令的指令的辅助指令辅助指令 MOV SI,O
9、FFSET BLOCK;指向源串;指向源串 MOV DI,OFFSET BUF ;指向目的串;指向目的串 MOV CX,100 ;计数器初值;计数器初值 CLD ;增址修改;增址修改 REP .MOVSB ;传送;传送100个字节个字节 .(2)取串指令)取串指令 LOaD from String 基本格式基本格式 LODSB/W/D DS:SI AL/AX/EAX 把把DS:SI中的一个元素送入中的一个元素送入AL/AX/EAX*没有带前缀的格式没有带前缀的格式(3)存串指令)存串指令 STOre into String 基本格式基本格式 STOSB/W/D AL/AX/EAX ES:DI
10、把一个元素把一个元素AL/AX/EAX送入目的存储区送入目的存储区*带有重复前缀带有重复前缀REP的形式的形式REP STOSB/W/D(4)串比较指令)串比较指令 CoMPare String *基本格式基本格式 CMPSB/W/D第6页电气工程学院电气工程学院DS:SIDS:SI 和和 ES:DIES:DI的当前元素比较的当前元素比较,并按并按DFDF标志标志修改地址。修改地址。当当前前元元素素相相等等?ZF标志置标志置1ZF标志置标志置0指令结束指令结束 CMPS 指令功能示意指令功能示意*指令的三个指令的三个动作动作:DS:SIES:DI (比较)(比较)SIN SI SIN SI (
11、修改)(修改)DIN DI DIN DI (修改)(修改)*带有重复前缀的串比较指令带有重复前缀的串比较指令 格式格式1:REPE CMPSB/W/D (REPE=REPZ)比较,如果比较,如果相等相等且且CX0,重复基本指令,重复基本指令CMPSB/W/DCX=0?CX-1 CX 比较当前元素比较当前元素 根据根据DF,修改,修改SI,DI当前元素相等?当前元素相等?第7页电气工程学院电气工程学院停止重复操作停止重复操作的条件的条件:重复次数计数器:重复次数计数器CX等于等于0或或ZF=0;CX等于等于0:计数器为计数器为0,应当停;,应当停;ZF=0:表明不相等,表明不相等,不满足不满足继
12、续比较的条件,即使继续比较的条件,即使CX不为不为0也应当停。也应当停。继续重复执行继续重复执行的条件的条件:重复次数计数器:重复次数计数器CX不等于不等于0且且标志标志ZF=1 在比较次数没有完成的情况下(在比较次数没有完成的情况下(CX不等于不等于0),又),又满足满足继续比较的继续比较的 条件(条件(ZF=1),所以应当继续。),所以应当继续。指令结束,若指令结束,若ZF=1,表明两个串,表明两个串完全相等完全相等;若若ZF=0,表明,表明至少有一个元素不相等至少有一个元素不相等格式格式2:REPNE CMPSB/W/D 比比较较,不相等不相等且且CX0,重复,重复执执行基本指令行基本指
13、令CMPSB/W/D 停止重复的条件停止重复的条件:重复次数计数器:重复次数计数器CX等于等于0或或ZF=1;CX等于等于0:计数器为计数器为0,应当停;,应当停;ZF=1:表明相等,表明相等,不满足不满足继续比较的条件,也应当停。继续比较的条件,也应当停。继续重复执行继续重复执行的条件的条件:重复次数计数器:重复次数计数器CX不等于不等于0且且标志标志ZF=0 在比较次数没有完成的情况下(在比较次数没有完成的情况下(CX不等于不等于0),又),又满足满足继续比较继续比较 的条件(的条件(ZF=0),所以应当继续。),所以应当继续。第8页电气工程学院电气工程学院CX=0?CX-1 CX 比较当
14、前元素比较当前元素 根据根据DF,修改,修改SI,DI当前元素相等?当前元素相等?指令结束,若指令结束,若ZF=0,表明两个串对应元素都不相等;,表明两个串对应元素都不相等;若若ZF=1,表明至少有一个元素相等,表明至少有一个元素相等配合核心指令配合核心指令REPE CMPSB的辅助指令的辅助指令例:例:比较比较ST1,ST2两个字符串,若二者相等,令两个字符串,若二者相等,令AL=0;不相等令;不相等令AL=FFH。设长度为。设长度为20字节。字节。MOV SI,OFFSET ST1 MOV DI,OFFSET ST2 MOV CX,20 CLD REPE CMPSB ;元素相等,重复比较元
15、素相等,重复比较,CX=0退出。退出。;如果有元素不相等,也退出如果有元素不相等,也退出 JNZ NEQU ;两个串不相等,转;两个串不相等,转 XOR AL,AL ;串相等,设置;串相等,设置AL=0 JMP FINISH ;无条件转;无条件转 NEQU:MOV AL,0FFH ;不相等,;不相等,AL=FF FINISH:HLT ;HALT,暂暂停停执执行指令行指令 第9页电气工程学院电气工程学院配合核心配合核心指令的辅指令的辅助指令助指令(5)串搜索指令)串搜索指令 SCAn String *基本格式:基本格式:SCASB/W/D 功能:功能:关键字关键字ES:DI (搜索(搜索/比较)
16、比较)DINDI (修改)(修改)*带重复前缀串带重复前缀串搜索搜索指令指令 格式格式1 REPE SCASB/W/D 功能:功能:比较结果比较结果相等相等,重复执行基本指令,重复执行基本指令SCASB/W/D 格式格式1 REPNE SCASB/W/D 功能:功能:比较结果比较结果不相等不相等,重复执行基本指令,重复执行基本指令SCASB/W/D例:例:FIRST DB -1,35,-75,55,5,-100,0,92,-8,10 MOV CX,10 ;MOV DI,OFFSET FIRST MOV AL,0 ;关键字;关键字 REPNE SCASB自己看自己看(6)从端口输入字符串指令)从
17、端口输入字符串指令(7)向端口输出字符串指令)向端口输出字符串指令第10页电气工程学院电气工程学院3.2.5 控制控制转转移指令移指令(1)无条件转移指令)无条件转移指令 JMP 。JMP 目的地址目的地址 。目的地址目的地址:。此类指令解决:此类指令解决:如何向如何向CPU提供提供目的地址目的地址的有关信息的有关信息 短转移(短转移(SHORT):):在段内的短距离(在段内的短距离(-128127)转移。)转移。段内转移(段内转移(NEAR):目标地址与转移指令都在同一段内。):目标地址与转移指令都在同一段内。段间转移(段间转移(FAR):):目标地址与转移指令分别位于不同的段内,目标地址与
18、转移指令分别位于不同的段内,转移时转移时CS和和IP(EIP)中的值都要发生改变)中的值都要发生改变。格式格式1:段段内内直接转移直接转移 JMP 标号标号 *在指令字节中,直接提供在指令字节中,直接提供目的地址目的地址的的偏移地址(有效地址)偏移地址(有效地址)格式格式2:段段内内间接转移间接转移 JMP 寄存器寄存器操作数操作数 JMP 存储器存储器操作数操作数*在指令字节中,把在指令字节中,把目的地址目的地址的的偏移地址(有效地址)偏移地址(有效地址)存放在存放在寄存器寄存器或或存储器存储器中。中。在指令中向在指令中向CPU提供的是提供的是寄存器寄存器或或存储器存储器地址信息。地址信息。
19、第11页电气工程学院电气工程学院例:段内例:段内间接转移间接转移指令的应用指令的应用DATA SEGMENT ORG 1000H PNTR DW P11 ;汇编后,;汇编后,P11的的偏移地址偏移地址送送PNTR字字单元单元 DW P12 ;P12 的的偏移地址偏移地址送送PNTR+2字字单元单元 ;(;(设设汇编后汇编后 P11偏移地址偏移地址=0039H ;P12的偏移地址的偏移地址=003BH)DATA ENDS TD 窗口窗口 DS:1000H 39 00 3B 00CODE SEGMENT ASSUME CS:CODE,DS:DATA START:.MOV BX,OFFSET PNT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符串 操作 指令
限制150内