📄 search.asm
字号:
;PROGRAM TITLE GOES HERE --SEARCH
;
datasg segment para 'data'
mkeyin db 'Enter keyword:',13,10,'$'
mess1 db 'Match!',13,10,'$'
mess2 db 'Match at location:',13,10,'$'
mess3 db 'No match!',13,10,'$'
msentin db 'Enter Sentence:',13,10,'$'
keyin label byte
maxkey db 4
actkey db ?
key db 4 dup(?)
sentin label byte
maxsen db 20
actsen db ?
sent db 20 dup(?)
datasg ends
;
codesg segment para 'code'
assume cs:codesg,ds:datasg,es:datasg
main proc far
push ds
sub ax,ax
push ax
;
mov ax,datasg
mov ds,ax
mov es,ax
;INPUT KEYWORD
start:
lea dx,mkeyin
mov ah,09
int 21h
lea dx,keyin
mov ah,0ah
int 21h
mov dl,13
mov ah,02
int 21h
mov dl,10
mov ah,02
int 21h
;INPUT SENTENCE
sentence_in:
lea dx,msentin
mov ah,09
int 21h
lea dx,sentin
mov ah,0ah
int 21h
mov dl,13
mov ah,02
int 21h
mov dl,10
mov ah,02
int 21h
cmp actsen,0
je exit
;SEARCH
mov al,actkey
mov ah,0
mov cx,ax
mov al,actsen
mov ah,0
mov dx,ax
sub dx,cx
add dx,1
mov bx,0
comp:
lea si,keyin+2
lea di,sentin+2
add di,bx
std
mov al,actkey
mov ah,0
mov cx,ax
repe cmpsb
add bx,1
cmp cx,0
je match
cmp bx,dx
jne comp
nomatch:
lea dx,mess3
mov ah,09
int 21h
jmp sentence_in
match:
lea dx,mess1
mov ah,09
int 21h
lea dx,mess2
mov ah,09
int 21h
mov dx,bx
add dx,3030h
mov ah,02
int 21h
jmp sentence_in
exit:
ret
main endp
codesg ends
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -