《汇编语言程序设计》-相伟-电子教案 第7章

上传人:E**** 文档编号:89401883 上传时间:2019-05-24 格式:PPT 页数:37 大小:92.50KB
返回 下载 相关 举报
《汇编语言程序设计》-相伟-电子教案 第7章_第1页
第1页 / 共37页
《汇编语言程序设计》-相伟-电子教案 第7章_第2页
第2页 / 共37页
《汇编语言程序设计》-相伟-电子教案 第7章_第3页
第3页 / 共37页
《汇编语言程序设计》-相伟-电子教案 第7章_第4页
第4页 / 共37页
《汇编语言程序设计》-相伟-电子教案 第7章_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《《汇编语言程序设计》-相伟-电子教案 第7章》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》-相伟-电子教案 第7章(37页珍藏版)》请在金锄头文库上搜索。

1、21世纪高等院校规划教材,汇编语言程序设计,相 伟 主编 徐小平 李珍香 副主编,中国水利水电出版社,第7章 串操作程序设计,本章学习目标,通过本章学习,读者应该掌握以下内容: 串传送指令及程序设计 串比较指令及程序设计 串扫描指令及程序设计 串元素的存取指令及程序设计,7.1 串操作概述,在汇编语言中,所谓“串”是指存储在内存中的一片连续存储区域的数据。这些数据可以是字节数据,也可以是字数据;可以是用ASCII码表示的字符串数据,也可以是用压缩的BCD码或者非压缩的 BCD码表示的十进制数据;可以是无符号数,也可以是带符号数。所谓串操作就是指8086/8088CPU提供的一组可以对“串”进行

2、处理的指令,它包括5个基本串操作指令和3个重复前缀指令。,1串操作指令, 串操作指令采用隐含寻址。指令可以不带操作数,但在使用指令前必须给指令所隐含使用的寄存器赋值。 MOVS指令和CMPS指令是双操作数指令。其中源操作数存放在数据段中,由DS指出数据段的首地址,由SI指出源操作数在数据段中的偏移地址;目的操作数存放在附加数据段中,由ES指出附加数据段的首地址,由DI指出目的操作数在附加数据段中的偏移地址。 LODS、STOS、SCAS指令都是单操作数指令。其中LODS指令的源操作数由DS:SI给出,目的操作数约定存放在AL或AX;STOS指令和SCAS指令的源操作数约定存放在AL或AX,目的

3、操作数由ES:DI给出。,重复前缀指令,例如: REP MOVSB REPE CMPSB REPNE SCASB,7.2 串传送指令及程序设计,1串传送指令 格式一:MOVS dest,src 指令的功能: 将SI指向的内存单元的值取出传送到DI指向的内存单元。 根据DF的值及串的类型是字节还是字修改SI和DI,使SI和DI指向串的下一个元素。,具体情况如下: DF=0且是字节串,则 SISI+1,DIDI+1; DF=0且是字串,则 SISI+2,DIDI+2; DF=1且是字节串,则SISI-1,DIDI-1; DF=1且是字串,则SISI-2,DIDI-2;,格式二: MOVSB MOV

4、SW 指令的功能: 将SI指向的内存单元的值取出传送到DI指向的内存单元。 根据DF的值及使用的指令是MOVSB 或MOVSW修改SI和DI,使SI和DI指向串的下一个元素。,具体情况如下: DF=0且使用MOVSB指令,则SISI+1,DIDI+1; DF=0且使用MOVSW指令,则SISI+2,DIDI+2; DF=1且使用MOVSB指令,则SISI-1,DIDI-1; DF=1且使用MOVSW指令,则SISI-2,DIDI-2;,串传送指令不影响状态标志位。,7.3 串比较指令及程序设计, 串比较指令 格式一: CMPS dest,src 指令的功能: 执行(SI)-(DI),根据执行结

5、果设置状态位,但执行结果不改变SI、DI所指向的内存单元的值。 据DF的值及定义串时的类型属性是字节还是字修改SI和DI,使SI和DI指向串处理方向的下一个元素。,具体情况如下: DF=0且是字节串,则SISI+1,DIDI+1; DF=0且是字串,则SISI+2,DIDI+2; DF=1且是字节串,则SISI-1,DIDI-1; DF=1且是字串,则SISI-2,DIDI-2;,使用格式一的条件: src是在数据段DS中定义的源串,dest是在附加数据段ES中定义的目的串。 指令规定用SI指向源串,用DI指向目的串。 根据具体情况决定串处理方向,根据串的处理方向设置DF的值。如果从串首到串尾

6、处理串,必须设置DF=0(CLD);如果从串尾到串首处理串,必须设置DF=1(STD);源串和目的串的处理方向是一致的。,格式二: CMPSB CMPSW 指令的功能: 执行(SI)-(DI),根据执行结果设置状态位,但执行结果不改变SI、DI所指向的内存单元的值。 根据DF的值及使用的指令是CMPSB 或CMPSW修改SI和DI,使SI和DI指向串搜索方向的下一个元素。,具体情况如下: 如果DF=0且使用CMPSB指令,则SISI+1,DIDI+1; 如果DF=0且使用CMPSW指令,则SISI+2,DIDI+2; 如果DF=1且使用CMPSB指令,则SISI-1,DIDI-1; 如果DF=

