实验三 查找匹配字符串
1。实验目的:
查找匹配字符串SEARCH。
2. 实验要求:
程序接收用户键入的一个关键字以及一个句子。如果句子中不包含关键字则显示“No match!”;如果句子中包含关键字则显示“Match!”,且把该句子中的位置用十六进制数显示出来.
实验结果:
要求程序的执行过程如下:
Enter keyword:abc
Enter Sentence: We are studying abc.
Match at location:11H of the sentence.
Enter Sentence: xyz, Ok?
No match.
Enter Sentence: ^C
3。 实验报告要求:
(1)分析要点及调试后的正确程序。
(2) 实验体会.
源代码:
DATAREA SEGMENT
STRING1 DB ”Enter keyword:$\"
STRING2 DB \"Enter sentence:$”
STRING3 DB ”Match at location:$”
STRING4 DB \"No match!\,10,\"$\"
STRING5 DB ”H of the sentence.$”
keyword DB 50D,?,51D DUP(?)
sentence DB 50D,?,51D DUP(?)
DATAREA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATAREA,ES:DATAREA
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATAREA
MOV DS,AX
MOV ES,AX
LEA DX,STRING1
MOV AH,09H
INT 21H
LEA DX,keyword
MOV AH,0AH
INT 21H
MOV AH ,02H
MOV DL,0AH
INT 21H
LEA DX,STRING2
MOV AH,09H
INT 21H
LEA DX,sentence
MOV AH,0AH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
LEA SI,keyword+2 ;关键词
LEA DI,sentence+2
MOV AX,0
MOV AL,[sentence+1] ;句子字符个数
MOV AH,[keyword+1] ;关键词字符个数
CMP AL,AH
JL NO
SUB AL,AH
MOV AH,0
MOV CX,AX
INC CX
COMPARE:
PUSH CX
MOV CX,3 ;建议采用mov ax,字符个数,使字符的个数不固定
CLD
REPZ CMPSB
JZ MATCH
MOV AX,3 ;建议采用mov ax,字符个数
SUB AX,CX
SUB SI,AX ;关键词回到词首
MOV AX,2 ;建议采用mov ax,字符个数—1
SUB AX,CX
SUB DI,AX
POP CX
LOOP COMPARE
NO: LEA DX,STRING4
MOV AH,09H
INT 21H
JMP EXIT
MATCH: POP CX
MOV BX,DI
LEA DX,STRING3
MOV AH,09H
INT 21H
SUB BX,OFFSET sentence+2
SUB BX,2 ;首地址所在字符串中的地址
CALL CHANGE
LEA DX,STRING5
MOV AH,09H
INT 21H
EXIT:
RET
MAIN ENDP
CHANGE PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CH,4
MOV CL,4
ROTATE: ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL PRINTIT
ADD AL,7H
PRINTIT:
MOV DL,AL
MOV AH,2
INT 21H
DEC CH
JNZ ROTATE
POP DX
POP CX
POP BX
POP AX
RET
CHANGE ENDP
CODE ENDS
END START
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务