微机原理-第3章节7.pptVIP

  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文档。上传文档
查看更多
微机原理-第3章节7

本教案内容 3.13 字符串操作指令 LEA SI,BUFFER1 LEA DI,BUFFER2 MOV CX,100 REPNZ CMPSW JZ FOUND MOV ADDR,-1 JMP ELSE FOUND: SUB SI,2 MOV ADDR,SI ELSE: 字扫描时: (AX) - (ES:DI) 建立标志 (DI) ← (DI)±2 字节扫描时: (AL) - (ES:DI) 建立标志 (DI) ← (DI±1) SCAS DST SCAB SCAW 主要功能 助记符格式 3.13 字符串操作指令 四、字符串扫描指令 3.13 字符串操作指令 说明: SCAS指令与字符串比较指令类似,只是源操作数固定为AL或AX的内容。其它说明类似于字符串比较指令。 字符串扫描指令会正常影响PSW中的6个状态标志位,从而后续指令可以对比较结果进行判断与转移操作。因此SCAS指令经常与REPZ/REPE、REPNZ/REPNE配合使用,其含义有所不同。 3.13 字符串操作指令 1.REPZ SCAS 比较(AL)或(AX)的内容与目的字符串的内容,也就是在目的字符串中查找指定的字符(AL)或(AX),当找到第一个不相同的字符时,就跳出比较循环(ZF=0)。 2.REPNZ SCAS 比较(AL)或(AX)的内容与目的字符串的内容,也就是在目的字符串中查找指定的字符(AL)或(AX),当找到第一个相同的字符时,就跳出比较循环(ZF=1)。 3.13 字符串操作指令 例3.38 在字节型缓存区BUFFER中保存有20000个数据,要求在其中查找字符串“12345”(以ASCII码表示),并将其在BUFFER的偏移地址存放在ADDR单元中,如果没有找到,则将0FFFFH存放在ADDR中。 解:为了查找一串数据,首先应该在BUFFER中查找第一个数据,当找到后,再对后续的数据进行对比,如果恰好都相同,则表示找到了找到的字符串;如果有一个字符不相同,则应该回到刚才的位置继续查找第一个数据,这一点很重要,可以避免漏掉要查找的字符串。 3.13 字符串操作指令 例如在BUFFER中有这样的字符串:“112345”,就容易造成漏检,如图3.6所示,当找到第一个字符“1”时,DI指向位置“B”,接着与第二个字符“2”比较,发现两者不同,这时DI已经指向位置“C”,如果不恢复原来的地址进行搜索,则程序找不到第二个“1”,从而使该正确的字符串漏检。 3.13 字符串操作指令 数据段的内容为: BUFFER DB 20000 dup(?) ADDR dw ? STRING DB 12345‘ 并使DS和ES都指向该数据段,则设计的程序为: MOV ADDR,-1 LEA DI,BUFFER MOV CX,20000 MOV AL,STRING ;取第一个字符 STARTSEARCH: REPNZ SCASB ;查找第一个字符 JNZ NOFOUND LEA SI,STRING+1 PUSH CX ;保存搜索次数 PUSH DI ;保存搜索指针 MOV CX,4 ;比较后续字符 REPZ CMPSB POP DI ;恢复搜索指针 POP CX ;恢复搜索次数 JNZ STARTSEARCH FOUND: SUB DI,1 ;指针修正 MOV ADDR,DI NOFOUND: 字操作时:(AX) ← (DS:SI) (SI)← (SI)±2 字节操作时:(AL) ← (DS:SI) (SI)← (SI)±1 LODS SRC LODSB LODSW 主要功能 助记符格式 3.13 字符串操作指令 五、字符串装入指令 3.13 字符串操作指令 字符串装入指令不影响FLAG。 每次执行都会从源数据区取一个值送到(AL)或(AX),重复操作意味着后面装人的内容将覆盖前面装人的内容,因此LODS指令很少与重复前缀配合使用。 字操作时:(ES:DI) ←AX (DI)← (DI)±2 字节操作时:(ES:DI) ← (AL) (DI)← (DI)±1 STOS DST STOSB STOSW 主要功能 助记符格式 3.13 字符串操作指令 六、字符串存储指令 * * 第3章 8086CPU指令系统 汇编语言指令 8086指令分类 数据与转移地址的寻址方式 数据传送类指令 算术运算类指令 逻辑运算类指令 移位类指令 标志位操作

文档评论(0)

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

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

1亿VIP精品文档

相关文档