7、1且使用CMPSW指令,则SISI-2,DIDI-2;,使用格式二的条件: 源串在数据段DS中定义,目的串在附加数据段ES定义。 指令规定用SI指向源串,用DI指向目的串。 根据具体情况决定串的处理方向,根据串的处理方向设置DF的值。如果从串首到串尾处理串,必须设置DF=0(CLD);如果从串尾到串首处理串,必须设置DF=1(STD);源串和目的串的处理方向是一致的。,串比较指令影响所有的状态标志位。,7.4 串扫描指令及程序设计, 串扫描指令 格式一: SCAS dest 指令的功能: 对于字节串,执行(AL)-(DI);对于字串,执行(AX)-(DI)。根据指令的执行结果设置状态位,但执行

8、结果不改变DI所指向的内存单元的值。 据DF的值及串的类型是字节还是字修改DI,使DI指向串扫描方向的下一个元素。,具体情况如下: DF=0且是字节串,则DIDI+1; DF=0且是字串,则DIDI+2; DF=1且是字节串,则DIDI-1; DF=1且是字串,则DIDI-2;,使用格式一的条件: dest是在附加数据段ES中定义的目的串,SCAS指令的类型与定义变量dest的类型一致。 指令规定用DI指向目的串。 根据具体情况决定串扫描方向,根据串的扫描方向设置DF的值。如果从串首到串尾扫描串,必须设置DF=0(CLD);如果从串尾到串首扫描串,必须设置DF=1(STD);源串和目的串的扫描

9、方向是一致的。,格式二: SCASB SCASW 指令的功能: 对于字节串,执行(AL)-(DI);对于字串,执行(AX)-(DI)。根据执行结果设置状态位,但执行结果不改变DI所指向的内存单元的值。 根据DF的值及使用的指令是SCASB 或SCASW修改SI和DI,使SI和DI指向串处理方向的下一个元素。,使用格式二的条件: 目的串是在附加数据段ES定义的,根据串的类型选用指令SCASB 或者SCASW。 指令规定用DI指向目的串,DI的初始值指向串首或者串尾。 根据具体情况决定串的处理方向,根据串的处理方向设置DF的值。如果从串首到串尾处理串,必须设置DF=0(CLD),DI的初始值指向串

10、首;如果从串尾到串首处理串,必须设置DF=1(STD),DI的初始值指向串尾;源串和目的串的处理方向是一致的。,7.5 串元素的存取指令及程序设计,1串元素取指令 格式一: LODS src 指令的功能: 将SI指向的串元素的值取出传送到AL或AX中。 据DF的值及src的类型属性是字节还是字修改SI,使SI指向串处理方向的下一个串元素。,使用格式一的前提条件: src是在数据段DS中定义的源串,LODS指令的类型与定义变量src的类型一致。 规定用SI指向源串中一个元素。 根据具体情况决定串的处理方向,根据串的处理方向设置DF的值。如果从串首到串尾取串元素,必须设置DF=0(CLD);如果从

11、串尾到串首取串元素,必须设置DF=1(STD)。,格式二: LODSB LODSW 指令的功能: 将SI指向的串元素的值取出传送到AL或AX中。 根据DF的值及使用的指令是LODSB或者LODSW修改SI,使SI指向串处理方向的下一个串元素。,使用格式二的前提条件: 串必须在数据段DS中定义,根据串的定义类型选用指令LODSB或者LODSW。 指令规定用SI指向源串中待取的串元素。 根据具体情况决定串的处理方向,根据串的处理方向设置DF的值。如果从串首到串尾取串元素,必须设置DF=0(CLD);如果从串尾到串首取串元素,必须设置DF=1(STD)。,2串元素存指令 格式一: STOS dest

12、 指令的功能: 将AL或AX的值存入DI指向的内存单元。 据DF的值及串的类型是字节还是字修改DI,使DI指向串处理方向的下一个单元。,使用格式一的条件: dest是在附加数据段ES中定义的目的串,STOS指令的类型与定义变量dest的类型一致。 指令用DI指向目的串。 根据具体情况决定串的处理方向,根据串的处理方向设置DF的值。如果从串首到串尾存储串元素,必须设置DF=0(CLD);如果从串尾到串首存储串元素,必须设置DF=1(STD)。,格式二: STOSB STOSW 指令的功能: 将AL或AX的值存入DI指向的内存单元。 根据DF的值及使用的指令是STOSB 或STOSW修改DI,使DI指向串处理方向的下一个存储单元。,使用格式二的条件: 目的串是在附加数据段ES定义的。 指令规定用DI指向目的串中的一个存储单元。 根据具体情况决定串的处理方向,根据串的处理方向设置DF的值。如果从串首到串尾处理串,必须设置DF=0(CLD);如果从串尾到串首处理串,必须设置DF=1(STD)。 LODS指令和STOS指令不影响状态标志位。,小结,通过本章的学习,应熟悉掌握各种串操作指令的格式、功能和使用方法,正确理解并掌握重复前缀指令的使用。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号