微机原理实验三 字符串匹配程序.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三字符串匹配程序
教学目标:通过教学让学生掌握显示提示信息的方法及接收键盘输入信息的方法。
重点、难点:
重点:字符串匹配的算法,用INT 21H 的09号子功能显示提示信息,用INT 21H的0A号子功能接收字符
难点:用INT 21H的0A号子功能接收字符
课时安排:2学时
教学过程:讲解实验过程
一实验目的:
掌握显示提示信息的方法及接收键盘输入信息的方法
二实验内容:
编写程序,实现两个字符串的比较。如相同,则显示“MATCH”,否则,显示”NO MATCH”.
三程序框图(讲解流程图,介绍编写程序的思路)
四实验原理
1、讲解DB、DUP、EQU等伪指令的功能以及使用格式
2、讲解INT 21H 的09H子功能的功能、工作情况以及使用格式
3、讲解INT 21H的0AH子功能的功能、工作情况以及使用格式
4、讲解串扫描指令SCASB的功能以及使用格式
5、入栈、出栈指令PUSH 、POP的使用情况
五实验参考程序
CRLF MACRO
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
DATA SEGMENT
MESS1 DB 'MA TCH',0DH,0AH,'$'
MESS2 DB 'NO MA TCH',0DH,0AH,'$'
MESS3 DB 'INPUT STRING1:',0DH,0AH,'$'
MESS4 DB 'INPUT STRING2:',0DH,0AH,'$'
MAXLEN1 DB 81
ACTLEN1 DB ?
STRING1 DB 81 DUP(?)
MAXLEN2 DB 81
ACTLEN2 DB ?
STRING2 DB 81 DUP(?)
DATA ENDS
STACK SEGMENT
STA DB 20 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DATA
START: MOV AX,DA TA
MOV DS,AX
MOV AX,DA TA
MOV ES,AX
MOV AX,STACK
MOV SS,AX
MOV SP,TOP ;段寄存器及堆栈初始化
MOV AH,09H
MOV DX,OFFSET MESS3
INT 21H ;显示输入提示1
MOV AH,0AH
MOV DX,OFFSET MAXLEN1
INT 21H ;接收键入的字符串1
CRLF ;回车换行
MOV AH,09H
MOV DX,OFFSET MESS4
INT 21H ;显示输入提示2
MOV AH,0AH
MOV DX,OFFSET MAXLEN2
INT 21H ;接收键入的字符串2
CRLF
CLD
MOV SI,OFFSET STRING1
MOV CL,[SI-1]
MOV CH,00H ;字符串1的实际字符数送CX
KKK: MOV DI,OFFSET STRING2
PUSH CX
MOV CL,[DI-1]
MOV CH,00H ;字符串2的实际字符数送CX
MOV AL,[SI]
MOV DX,DI
REPNZ SCASB ;将串1中的一个字符和串2中的所有字符作比较
JZ GGG ;比较相等转GGG
INC SI ;从串1中取下一个字符
POP CX
LOOP KKK
MOV AH,09H
MOV DX,OFFSET MESS2
INT 21H ;显示‘NO MA TCH'
JMP PPP
GGG: MOV AH,09H
MOV DX,OFFSET MESS1
INT 21H ;显示'MATCH'
PPP: MOV AX,4C00H
INT 21H ;返回DOS
CODE ENDS
END START
六实验步骤
1、按实验要求编写程序
2、汇编连接程序生成可执行文件
3、执行程序观察结果
七、拓展练习
编写程序,实现两个字符串的比较。如字符长度相同并且对应字符顺序相同,则显示“MATCH”,否则,显示“NO MATCH”。