data segment
mess1 db 0dh,0ah,"Enter first string",0dh,0ah,"$"
mess2 db 0dh,0ah,"Enter second string",0dh,0ah,"$"
mess3 db 0dh,0ah,"Found",0dh,0ah,"$"
mess4 db 0dh,0ah,"Not found",0dh,0ah,"$"
mess5 db 0dh,0ah,"No No No David Blain O_o",0dh,0ah,"$"
str1 db 10, ?, 9 dup (?)
str2 db 10, ?, 9 dup (?)
LenMax db 0
LenMin db 0
data ends
code segment
assume cs:code, ds:data
START: mov ax, data
mov ds, ax ; Загрузить сегментный адрес данных
mov es,ax
;-------------------------------------------------------------------------------
lea dx, mess1
mov ah, 09h
int 21h ;приглашение к вводу строки 1
; Ввод первой строки
lea dx, str1
mov ah, 0ah
int 21h
lea dx, mess2
mov ah, 09h
int 21h ;приглашение к вводу строки 2
; Ввод второй строки
lea dx, str2
mov ah, 0ah
int 21h
call find
xor ax,ax
mov ah, 09h
int 21h
mov ax, 4C00h ; Код завершения 0
int 21h ; Выход в DOS
;---------------------------------------------------------------------------------
find proc
mov al, str1+1
mov ah, str2+1
cmp ah,al
jg max
xor dx,dx
xor ax,ax
xor cx,cx
xor di,di
xor si,si
lea ax,str1
add ax,2
add al,[str1+1]
sub al,[str2+1]
lea di,str1+2
LO1:
cmp di,ax
ja nf1
MOV Cl,str2+1
LEA SI,str2+2
REPE CMPSB
jcxz f1
jmp LO1
f1:
lea dx, mess3
jmp quit
nf1:
lea dx, mess4
jmp quit
max:lea dx,mess5
jmp quit
quit:ret
find endp
code ends
end START |