实验3.字符串比较实验
1.实验内容与要求
程序员在屏幕上分别输入两行字符串,比较两个字符串,输出其中相同的字符,并统计个数。
要求相同的字符大于10(即统计数要两位)。并且每行都要有提示信息。
2.源代码
DATAS SEGMENT
STR1DB 100,?,100 DUP(?);定义字符串
STR2DB 100,?,100 DUP(?)
STR3DB 100 DUP(?);存放含相同字符的新字符串
INS1DB 'Input the first str:
$';提示信息
INS2DB '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;过滤后字符串的长度
DATAS ENDS
CODES SEGMENT
ASSUME CS:
CODES,DS:
DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV AH,9
LEADX,INS1
INT 21H ;显示输入提示信息
MOV AH,0AH
LEADX,STR1
INT 21H ;输入原字符串
MOV AH,9
LEA DX,CRLF ;回车换行
INT 21H
MOV AH,9
LEADX,INS2
INT 21H
MOV AH,0AH
LEADX,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
LEASI,STR1+2;把字符串首地址送到SI,DI
LEADI,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
LEADI,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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论