TITLE program.asm
DAN SEGMENT
num_size equ 10
dataArray dw num_size dup(?)
error_input db 13,10,'very big number please input again',13,10,'$'
mess_big db 13,10,'maximum:$'
mess_low db 13,10,'minimum:$'
mess_one db 13,10,'quotient:$'
mess_two db 13,10,'remainder:$'
dan ends
code segment
ASSUME CS:CODE,DS

start: MOV AX,DAN
mov ds,ax
mov es,ax
mov cx,num_size
mov di,offset dataArray
cld
input_Loop: push cx
xor dx,dx
mov [di],dx
mov al,':'
int 29h
input_numb: mov ah,07h
int 21h
cmp al,13
jz input_stop
cmp al,'0'
jl input_numb
cmp al,'9'
jg input_numb
push ax
int 29h
mov ax,[di]
mov bx,10
mul bx
pop bx
or dx,dx
jnz input_error
and bx,0fh
add ax,bx
mov [di],ax
jmp short input_numb
input_error: mov ah,9
mov dx,offset error_input
int 21h
pop cx
jmp short input_Loop
input_stop: inc di
inc di
call next_line
pop cx
loop input_Loop
mov si,offset dataArray
mov cx,num_size-1
lodsw
mov bx,ax;
mov dx,ax;
;check
check_numb: lodsw
cmp ax,bx
ja check_big
mov bx,ax;
jmp short check_next
check_big: cmp ax,dx
jb check_next
mov dx,ax;
check_next: loop check_numb
push bx;
push dx
mov ah,9
mov dx,offset mess_big
int 21h
pop ax
push ax
call out_dec
mov ah,9
mov dx,offset mess_low
int 21h
pop bx
pop ax
push ax
push bx
call out_dec
pop ax
pop bx
xor dx,dx
div bx
push dx
push ax
mov ah,9
mov dx,offset mess_one
int 21h
pop ax
call out_dec
mov ah,9
mov dx,offset mess_two
int 21h
pop ax
call out_dec
mov ah,4ch
int 21h
next_line: mov al,13
int 29h
mov al,10
int 29h
ret
out_dec: xor cx,cx
mov bx,10
out_dec_div: xor dx,dx
div bx
or dx,30h;
push dx;
inc cx;
or ax,ax;
jnz out_dec_div
out_dec_out: pop ax;
int 29h;
loop out_dec_out
ret
MOV AX, 4C00H
INT 21H
code ENDS
END start