- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言程序设计-------朱耀庭 第10章 串操作指令与程序设计 在程序设计过程中,往往需要对成片连续单元的字节或字数据进行移动和比较,以及从中搜索特定的字节或字等操作。 80X86提供了满足这一要求的串操作指令 80X86汇编语言中称存放在内存储器中的成片连续存储的数据为串,如果数据类型是字节则称作字节字符串,如果数据类型是字则称作字字符串,在不引起混淆的情况下统称为字符串。 本章将介绍有关串的定义、串操作指令,以及串操作的应用等内容。 第10章 串操作指令与程序设计 10.1 字符串操作综述 1. 串的定义 字符串是指存储器中连续存储的字节或字数据序列 例如: S1 DB ’HELLO WORLD!′ S2 DB ’5’, ’6’, ’7’, ’8′ S3 DW 9, 5, 2, 7 S4 DB 100 DUP (0) S5 DW 50 DUP (?) 以上变量定义的都是串 其中S1、S2和S4是用DB定义的字节串,S3和S5是用DW定义的字串。 2. 串操作指令概述 字符串操作有5种基本的操作指令,称为基本字符串指令。 字符串指令是对字节串或字串进行操作,每次处理一个元素(字节或字)。 基本字符串指令包括: MOVS 传送字节或字的字符串指令 CMPS 比较字节或字的字符串指令 SCAS 搜索字节或字的字符串指令 LODS 取字节或字的字符串指令 STOS 存字节或字的字符串指令 2. 串操作指令概述 利用这些指令最多可以处理64K字节长的字符串。 字符串指令可以对字符串的某个元素(字节或字)进行传送、比较、搜索,以及将字符串元素取至累加器(AL、AX或EAX)中和将累加器(AL、AX或EAX)中的值存入字符串(存储器字节、字或双字)。 字符串指令可以有一个源操作数(源串)、一个目的操作数(目标串)或二者均有。 源串是指由DS:SI指向的字节或字符串 目标串是指由ES:DI指向的字节或字符串 2. 串操作指令概述 源串是在成片移动时的数据源 目标串是在成片移动时的目标,即将源串中的字节或字逐个移动到目标串对应的位置。 串比较是指源串与目标串的逐个元素的比较。 串搜索是指在目标串中搜索与指定的字节或字是否有匹配的字节或字,被搜索的字节要求存放在AL中,而被搜索的字则要求存放在AX中。 2. 串操作指令概述 无论是串传送指令MOVS,串比较指令CMPS,还是串搜索指令SCANS,每执行一次串操作指令,其源串指针SI、目标串指针DI都自动修改指向下一个操作的字节或字。 如果是字节操作,其增量为正负1;如果是字操作则增量为正负2。增量为正,表示下一次操作指向高地址,称作正向串操作,由标志寄存器的DF=0决定,可以通过指令CLD置DF=0;增量为负,表示下一次操作指向低地址,称作负向串操作,由标志寄存器的DF=1决定,可以通过指令STD置DF=1。 2. 串操作指令概述 下面通过几个实例说明串操作指令与一般MOV指令实现数据传送的区别: 例10-1 MOV指令应用实例 题目:将串S1从数据段传送到辅助数据段中的串S2中去。 设计思路:用MOV指令实现数据移动,DS:SI指向S1源串,ES:DI指向S2目标串,每移动一次数据,SI和DI分别加1,用LOOP指令实现所有数据的传送。 2. 串操作指令概述 例10-2 LODSB和STOSB串操作指令应用实例 题目:功能同例10-1 设计思路:S1作为源串,S2作为目标串,用串操作LODSB和STOSB实现串数据传送。 2. 串操作指令概述 例10-3 MOVSB串操作指令应用实例 题目:功能同例10-1 设计思路:S1作为源串,S2作为目标串,用MOVSB实现串数据传送 2. 串操作指令概述 例10-4 REP MOVSB串操作指令应用实例。 题目:功能同例10-1。 设计思路:S1作为源串,S2作为目标串,用REP MOVSB实现串数据传送。 2. 串操作指令概述 例10-1中的如下程序段,可以用串操作中的3种方法来替代。 L: MOV AL,[SI] MOV ES:[DI],AL INC SI INC DI LOOP L ●方法一: L: LODSB STOSB LOOP L 2. 串操作指令概述 ●方法二: L: MOVSB LOO
文档评论(0)