锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

汇编:判断两个字符串是否相等(匹配)

时间:2024-05-06 03:07:10

;编程从输入两个字符串到内存缓冲区,并比较两个字符串是否相同;
;如相同,输出‘match’;如不同,输出‘no match’。
;经修改的代码能够循环使用
DATAS SEGME
data1 100 DUP(?)
data2 DB 100 DUP(?)
string DB 0DH,0AH,'$'
tital1 DB 'Please input the first string :',0DH,0AH,'$'
tital2 DB 'Please input the second string :',0DH,0AH,'$'
tital3 db 'Do you want to have a try again(if yes,input y,else input n ): ',0dh,0ah,'$'
result1 db 'match',0dh,0ah,'$'
result2 db 'no match',0dh,0ah,'$'
temp DW 0
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
ART: MOV AX,DATAS
MOV DS,AX
MOV si,0
tip1: ;输出抬头1
LEA dx,tital1
MOV ah,09h
INT 21H
first: ;输入第一个字符串
MOV ah,01h ;输入字符放在AL中
INT 21H ;以回车作为结束符
cmp al,0dh
je tip2
MOV data1[si],AL;保存在内存中
INC si
JMP first
tip2:
LEA dx,string
MOV AH,09H
INT 21H
MOV temp,si ; 保存si使得下一个字符串和它做比较
MOV si,0 ;输出抬头2
LEA dx,tital2
MOV ah,09h
INT 21H
second: ;输入第二个字符串
MOV AH,01H ;输入字符放在AL中
INT 21H ;同样以回车作为结束符
CMP AL,0DH
je output
mov data2[si],al ;保存到内存
inc si
jmp second
output:
LEA dx,string
MOV AH,09H
INT 21H
CMP temp,si ;判断长度是否相等
JNE nomatch
MOV si,0
pipei:MOV AL,DATA1[si];判断是否每个字符都相等
MOV AH,DA[si]
INC si
CMP AL,AH
JNE nomatch
CMP si,temp
JE MH
JMP pipei
MATCH: LEA DX,result1 ;不匹配就输出结论1
MOV AH,09H
INT 21H
JMP EXIT
nomatch:LEA DX,result2 ;匹配就输出结论2
MOV AH,09H
INT 21H
EXIT: ;询问是否要继续进行
lea dx,tital3
mov ah,09h
int 21h
mov ah,01h
int 21h
cmp al,'y'
lea dx,string
mov ah,09h
int 21h
je start
cmp al,'n'
je over
jmp exit

over: ;结束
MOV AH,4CH
INT 21H
CODES ENDS
END START


-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章