📄 search.asm
字号:
;----------------------------------------------------------------------
;Program:
;Created by:
;Finished Date & Time:
;----------------------------------------------------------------------
DSEG SEGMENT
info1 db 'Enter sentence: $'
info2 db 'Enter keyword: $'
mess0 db 'Match at location $'
mess1 db ?,?,'H of the sentence.$'
mess2 db 'No match!$'
keywordsin label byte
maxlenk db 32
lenk db ?
keywords db 32 dup(?)
sentencein label byte
maxlens db 32
lens db ?
sentence db 32 dup(?)
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG, es:DSEG
main proc far
start:
push ds
sub ax,ax
push ax
mov ax, DSEG
mov ds, ax
mov es, ax
call input
call compare
ret
main endp
input proc near
mov ah, 09h
lea dx, info1
int 21h
mov ah, 0ah
lea dx, sentencein
int 21h
call newLine
mov ah, 09h
lea dx, info2
int 21h
mov ah, 0ah
lea dx, keywordsin
int 21h
call newLine
ret
input endp
compare proc near
mov al, lens
sub al, lenk
js no_match
lea bx, sentence
cld
next:
lea si, keywords
mov di, bx
mov ch, 00h
mov cl, lenk
repz cmpsb
jz match
sub al, 1
js no_match
inc bx
jmp next
no_match:
mov ah, 09h
lea dx, mess2
int 21h
call newLine
jmp exit
match:
mov ah, 09h
lea dx, mess0
int 21h
lea ax, sentence
sub bx, ax
inc bx
call binihex
mov ah, 09h
lea dx, mess1
int 21h
call newLine
exit:
ret
compare endp
newLine proc near
mov dl, 0dh
mov ah, 02h
int 21h
mov dl, 0ah
mov ah, 02h
int 21h
ret
newLine endp
binihex proc near
mov ch, 2
rotate:
mov cl, 4
rol bl, cl
mov dl, bl
and dl, 0fh
add dl, 30h
cmp dl, 3ah
jl tochar
add dl, 07h
tochar:
cmp ch, 1
jz l0
mov mess1[0], dl
l0:
mov mess1[1], dl
dec ch
jnz rotate
ret
binihex endp
CSEG ENDS
END MAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -