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