资讯详情

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

;编程从输入两个字符串到内存缓冲区,并比较两个字符串是否相同; ;如相同,输出‘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百科大全!

锐单商城 - 一站式电子元器件采购平台