微机报告字符串匹配.doc
文本预览下载声明
微机实验报告
实验三 循环程序的设计
一、实验目的
1、掌握提示信息的使用方法和键盘输入信息的用法;
2、掌握循环程序的设计方法。
二、实验内容
编写程序,从键盘分别输入两个字符串,进行比较,若相同,则显示‘MATCH’,否则,显示‘NO MATCH’。
实验原理
强迫CPU重复执行一指令序列的程序结构是循环程序。循环程序结构分成四部分:
初始化部分
循环处理部分
循环控制部分
结束部分
程序流程图
程序代码
CRLF MACRO
MOV AH, 02H
MOV DL, 0DH
INT 21H
MOV AH, 02H
MOV DL, 0AH
INT 21H
ENDM
DATA SEGMENT
MESS1 DBINPUT STRING1:,0DH,0AH,$
MESS2 DBINPUT STRING2:,0DH,0AH,$
MESS3 DBNO MATCH,0DH,0AH,$
MESS4 DBMATCH,0DH,0AH,$
MAXLEN1 DB 81
ACTLEN1 DB ?
STRING1 DB 81 DUP(?)
MAXLEN2 DB 81
ACTLEN2 DB ?
STRING2 DB 81 DUP(?)
DATA ENDS
STACK SEGMENT PARA STACK STACK
STA DB 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA, ES:DATA, SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV ES, AX
MOV AX,STACK
MOV SS,AX
MOV SP,TOP
MOV AH,09H
MOV DX,OFFSET MESS1
INT 21H
MOV AH, 0AH
MOV DX,OFFSET MAXLEN1
INT 21H
CRLF
MOV AH,09H
MOV DX,OFFSET MESS2
INT 21H
MOV AH, 0AH
MOV DX,OFFSET MAXLEN2
INT 21H
CRLF
MOV SI,OFFSET ACTLEN1
MOV BX,OFFSET ACTLEN2 ; 字符串2长度单元首地址送BX
MOV AL,[SI] ;字符串1长度送AL
CMP AL,[BX] ;比较实际长度
JNZ NOMA ;不等就跳转
MOV CL,[BX] ;实际长度作为比较次数
COM: INC SI
INC BX ;SI,BX每循环依次加1
MOV AL,[SI]
CMP AL,[BX]
JNZ NOMA
DEC CL ;CL每循环依次减1
CMP CL,0
JNZ COM
MOV AH,09H
MOV DX,OFFSET MESS4
INT 21H
JMP DEND
NOMA:
MOV AH,09H
MOV DX,OFFSET MESS3
INT 21H
DEND:
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
程序调试
调试思路:
1、生成exe文件;2、观察初始化是否正常;3、观察字符串是否输入;4、观察比较字符串长度处是否跳转(相同不跳,反之,不同就跳,不匹配);5、循环体中看是否比较了字符串长度次数,是否有不匹配跳出循环体;6、显示结果是否正常。
两字符串是否匹配有三种情况:1、完全相同——MATCH;2、有个别字符不同——NO MATCH;3、字符串长度不同则——NO MATCH
调试过程:
通过MASM ZY.ASM 和LINK ZY.OBJ 命令即可生成exe文件;
DEBUG ZY.EXE 进行调试,结合
显示全部