请求问题,不知道哪错了
1、目的:查找匹配字符串2、要求:程序接收键入的一个关键字和一个句子,若句子中不包含关键字,则显示‘NO MATCH’;若句子包含关键字则显示‘MATCH’,并把该关键字在句子中的位置用十六进制数显示出来。
我是新手。我弄了一个程序(如下),不知道哪不对。得不出结果啊。希望大家帮我斧正。或者重新弄一个,谢谢。
data segment
mess1 db 'Enter keyword:','$'
mess2 db 'Enter Sentence:','$'
mess3 db 'Match at location:','$'
mess4 db 'H of the sentence.','$'
mess5 db 'No match!',13,10,'$'
str1 db 50,0,50 dup(?) ,13,10,24h
str2 db 255,0,255 dup(?),13,10,24h
cr db 13,10,24h
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset mess1
call prompt
mov dx,offset str1
mov ah,0ah
int 21h
cmp str1+ 1,0
je quit
mov dx,offset cr
call prompt
b1:
mov dx,offset mess2
mov ah,9
int 21h
mov dx,offset str2
mov ah,0ah
int 21h
mov dx,offset cr
call prompt
mov dl,Str2 + 1
cmp dl,0
je quit
mov dh,str1+ 1
mov di,offset Str2 + 2
compare:
cmp dh,dl
ja nexit
mov si,offset str1 + 2
mov cl,dh
mov ch,0
cld
push di
repe cmpsb
pop di
je exit
inc di
dec dl
jmp compare
quit:mov ah,4ch
int 21h
prompt proc
mov ah,9
int 21h
ret
prompt endp
exit proc
mov ax,di
sub ax,offset Str2+ 2
inc ax
push ax
mov dx,offset mess3
call prompt
pop ax
mov dx,offset mess4
call prompt
jmp b1
ret
exit endp
Nexit proc
lea dx,mess5
call prompt
ret
Nexit endp
code ends
end start