汇编语言查找匹配字符串.doc_第1页
汇编语言查找匹配字符串.doc_第2页
汇编语言查找匹配字符串.doc_第3页
汇编语言查找匹配字符串.doc_第4页
汇编语言查找匹配字符串.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言 实验二 查找匹配字符串一、目的查找匹配字符串SEARCH二、实验内容程序接收用户键入的一个关键字以及一个句子。如果句子中不包含关键字则显示NO match!;如果句子中包含关键字则显示MATCH,且把该字在句子中的位置用十六进制数显示出来。 流程图 NYYY输入关键字结束关键字长度=0输入句子句子长度关键字长度Y保存关键字长度到cx,cx入栈,保存总循环次数(句子长度-关键字长度+1)到al,将句子的首地址放进bx(作为基址寄存器) si=di=0(变址寄存器)开始比较bx+di与si是否相等si+1,di+1,cx-1(同时指向下一个字符)YNbx+1(句子指向下一个字符) cx出栈,再入栈,si,di清零,al-1cx是否为0N匹配完成,调用子程序输出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 ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODE SEGMENT;*代码段main proc far assume cs:code,ds:data,es:dataSTART: 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 LEA BX,stokn2 ;将句子的首地址放进BX MOV DI,0 MOV SI,0a20:;*比较,内循环 MOV AH,BX+DI CMP AH,stokn1SI ;遇见字符不相等就跳转到a30 jne a30 INC DI INC SI DEC CX ;没遇到一个相等的字符,cx-1,cx不为0则比较下一个字符,当cx为0是说明关键字比较完 CMP CX,0 je a40 jmp a20a30:;*外循环,BX+1,清空si,di继续内循环比较 INC BX DEC AL cmp AL,0 je a50 MOV DI,0 MOV SI,0 POP CX push CX jmp a20a40: ;*match,将bx减去句子的首地址加一得到关键字所在位置,调用二进制转十六进制子函数将位置输出 SUB BX,offset stokn2 INC BX LEA DX,change MOV ah,09 INT 21h LEA DX,mess3 MOV ah,09 INT 21h CALL btoh LEA DX,mess5 MOV ah,09 INT 21h jmp a10 ;*二进制转换十六进制btoh PROC NEAR MOV CH,4rotate: MOV CL,4 ROL BX,CL MOV AL,BL and AL,0fh add AL,30h cmp al,3ah jl printit add al,7h printit: MOV dl,al MOV ah,2 int 21h dec ch jnz rotate ret btoh endpa50:;*显示not match LEA DX,change MOV ah,0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论