汇编语言查找匹配字符串.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 PAGE 1 页 共 NUMPAGES 1 页 汇编语言 实验二 查找匹配字符串 一、目的 查找匹配字符串SEARCH 二、实验内容 程序接收用户键入的一个关键字以及一个句子。如果句子中不包含关键字则显示‘NO match!’;如果句子中包含关键字则显示‘MATCH’,且把该字在句子中的位置用十六进制数显示出来。 流程图 NY N Y Y Y 输入关键字 结束 关键字长度=0 输入句子 句子长度关键字长度 Y 保存关键字长度到cx,cx入栈,保存总循环次数(句子长度-关键字长度+1)到al,将句子的首地址放进bx(作为基址寄存器) si=di=0(变址寄存器) 开始比较[bx+di]与[si]是否相等 si+1,di+1,cx-1(同时指向下一个字符) Y N bx+1(句子指向下一个字符) cx出栈,再入栈,si,di清零,al-1 cx是否为0 N 匹配完成,调用子程序输出 al是否为0 不匹配,输出 开始 三、设计和编码 DATA SEGMENT mess1 DB Enter keyword:,$ mess2 DB Enter Sentence:,$ mess3 DB Match at location:,$ mess4 DB NOT MATCH.,13,10,$ mess5 DB H if the sentence,13,10,$ change DB 13,10,$ stoknin1 label byte max1 db 10 act1 db ? stokn1 db 10 dup(?) stoknin2 label byte max2 db 50 act2 db ? stokn2 db 50 dup(?) DATA ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODE SEGMENT ;*************************************代码段 main proc far assume cs:code,ds:data,es:data START: push ds sub AX,AX sub BX,BX sub DI,DI sub SI,SI push AX ;为返回dos并清空后面要用到的寄存器 MOV AX,DATA MOV DS,AX LEA DX,mess1 MOV ah,09 INT 21h ;输出Enter keyword LEA DX,stoknin1 MOV ah,0ah ;用21号中段的0ah号功能获取关键字 INT 21h cmp act1,0 je exit ;如果为空直接退出程序 a10: ;********************************输入Sentence并判断 LEA DX,change MOV ah,09 INT 21h ;输出回程,换行 LEA DX,mess2 MOV ah,09 INT 21h ;输出Enter Sentence: LEA DX,stoknin2 MOV ah,0ah INT 21h ;用21号中段的0ah号功能获取句子 MOV AL,act1 CBW MOV CX,AX ;保存关键字长度到cx PUSH CX ;cx入栈 MOV AL,act2 cmp AL,0 je a50 ;保存句子长度到al,若句子为空则跳转显示not match SUB AL,act1 js a50 ;若句子长度小于关键字长度,则跳转显示not match INC AL CBW L

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档