汇编:判断两个字符串是否相等(匹配)
时间:12-01
来源:互联网
点击:
;编程从键盘输入两个字符串到内存缓冲区,并比较两个字符串是否相同;
;如相同,输出‘match’;如不同,输出‘no match’。
;经修改的代码能够循环使用
DATAS SEGMENT
data1 DB 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
START: 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,DATA2[si]
INC si
CMP AL,AH
JNE nomatch
CMP si,temp
JE MATCH
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
;如相同,输出‘match’;如不同,输出‘no match’。
;经修改的代码能够循环使用
DATAS SEGMENT
data1 DB 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
START: 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,DATA2[si]
INC si
CMP AL,AH
JNE nomatch
CMP si,temp
JE MATCH
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
汇编字符串匹 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)