📄 rjexp5.asm
字号:
CRLF MACRO ;显示回车
MOV DL,0DH
MOV AH,02H
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
DATA SEGMENT
MESS1 DB 'MATCH',0DH,0AH,'$'
MESS2 DB 'NO MATCH',0DH,0AH,'$'
MESS3 DB 'INPUT STRING1!',0DH,0AH,'$'
MESS4 DB 'INPUT STRING2!',0DH,0AH,'$'
MAXLEN1 DB 81
STRING1 DB 81 DUP(?)
MAXLEN2 DB 81
STRING2 DB 81 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AH,09H
MOV DX,OFFSET MESS3
INT 21H ;显示输入提示信息1
MOV AL,MAXLEN1
MOV BX,OFFSET STRING1
MOV [BX],AL ;最大字符缓冲
MOV AH,0AH
MOV DX,OFFSET STRING1
INT 21H ;接收键入的字符串1
CRLF
MOV AH,09H
MOV DX,OFFSET MESS4
INT 21H ;显示输入提示信息2
MOV AL,MAXLEN2
MOV BX,OFFSET STRING2
MOV [BX],AL ;最大字符缓冲设置
MOV AH,0AH
MOV DX,OFFSET STRING2
INT 21H ;接收键入的字符串2
CRLF
CLD
LEA SI,STRING1 ;字符串1的地址送给SI
MOV CL,[SI+1] ;字符串1的字符数送给CX
MOV CH,0
KKK: LEA DI,STRING2 ;字符串2的地址送给DI
MOV DL,[DI+1] ;字符串2的字符数送给DX
MOV DH,0
ZJ2: MOV AL,[SI+2] ;字符串1的第一个字符在字符串2中匹配
CMP [DI+2],AL
JE ZJ3 ;匹配成功则跳转
ZJ1: INC DI ;指向字符串2下一个字符
DEC DX
JZ GGG ;字符串2完,不匹配
JMP ZJ2 ;字符串2没完,重新匹配
ZJ3: DEC CX
JZ MMM ;字符串1完,匹配
DEC DX
JZ GGG ;字符串2完,不匹配
INC SI ;指向串1下一个字符
INC DI ;指向串2下一个字符
MOV AL,[SI+2]
CMP [DI+2],AL
JE ZJ3 ;匹配,跳转
DEC DX
JZ GGG ;字符串2完,不匹配
LEA SI,STRING1 ;重新从串1的第一个字符匹配
MOV CL,[SI+1]
MOV CH,0
INC DI
JMP ZJ2
MMM: MOV AH,09H ;输出匹配信息
MOV DX,OFFSET MESS1
INT 21H
JMP PPP
GGG: MOV AH,09H ;输出不匹配信息
MOV DX,OFFSET MESS2
INT 21H
PPP: MOV AX,4C00H ;程序终止
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -