汇编 字符串比较实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3. 字符串比较实验
1.实验内容与要求
程序员在屏幕上分别输入两行字符串,比较两个字符串,输出其中相同的字符,并统计个数。要求相同的字符大于10(即统计数要两位)。并且每行都要有提示信息。
2.源代码
DA TAS SEGMENT
STR1 DB 100,?,100 DUP(?) ;定义字符串
STR2 DB 100,?,100 DUP(?)
STR3 DB 100 DUP(?) ;存放含相同字符的新字符串
INS1 DB 'Input the first str: $' ;提示信息
INS2 DB 'Input the second str: $'
OUTCNT DB 'Num of the same elem: $'
OUTELM DB 'The same elems are: $'
CRLF DB 0DH,0AH,'$' ;回车换行
COUNT DB 0 ;未过滤字符串的长度
NUM DB 0 ;过滤后字符串的长度
DA TAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DA TAS
START:
MOV AX,DA TAS
MOV DS,AX
MOV AH,9
LEA DX,INS1
INT 21H ;显示输入提示信息
MOV AH,0AH
LEA DX,STR1
INT 21H ;输入原字符串
MOV AH,9
LEA DX,CRLF ;回车换行
INT 21H
MOV AH,9
LEA DX,INS2
INT 21H
MOV AH,0AH
LEA DX,STR2
INT 21H
MOV AH,9
LEA DX,CRLF
INT 21H
MOV CL,STR1+1 ;把字符串长度送到CL,BL
XOR CH,CH
MOV BL,STR2+1
XOR BH,BH
LEA SI,STR1+2 ;把字符串首地址送到SI,DI
LEA DI,STR2+2
LEA BP,STR3 ;把目标字符串首地址送BP
CMP2: ;外部循环
CMP1: ;内部循环
MOV AL,[SI] ;逐一比较两字符串的每个字符
CMP AL,[DI]
JNE NEXT
MOV AH,[SI]
MOV [BP],AH
INC BP
INC COUNT ;统计STR3的长度
NEXT:INC DI
DEC BL
JZ OVER1
JMP CMP1
OVER1: ;重新设置内部循环次数,并重新定位DI指针INC SI
MOV BL,STR2+1
LEA DI,STR2+2
LOOP CMP2
MOV AH,9 ;输出结果提示信息
LEA DX,OUTELM
INT 21H
call clear ;调用过滤字符串子程序,并输出
MOV AH,9 ;输出相同字符个数
LEA DX,OUTCNT
INT 21H
XOR AH,AH
MOV AL,NUM
CALL DISPLAY;处理输出结果,使输出两位数字
MOV AH,4CH
INT 21H
DISPLAY PROC NEAR ;输出两位数子程序
MOV BL,10
DIV BL
MOV BX,AX
MOV DL,BL
ADD DL,30H
MOV AH,2
INT 21H
MOV DL,BH
ADD DL,30H
MOV AH,2
INT 21H
RET
DISPLAY ENDP
clear proc near ;过滤字符串子程序
lea bx,str3
lea si,str3+1
lea di,str3+1
xor ch,ch
mov cl,count
dec cx
inc num
s2: push cx
mov cx,di
sub cx,bx
s1: mov al,[si]
cmp al,[bx]
je nextchar ;若相等则直接进行下一个字符的循环比较
inc bx
loop s1
inc num ;过滤后字符串的实际长度
mov [di],al
inc di
nextchar: lea bx,str3 ;将bx重定位至字符串首地址
inc si ;以使下一个字符比较时又从头开始比较
pop cx
loop s2
mov [di],'$' ;为显示处理后的字符串调用中断做准备
lea dx,str3
mov ah,9
int 21h ;显示处理后的字符串str3
mov ah,9
lea dx,crlf
int 21h
ret
clear endp
CODES ENDS
END START
3.运行结果截图: