汇编语言第五章 程序设计的其它方法和技术.docVIP

汇编语言第五章 程序设计的其它方法和技术.doc

  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文档。上传文档
查看更多
程序设计的其它方法和技术本章内容:串处理宏指令模块化程序设计。字符串操作串:存贮区连续存放的一组字节或字组成的数据。可以是字符、数字等。串的基本操作:传送MOVS、搜索SCAS、比较CMPS、存贮STOS、取LODS。目的:简化编程。使用串指令的初始条件:源操作数用DS:[SI]寻址;目的操作数用ES:[DI]寻址;传送、搜索、存贮、取串的方向由DF标志决定;CLD指令:清方向标志,DF=0,使SI、DI增量修改; STD指令:置方向标志,DF=1,使SI、DI减量修改。串指令前面可使用重复操作前缀。重复前缀:REP无条件重复。执行操作:如(CX)=0则退出REP,否则往下执行。(CX)–1→CX。执行其后的串指令(MOVS、LODS、STOS)。重复①~③。REPE / REPZ比较相等或为0时重复,执行操作:如(CX)=0或ZF=0(即某次比较的结果两操作数不等),则退出,否则往下执行。(CX)–1→CX。执行其后的串指令(CMPS、SCAS)。重复①~③。REPNE / REPNZ当不相等或不为0时重复,执行操作:(CX)=0或ZF=1(即某次比较的结果两操作数相等),则退出,否则往下执行。(CX)–1→CX。执行其后的串指令(CMPS、SCAS)。重复①~③。串传送指令格式:MOVS OPD, OPSMOVSB; 字节串传送MOVSW; 字串传送功能:DS:[SI] → ES:[DI]。当DF=0时,SI+1(或2)→SI,DI+1(或2)→DI;当DF=1时,SI–1(或2)→SI,DI–1(或2)→DI。例:将以STR1为首址的字节存贮区中存放的字符串送到STR2为首址的字节存贮区中。DATA SEGMENTSTR1 DB DATA SEGMENTSTR1 DB ‘ABCD’CON EQU $–STR1STR2 DB CON DUP(0)DATA ENDS; CODE SEGMENT ASSUME DS:DATA, CS: CODE, ES:DATASTART: MOV AX, DATA MOV DS, AX MOV ES, AX LEA SI, STR1 LEA DI, STR2 MOV CX, CON CLD REP MOVSB MOV AH, 4CH INT 21HCODE ENDS END START语句:REP MOVSB语句:REP MOVSB可写为:L1: MOV AX, STR1[SI] MOV STR2[DI], AX INC SI INC DI DEC CX JNZ L1串比较指令格式:CMP OPD, OPSCMPSB; 字节串比较CMPSW; 字串比较功能:([SI])―([DI])影响标志位。当DF=0时,SI+1(或2)→SI,DI+1(或2)→DI;当DF=1时,SI–1(或2)→SI,DI–1(或2)→DI。例:从键盘输入一字符串STR1,比较STR1和STR2是否相等。如果相等,则将0→BX,否则将FFFFH→BX。DATA SEGMENTSTR1 DB 80DATA SEGMENTSTR1 DB 80 DB 0 DB 80 DUP(0)STR2 DB ‘STRING’CON EQU $–STR2DATA ENDS; CODE SEGMENT ASSUME DS:DATA, ES:DATA, CS:CODESTART: MOV AX, DATA MOV DS, AX MOV ES, AX LEA DX, STR1 MOV AH, 10 INT 21H MOV AL, STR1+1; 比较数组长度 CMP AL, CON JNE EXIT LEA SI, STR1+2 LEA DI, STR2 MOV CX, CON CLD REPZ CMPSB; 逐个比较是否相等 JNE EXIT; 不等,转EXIT MOV BX, 0 JMP L1EXIT: MOV BX, 0FFFFHL1: MOV AH, 4CH INT 21HCODE ENDS END START注意:REPZ CMPSBJNE EXIT其中:JNE判断的不是CX–1的情况,而是([SI])―([DI])的情况。串搜索指令格式:SCAS OPDSCASB; 字节SCASW; 字串功能:AL(字节)或AX(字)-([DI])结果不回送,影响标志位。当DF=0时,DI+1(或2)→DI;当DF=1时,DI–1(或2)→DI。例:在字节字符串STR中搜索子串“AM”出现的次数,并将结果送入BX。分析:先在串中找到’A’,判断下一个是否为’M’。如果是,则表明找到一个’AM’,然后继续向下找。DATA SEGMENTSTR DB DATA SEG

文档评论(0)

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

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

1亿VIP精品文档

相关文档