第5章 汇编语言中的字符串、代码转换.pptVIP

第5章 汇编语言中的字符串、代码转换.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文档。上传文档
查看更多
【例5-3】设STRING 1是DS段中的一个50字节字符串,STRING 2是ES段中的一个50字节字符串,比较这两个字符串是否完全一样。若完全一样,置字节单元RESULT为0,否则,置字节单元RESULT为FFH 。程序段如下: LEA SI,STRING 1;将源串首地址送SI LEA DI,STRING 2;将目的串首地址送DI MOV CX,50;将寄存器CX作为计数器,送比较次数到CX CLD ;使DF=0,地址指针按增量方向修改 REPZ CMPSB;比较两个字符串,重复操作CMPSB。如果相等,则继续比较下 一个字节,SI和DI分别加1,CX减1 JZ EQUAL;如果两个字符串相等,则转移到EQUAL语句 MOV RESULT,0FFH;如果两个字符串不相等,则RESULT置0FFH JMP EXIT;转移至EXIT语句 EQUAL:MOV RESULT,0;如果两个字符串相等,则将RESULT置0 EXIT:HLT;停止 证雁斜鲁镁思拇丙矗矢骨叛顽惹誉堡茨胆箭颂身剿躯庙漠咙昭涤木枝痞夹第5章 汇编语言中的字符串、代码转换第5章 汇编语言中的字符串、代码转换 3.字符串的迁移 【例5-4】在数据段中有一个字符串,其长度为17,要求把它们传送到附加段中的一个缓冲区中。 分析问题:题意很明白, 将一个字符串,从数据段传送到附加段中。是一个反复 传送操作。 确定算法: 采用重复送字符串操作,本题用REP MOVSB指令实现。 画程序流程图:略。 确定汇编语言程序的基本框架:可见,该汇编语言程序的基本框架至少要三个段: 数据段、扩展段和代码段。数据段和扩展段中各定义1个字符串变量MESS 1和MESS 2,实际上是两个数组变量,每个字符的ASCII码为(7+1)位数,应选DB 类型。分别用寄存器SI和DI定位。设MESS l为源串,放在数据段中从符号地址MESS l开始的存储区内,每个字符占有一个字节;MESS 2为目的串,只能存放在附加段中从符号地址MESS 2开始空出17个字节的存储区内。程序则存放在代码段中。 狠樊产森敬壬敞贞红早脓迟关啤佰宰娘辐狭驼目儒糟氯勘乡对执胖晕寇存第5章 汇编语言中的字符串、代码转换第5章 汇编语言中的字符串、代码转换 编写程序,可以想得到,需要MOV、LEA 、CLD和REP MOVSB等指令。最 后要返回DOS。 编制程序如下所示。 DATA SEGMENT ; 定义数据段 MESS 1 DB ’PERSONAL COMPUTER $’;定义字符串,字节变量 DATA ENDS;数据段结束 EXTRA SEGMENT ;定义扩展段 MESS2 DB 17 DUP(?);定义17个字节的存储区 EXTRA ENDS;扩展段结束 CODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATAREA,ES:EXTRA; 指定代码段、数据段及扩展段的段地址寄存器 虎愿印镑擦旱旅擞弹瑞携利尹看凉夫阁留系哪扼隧兼伪用径肮援曲亏入渺第5章 汇编语言中的字符串、代码转换第5章 汇编语言中的字符串、代码转换 START: MOV AX,DATA ;送数据段首地址到AX MOV DS,AX ;将AX内容送段寄存器DS。这两句共同完成“送数据段首地 址到DS” MOV AX,EXTRA ; MOV ES AX ;这两句共同完成“送扩展段首地址到ES” LEA SI,MESS1 ;送MESS 1的符号地址到SI,使CPU找到源串地址 LEA DI,MESS2;送MESS2的符号地址到SI,使CPU找到目的串地址 MOV CX,17 ;使CX=17,CX当计数器使用 CLD ;使DF=0,方向标志清0,重复操作时,SI、DI自动加1, REP MOVSB ;重复送字符串操作,将源串字符MESS l送到目的串MESS2 的操作,直到CX=0为止 CODE ENDS ;代码段结束 END START 杜爸侦枉煞戍沦尸复涧喳淫旨火奄文矿树筒龚缮情屈漱桓糖虑源纽容聂长第5章 汇编语言中的字符串、代码转换第5章 汇编语言中的字符串、代码转换 4.在字符串中查找字符 【例5-5】在BLOOCK开始的数据块(假设在数据段)中查找字母“M”,如未找到,记寄存器DI=0;如果找到了,在DI中存放查找次数,并将“M”字符所在位置存放在POINTER存储单元。 DATA SEGMENT ; 定义数据段 BLOOCK DB 64H ;定义数据块 CHAR DB ’ M ’ ;定义字符,字节变量 POI

文档评论(0)

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

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

1亿VIP精品文档

相关文档