title Timmin_Timmax
.model small
.stack 100h
.data 
        tb1 db ' Moi ban nhap so phan tu N= $'
        tb2 db 13,10,'So lon nhat la: $'
        tb3 db 13,10,'So be nhat la: $'
        so dw 0
        tong dw 0
        min dw 0
        N dw 0 
        max dw 0
        chuoi dw 128 dup (?)
.code 
    main proc
        mov ax,@data
        mov ds,ax
        mov es,ax
        
        
        lea dx,tb1          	; ??t ??a ch? tb1 vào dx
        mov ah,9		; ch?c n?ng s? 9 hi?n th? chu?i
        int 21h			
        call nhapso		; g?i th? t?c nh?p s?
        mov cx,so		; chuy?n bi?n so v?a nh?p vào cx
        mov n,cx		; cho cx vào bi?n n
        lea di,chuoi		; ??t ??a ch? chuoi vào di
        cld			; xóa c? ??nh h??ng
      MoiNhap:		
        call nhapso		; g?i th? t?c nh?p s?
        mov ax,so		; chuy?n s? vào ax
        Stosw			; l?u ax vào m?ng
        Loop MoiNhap		; l?p
        
        
        mov cx,n		; chuy?n bi?n nc vào cx
        sub cx,1			; tr? cx ?i 1
        lea si,chuoi		; si ch?a ??a ch? chuoi
        lodsw			; l?y t? m?ng gán vào ax
        mov min,ax		; cho bi?n min = ax( b?ng ph?n t? ??u m?ng)
        mov max,ax		; cho bi?n max = ax ( b?ng ph?n t? ??u m?ng)
        cld			; xóa c? ??nh h??ng
      SoSanh:
        
        Lodsw			; l?y t? m?ng gán vào ax
        
        cmp ax,min		; so sánh ax v?i min
        ja KiemtraMax		; n?u l?n h?n nh?y ??n nhãn KiemtraMax
        mov min,ax		; cho bi?n min = ax
      KiemtraMax:
	cmp ax,max		; so sanh ax v?i max
	jb HetSoSanh		; n?u nh? h?n thì nh?y ??n nhãn HetSosanh
	mov max,ax		; cho bi?n max = ax
      HetSoSanh:  
        loop Sosanh		; l?p
                
        mov ah,9		; ch?c n?ng s? 9 hi?n th? kí t?
        lea dx,tb2		; ??t ??a ch? tb2 vào ax
        int 21h		
        mov ax,max		;
        mov tong,ax		; chuy?n max vào tong ?? in
        call inso			;
        mov ah,9		
        lea dx,tb3
        int 21h	
        mov ax,min		;
        mov tong,ax		; chuy?n min vào tong ?? in
        call inso			;
        
        mov ah,4ch		; k?t thúc ch??ng trình
        int 21h
    Main endp
; Các th? t?c vào ra s? nguyên d??ng
    nhapso proc
        push cx
        mov ax,0
        mov so,ax
      nhapso1:
        mov ah,1
        int 21h
        cmp al,13         
        je ketthuc1
        CMP AL,'0'
        JB xoakitu
        CMP AL,'9'
        JA xoakitu          
        sub al,30h        
        mov ah,0         
        mov cx,ax       
        mov ax,so      
        mov bx,10       
        mul bx          
        add ax,cx      
        mov so,ax      
        jmp nhapso1
    xoakitu:            

        Mov ah,2        
        mov dl,08h      	; chuyen ki tu backspace vao DL de hien thi
        int 21h

        mov dl,20h      	; chuyen ki tu cach vao hien thi de xoa ki tu khac vua nhap
        int 21h
        
        mov dl,08h
        int 21h
        JMP nhapso1
    ketthuc1:
    pop cx
    mov ah,2
    mov dl,13
    int 21h
    mov dl,10
    int 21h
    ret
    nhapso endp
    
    inso proc        
        mov ax,tong       	;dua ket qua trong  bien tong ra thanh ghi ax
        mov dx,0             	;xoa bit cao dx
        mov bx,10           	;gan bx=10
        mov cx,0             	;khoi tao bien dem
      chia:        
        div bx			;lay ket qua chia cho 10
        push dx               	;du o dx day vao ngan xep
        inc cx                  ;tang bien dem
        cmp ax,0             	;so sanh thuong voi 0
        je hienkq             	;neu bang thi hien ket qua
        xor dx,dx            	;xoa bit cao trong dx
        jmp chia   
      hienkq:
        pop dx     		;lay du trong ngan xep ra khoi dx
        add dl,30h          	;chuyen so thanh dang ky tu
        mov ah,2            	;in tong
        int 21h
        loop hienkq
        ret
    inso endp
End main
