汇编语言第4篇王爽版程序设计(字符串).pptVIP

汇编语言第4篇王爽版程序设计(字符串).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 汇编语言程序设计 六、数据串处理指令   计算机更多的是要进行一些数据处理,主要的是字符串的处理。 串操作指令概括说明 为什么要用:数据传送类指令每次只能传送一个数据,若要传送大批数据就需要重复编程(通过循环来实现),这样就浪费了大量的时间和空间。为此8086提供了一组处理内存中连续存放数据的串指令,这就是串操作指令。 串寻址方式 名称:“S”、“B”、“W” 格式:提供3种格式,常用的有2种。 隐含的都是双操作数指令 源操作数用寄存器SI寻址,默认在数据段DS中, DS:[SI],但允许段超越 目的操作数用寄存器DI寻址,默认在附加段ES中, ES:[DI],不允许段超越 每执行一次串操作指令,SI和DI值将自动修改: ±1(对于字节串)或±2(对于字串) 执行指令CLD指令后,DF = 0,地址指针增1或2 执行指令STD指令后,DF = 1,地址指针减1或2 串操作类指令 串传送MOVS 功能:将以SI为指针的源串中的一个字节(或字)存储单元中的数据传送至以DI为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储单元。 即:① DS:[SI]→ES:[DI]。 ② 当DF=0时,SI和DI自动增量;当DF=1时,SI和DI自动减量。 例1:字节串传送 mov si,offset source mov di,offset destination mov cx,100 ;cx←传送次数 cld ;置DF=0,地址增加 again: movsb ;传送一个字节 dec cx ;传送次数减1 jnz again ;判断传送次数cx是否为0 ;不为0,则到again位置执行指令 ;否则,结束 例2:字串传送 mov si,offset source mov di,offset destination mov cx,50 ;cx←传送次数 cld ;置DF=0,地址增加 again: movsw ;传送一个字 dec cx ;传送次数减1 jnz again ;判断传送次数cx是否为0 ;不为0,则到again位置执行指令 ;否则,结束 串读取LODS 功能:将SI所指的源串中的一个字节(或字)存储单元中的数据取出来送入AL(或AX)中。 即:① 字节操作:[SI]→AL,字操作:[SI]→AX。   ② 修改指针SI,使它指向串中的下一个元素。   当DF=0时,SI增量。当DF=1时,SI减量。 串存储STOS 例3:串存储 mov ax,0 mov di,0 mov cx,1000h cld ;DF=0,地址增加 again: stosw ;传送一个字 loop again ;传送次数cx是否为0 串比较CMPS 功能:将SI所指的源串中的一个字节(或字)存储单元中的数据与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,并根据相减的结果设置标志,但结果并不保存。 即:①([SI])-([DI])。 ② 修改串指针,使之指向串中的下一个元素。 当DF=0时,(SI)和(DI)增量。 当DF=1时,(SI)和(DI)减量。 例4:字符串比较 mov si,offset string1 mov di,offset string2 mov cx,count cld again: cmpsb ;比较两个字符 jnz unmat ;有不同字符,转移 dec cx jnz again ;进行下一个字符比较 mov al,0 ;字符串相等,设置00h jmp output ;转向output unmat: mov al,0ffh ;设置ffh output: mov result,al ;输出结果标记 串扫描SCAS 功能:AL(字节)或AX(字)中的内容与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,根据相减结果设置标志位,结果不保存。 即:   ① 字节操作:(AL)-([DI]),字操作:(AX)-([DI])。   ② 修改指针使之指向串中的下一个元素。   当DF=0时,(DI)增量。当DF=1时,(DI)减量。 例:查找字符串 利用scas指令可以进行搜索。把要搜索的关键字放在AL或AX中,用以搜索内存的某一数据块或字符串中,有无此关键字,若有,则把搜索次数记下来(若次数为0,表示无要搜索的关键字),并且记录下存放关键字的地址。  程序一开始,当然要设置数据块的地址指针( scas指令要求设在DI中),要设立数据块的长度(要求设在CX中),把关键字送入AL或AX中。利用Z标志以判断是否搜索到,以便分别处理。 例3:查找字符串 mov di,offset string mov al,20h ;空格的ASCII码值

文档评论(0)

0520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档