print macro msg
        lea dx,msg
        mov ah,09h
        int 21h
    endm
    read macro n,j1,j2
    j1:mov ah,01h
        int 21h                     
        cmp al,0dh
        je j2
        sub al,30h
        mov bl,al
        mov ax,n
        mov dx,0ah
        mul dx
        xor bh,bh
        add ax,bx
        mov n,ax
        jmp j1
    j2 :nop
    endm
    .model small
    .stack 100h
    .data
        msg1 db 10,13,'Enter a number: $'
        msg2 db 10,13,'Largest= $'
        num dw 10 dup(0)
        larg dw 0
        
    .code
    main proc
        mov ax,@data
        mov ds,ax
    
        ;read 10 elements
        mov cx,0ah
        lea si,num
    loop1:print msg1
        ;read a multidigit number
        read [si],jump1,jump2
        add si,02
        loop loop1
    
        ;asign 1st element as largest
        lea si,num
        mov ax,[si]
        mov larg,ax
    
        mov cx,09h
    ;compare larg with other elements
    loop2:add si,02
        mov ax,[si]
        cmp larg,ax
        jnc notlarg
        mov larg,ax
    notlarg:loop loop2
        ;printing largest
        mov bx,000ah
        mov ax,larg
        xor cx,cx
    
        ;push into stack
    p1:xor dx,dx
        div bx
        push dx
        inc cx
        cmp ax,0000h
        jne p1
        print msg2
        ;pop from stack
    display:pop dx
        add dl,30h
        mov ah,02h
        int 21h
        loop display
        mov ah,4ch
        int 21h
    main endp
    end
No comments:
Post a Comment