?? 2.2查找匹配字符串.asm
字號:
;查找匹配字符串
DATAS SEGMENT
mess1 db 'Enter keyword:','$'
mess2 db 'Enter Sentence:','$'
mess3 db 'Match at location:','$'
mess4 db 'H of the sentence',0ah,0dh,'$'
mess5 db 'No match','$'
num = 255
keyword db num
db ?
db num dup(?)
sentence db num
db ?
db num dup(?)
DATAS ENDS
;*******************************************
CODES SEGMENT
main proc far
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
mov es,ax
;
call GetKeyword
call GetSentence
call Search
;
main endp
;-------------------------------------------
GetKeyword proc near
;
lea dx,mess1
mov ah,09h
int 21h
MOV dx,offset keyword
mov ah,0ah
int 21h
mov dl,0ah
mov ah,2
int 21h
;
GetKeyword endp
;-------------------------------------------
GetSentence proc near
;
lea dx,mess2
mov ah,09h
int 21h
MOV dx,offset sentence
mov ah,0ah
int 21h
mov dl,0ah
mov ah,2
int 21h
;
GetSentence endp
;-------------------------------------------
Search proc near
;
mov bx,offset keyword+1
mov dh,[bx]
mov bx,offset sentence+1
mov dl,[bx]
mov ch,0
mov cl,dl
sub cl,dh
inc cl
lea bx,sentence+2
mov ax,1
again:
mov di,bx
lea si,keyword+2
;
push dx
b:
dec dh
cmpsb
jnz a
cmp dh,0
jnz b
jmp match
a:
pop dx
inc bx
inc ax
loop again
nomatch:
lea dx,mess5
mov ah,09h
int 21h
jmp exit
match:
push ax
lea dx,mess3
mov ah,09h
int 21h
;
pop ax
mov bl,16
div bl
mov dx,ax
cmp al,0ah
jb a1
add al,07h
a1:
add al,30h
mov dl,al
mov ah,02h
int 21h
cmp dh,0ah
jb b1
add dh,07h
b1:
add dh,30h
mov dl,dh
mov ah,02h
int 21h
lea dx,mess4
mov ah,09h
int 21h
exit:
MOV AH,4CH
INT 21H
Search endp
;------------------------------------------
CODES ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -