📄 strmatch.asm
字号:
CRLF MACRO ;回车换行
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
ENDM
;
STACK SEGMENT STACK 'STACK';定义堆栈段
DB 256 DUP(0) ;堆栈空间=256
STACK ENDS ;堆栈段结束
;
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
ACTLEN1 DB ?
STRING1 DB 81 DUP(?)
MAXLEN2 DB 81
ACTLEN2 DB ?
STRING2 DB 81 DUP(?)
DATA ENDS ;数据段结束
;
CODE SEGMENT ;代码段说明
ASSUME CS:CODE,DS:DATA,SS:STACK ; 定义CS=代码段, 定义DS为数据段
START: ;EXE文件执行入口
MOV AX,DATA ;初始化数据段 ds=DS
MOV DS,AX ;ds=DS
MOV ES,AX
mov dx,offset MESS3
mov ah,09h ;功能号ah=9 (显示字符串)
int 21h ;21h=DOS系统功能中断调用
MOV AH,0AH
MOV DX,OFFSET MAXLEN1 ;输入串1
INT 21H
CRLF
mov dx,offset MESS4
mov ah,09h ;功能号ah=9 (显示字符串)
int 21h ;21h=DOS系统功能中断调用
MOV AH,0AH
MOV DX,OFFSET MAXLEN2 ;输入串2
INT 21H
CRLF
CLD
MOV SI,OFFSET STRING1
DEC SI ;指向上一字节
MOV CL,[SI-1] ;串1实际长度
INC CL ;多比较一字节
MOV CH,00H
KKK: MOV DI,OFFSET STRING2
DEC DI ;指向上一字节
REPE CMPSB
JZ GGG ;等,转移
mov dx,offset MESS2
mov ah,09h ;功能号ah=9 (显示字符串)
int 21h ;21h=DOS系统功能中断调用
JMP PPP
GGG: mov dx,offset MESS1
mov ah,09h ;功能号ah=9 (显示字符串)
int 21h ;21h=DOS系统功能中断调用
PPP: MOV AH, 0 ;读键入字符
INT 16H ;若键盘缓冲区为空,一直等待键入字符
mov ax,4c00h ;DOS系统功能调用 4ch=终止程序,退出码=00H
int 21h ;返回DOS
;
CODE ENDS ;代码段结束
END START ;汇编结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -