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

第五章汇编语言中的字符串、代码转换.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章 汇编语言程序中的字符串、代码转换与列表;返回本章目录;返回本节; 字符串所能包含的字符,依赖于具体机器的字符集。目前世界上应用最广的字符集是ASCII码字符集。 存储字符串的方法也就是存储列表的一般方法。最简单最普遍的方法是顺序存储,还有链接存储等,这里仅讨论顺序存储的字符串。 字符串的表示在8086/8088宏汇编语言中,可以借助数据定义语句DB(因一个ASCII码是7位)来定义,字符串的特征表示一般有两种,一种是在字符串的尾部用00H作标记,另一种是在字符串的前面空出一个单元,放置字符串的长度。例: STRI DB ’ I am a student’,0 STR2 DB 4,’ABCD’;2.串操作指令; ;(3)STOS存入串指令 格式: STOS DST; 源串元素隐含在AL或AX,目的串元素由ES:DI指定 STOSB(字节); 8位字符串操作,省略源串和目的串不写 STOSW(字); 16位字符串操作,省略源串和目的串不写 功能:该指令把AL或AX的内容(源串元素)存入由DI指定的附加段ES的某单元(目的串元素)中,并根据DF的值及数据类型修改DI的内容。 说明: 1)如果是字节操作则先将AL的内容存入DI指定的附加段的某单元[DI]中,然后DI再自加/减1;如果是字操作则将AX的内容存入DI指定的附加段的某单元[DI],然后DI再自加/减2。 2)该指令不影响标志位。;3.LODS取串指令;5. SCAS串搜索指令;4. CMPS串比较指令;5.1.2 字符串运算;例题:;编写程序,可以想得到,需要MOV、LEA 、CMP 、JZ、INC和JMP等指令。最后要返回DOS。未想到的,在编写过程中随时添加,如XOR指令等。 具体程序如下: DATA SEGMENT STR DB ’I live in Anshan’,00H ;定义字符串STR,以00H结束 LEN DB ? ;定义存放字符串长度的存储单元LEN DATA ENDS CODE SEGMENT ASSUME CS:CSEG,DS:DSEG START: SLEN: MOV AX,DATA MOV DS,AX ;数据段初始化 LEA SI,STR ;取字符串起始偏移地址送寄存器SI,定位 XOR AL,AL ;字符串长度计数器AL清0 ;画程序流程图:略。解题步骤如下: (1)取串首地址作指针; (2)设置计数器,供计算串长之用; (3)指针指向内容为00H ? 是,转6; (4)计数器加1,指针加1; (5)转3; (6)保存计数结果; (7)结束。 确定汇编语言程序的基本框架:可见,该汇编语言程序的基本框架至少要两个段: 数据段和代码段。数据段中至少定义2个变量:一个字符串变量STR,实际上是一个数组变量,每个字符的ASCII码为(7+1)位数,应选DB 类型。用寄存器SI定位。还有一个变量LEN,定义为存放字符串长度的存储单元,8位数已足够,选DB类型。其中间结果放在寄存器AL。;LOP: CMP BYTE PTR[SI],00H ;逐个比较字符串的每个字符,看其的ASCII 值是否大于00H,以此判定串结束与否 JZ DONE ;若不大于00H,而是等于,则转DONE语句 INC AL ;AL ←AL +1,计数器AL累加 INC SI ;SI ←SI+1,移到下一个字符 JMP LOP ;跳到LOP语句循环 DONE:MOV LEN,AL ;保存结果 MOV AH,4CH INT 21H CODE ENDS END SLEN 计算串长的程序也可以通过串搜索指令来实现,程序会更简洁,读者可自己试写出程序。;2.字符串的比较;画程序流程图:略。解题步骤如下: (1)设置串首址指针1和指针2; (2)置FLAG单元为0; (3)串1或串2结束吗?是,转8; (4)指针1指向内容等于指针2指向内容?否,转7; (5)指针1和指针2;0IJl; (6)转(3); (7)若指针1指向内容指针2指向内容?则FLAG为1,否则为FFH; (8)结束。 确定汇编语言程序的基本框架:可见,该汇编语言程序的基本框架至少要两个段: 数据段和代码段。数据段中至少定义4个变量:两个字符串变量STR 1和STR 2,实际上是两个数组变量,每个字符的ASCII码为(7+1)位数,应选DB 类型。分

文档评论(0)

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

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

1亿VIP精品文档

相关文档