《汇编语言程序设计》第十章串操作指令与程序设计.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例10-4 REP MOVSB串操作指令应用实例
程序说明:与例 10-1 、 10-2 、 10-3 比较,本例更简单。 MOVSB ,再加上一个重复前缀,那么整个循环的重复部 分、修改部分、控制部分用一条指令即可: REP MOVSB。
南开大学 朱耀庭
2. 串操作指令概述
南开大学 朱耀庭
2. 串操作指令概述
无论是串传送指令 MOVS,串比较指令 CMPS,还是串搜 索指令 SCANS ,每执行一次串操作指令,其源串指针 SI 、 目标串指针DI都自动修改指向下一个操作的字节或字。 如果是字节操作,其增量为正负 1;如果是字操作则增量 为正负 2。增量为正,表示下一次操作指向高地址,称作 正向串操作,由标志寄存器的 DF=0 决定,可以通过指令 CLD 置 DF=0 ;增量为负,表示下一次操作指向低地址, 称作负向串操作,由标志寄存器的 DF=1 决定,可以通过 指令STD置DF=1。
例10-2 LODSB和STOSB串操作指令应用实例
程序说明:试比较例10-1 与例10-2黑体字部分的不 同
www.ຫໍສະໝຸດ
南开大学 朱耀庭
2. 串操作指令概述
例10-3 MOVSB串操作指令应用实例 题目:功能同例10-1 设计思路:S1作为源串,S2作为目标串,用MOVSB实现 串数据传送
南开大学 朱耀庭
2. 串操作指令概述
利用这些指令最多可以处理64K字节长的字符串。 字符串指令可以对字符串的某个元素(字节或字)进行传送、 比较、搜索,以及将字符串元素取至累加器(AL、AX或 EAX)中和将累加器(AL、AX或EAX)中的值存入字符串(存 储器字节、字或双字)。 字符串指令可以有一个源操作数(源串)、一个目的操作数 (目标串)或二者均有。 源串是指由DS:SI指向的字节或字符串 目标串是指由ES:DI指向的字节或字符串
例10-3 MOVSB串操作指令应用实例
程序说明:注意本例与例10-1 与例10-2黑体字部分 的区别
南开大学 朱耀庭
2. 串操作指令概述
例10-4 REP MOVSB串操作指令应用实例。 题目:功能同例10-1。 设计思路:S1作为源串,S2作为目标串,用REP MOVSB实现串数据传送。
例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 LOOP L ●方法三: REP MOVSB 由此可见,REP MOVSB一条指令就可以实现原来的一段 循环程序。这就是串操作的优点,也是指令系统的一种改 进,即循环程序以指令化的形式出现。 可见硬件重复比通过指令序列来实现对字节串或字串的循 环处理要简便许多。
程序说明:以上程序如果用字符串传送指令 LODSB 和STOSB来实现,程序可以修改为例10-2所示
南开大学 朱耀庭
2. 串操作指令概述
例10-2 LODSB和STOSB串操作指令应用实例 题目:功能同例10-1 设计思路:S1作为源串,S2作为目标串,用串操作 LODSB和STOSB实现串数据传送。
汇编语言程序设计
-------朱耀庭 ---------朱耀庭
第10章 串操作指令与程序设计
在程序设计过程中,往往需要对成片连续单元的字节或字 数据进行移动和比较,以及从中搜索特定的字节或字等操 作。 80X86提供了满足这一要求的串操作指令 80X86汇编语言中称存放在内存储器中的成片连续存储的 数据为串,如果数据类型是字节则称作字节字符串,如果 数据类型是字则称作字字符串,在不引起混淆的情况下统 称为字符串。 本章将介绍有关串的定义、串操作指令,以及串操作的应 用等内容。
南开大学 朱耀庭
第10章 串操作指令与程序设计
10.1 字符串操作综述
10.2 字符串操作指令
10.3 串操作指令的重复前缀
南开大学 朱耀庭
10.1 字符串操作综述
1
串的定义
2
串操作指令概述
南开大学 朱耀庭
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. 串操作指令概述
源串是在成片移动时的数据源 目标串是在成片移动时的目标,即将源串中的字节或字逐 个移动到目标串对应的位置。 串比较是指源串与目标串的逐个元素的比较。 串搜索是指在目标串中搜索与指定的字节或字是否有匹配 的字节或字,被搜索的字节要求存放在 AL 中,而被搜索 的字则要求存放在AX中。
南开大学 朱耀庭
2. 串操作指令概述
下面通过几个实例说明串操作指令与一般MOV指令实现数 据传送的区别: 例10-1 MOV指令应用实例 题目:将串S1从数据段传送到辅助数据段中的串S2中去。 设计思路:用MOV指令实现数据移动,DS:SI指向S1源串, ES:DI指向S2目标串,每移动一次数据,SI和DI分别加1, 用LOOP指令实现所有数据的传送。 例10-1 MOV指令应用实例
南开大学 朱耀庭
2. 串操作指令概述
字符串操作有5种基本的操作指令,称为基本字符串指令。 字符串指令是对字节串或字串进行操作,每次处理一个元 素(字节或字)。 MOVS CMPS SCAS LODS STOS 存字节或字的字符串指令