第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文档。上传文档
查看更多
1. 取串指令 由于源串是由SI指定,如果程序中在执行该指令时已经明确是字或字节,则可以用无操作数指令LODSB(字节操作)或LODSW(字操作)替代。 该指令执行后对标志无影响。 指令格式: LODS 源串 将源串中的一个字(或字节)内容送入AX(或AL)中,并根据DF修改SI。 功能: 2. 存串指令 同样,指令可以用无操作数指令STOSB或STOSW替代。 该指令对标志无影响。 STOS 目的串 指令格式: 功能: 将AX(或AL)中的内容送入目的串中的一个字单元(或字节单元),并根据DF修改DI。 3. 串传送指令 MOVS 目的串,源串 同样,指令可以用无操作数指令MOVSB或MOVSW替代。 指令对标志无影响 指令格式: 功能: 将由SI指向的源串的一个字(或字节)传送到DI所指向的目的串中。并根据DF修改SI和DI。 4. 串比较指令 CMPS 源串,目的串 将源串中的一个字(或字节)减去目的串中的一个字(或字节),结果不回送。但将影响标志寄存器。同时,将根据DF修改SI和DI。 指令格式: 同样,指令可以用无操作数指令CMPSB或CMPSW替代。 功能: 5、串搜索指令 SCAS 目的串 查找的方法:用AX(或AL)的内容减去目的串中的一个字(或字节),相减的结果反映在标志寄存器中。每查找一次,将按照DF修改DI。 指令格式: 功能: 在目的串中查找AX或AL指定的内容。 同样,指令可以用无操作数指令SCASB或SCASW替代。 6、重复前缀指令 REP 重复操作的次数由CX控制,每执行一次串操作指令,CX内容减1,直到CX内容为0。 指令格式: 为了方便对若干个字或字节进行多次同样的操作,可在上述各种指令的前面加上REP指令。 例如:REP MOVSB 设在执行该指令前,DF=0,(SI)=0020H,(DI)=100H,(CX)=0030H。 LOP:MOV AL,[SI] MOV ES:[DI],AL INC SI INC DI LOOP LOP 执行该指令将使数据段中从0020H开始的30H个字节传送到附加段从0100H开始的存储区。 如果改成不使用串操作指令,则它相当于下面的程序段: REPE/REPZ 重复执行串操作指令的条件是:(CX)≠0和ZF=1 由于这两条指令的执行要由标志位ZF来控制结束,而LODS、STOS和MOVS三条指令不影响标志,因此不适合与这些指令配合使用。 另外还有两条重复前缀指令: REPNE/REPNZ 重复执行串操作指令的条件是: (CX)≠0和ZF=0 二. 串操作指令应用举例 例1 试编制一程序,在TXTBUF字符串中查找STRING变量指定的字符。若查到,则把该字符所在位置(1~n)送入INDEX单元中。若未查到,则把0FFH送INDEX单元中。 DATA SEGMENT TXTBUF DB ABCDEFGHIJKLMNOP CUNT EQU $-TXTBUF STRING DB G INDEX DB ? DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV DI,OFFSET TXTBUF;取目的串首址 MOV CX,CUNT MOV AL,STRING CLD REPNE SCASB;查找字符 MOV BL,0FFH JNE END0 ;未查到,ZF=0,转移 SUB DI,OFFSET TXTBUF;DI指向了后一个字符 MOV BX,DI END0:MOV INDEX,BL MOV AH,4CH INT 21H CODE ENDS END START 例2 试编写一程序,确定某子字符串是否在另一字符串中存在。若在,则记录其所在起始位置。若不在则设置标志0FFH。 该例是上例的更一般情况。 开始 BX=比较次数 SI,AX=源串首址 CX=子串长度 DI=子串首址 CF=0 源串与子串比较 相同? AX=子串位置 INDE

文档评论(0)

高考学子 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档