data segment
ary dw 10 dup(?)
sum dw ?
temp db 10 dup(?)
data ends
stacker segment stack
dw 20 dup(?)
top label word
stacker ends
code segment
assume cs:code,ds:data,ss:stacker
main proc near
mov ax,data
mov ds,ax
mov ax,stacker
mov ss,ax
lea sp,top
mov cx,6
mov si,0
L1:
xor bx,bx
call near ptr input
call near ptr line
mov ary[si],bx
add sum,bx
add si,2
loop L1
mov ax,sum
mov di,0
mov cl,10
L2:
div cl
mov temp[di],ah
cmp al,0
je L3
add di,2
xor ah,ah
jmp L2
L3:
call near ptr print
mov ah,4ch
int 21h
main endp
input proc near
push ax
push dx
push di
mov di,10d
L4:
mov ah,01h
int 21h
cmp al,0dh
je L5
cmp al,'0'
jb L4
cmp al,'9'
ja L4
sub al,30h
xor ah,ah
xchg ax,bx
mul di
xchg ax,bx
add bx,ax
jmp L4
L5:
;call near ptr line
;mov dx,bx
;add dl,30h
;mov ah,02h
;int 21h
pop di
pop dx
pop ax
ret
input endp
print proc near
push di
push dx
push ax
L6:
mov dl,temp[di]
add dl,30h
mov ah,02h
int 21h
cmp di,0
je L7
sub di,2
jmp L6
L7:
pop ax
pop dx
pop di
ret
print endp
line proc near
push ax
push dx
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
pop dx
pop ax
ret
line endp
code ends
end main
ary dw 10 dup(?)
sum dw ?
temp db 10 dup(?)
data ends
stacker segment stack
dw 20 dup(?)
top label word
stacker ends
code segment
assume cs:code,ds:data,ss:stacker
main proc near
mov ax,data
mov ds,ax
mov ax,stacker
mov ss,ax
lea sp,top
mov cx,6
mov si,0
L1:
xor bx,bx
call near ptr input
call near ptr line
mov ary[si],bx
add sum,bx
add si,2
loop L1
mov ax,sum
mov di,0
mov cl,10
L2:
div cl
mov temp[di],ah
cmp al,0
je L3
add di,2
xor ah,ah
jmp L2
L3:
call near ptr print
mov ah,4ch
int 21h
main endp
input proc near
push ax
push dx
push di
mov di,10d
L4:
mov ah,01h
int 21h
cmp al,0dh
je L5
cmp al,'0'
jb L4
cmp al,'9'
ja L4
sub al,30h
xor ah,ah
xchg ax,bx
mul di
xchg ax,bx
add bx,ax
jmp L4
L5:
;call near ptr line
;mov dx,bx
;add dl,30h
;mov ah,02h
;int 21h
pop di
pop dx
pop ax
ret
input endp
print proc near
push di
push dx
push ax
L6:
mov dl,temp[di]
add dl,30h
mov ah,02h
int 21h
cmp di,0
je L7
sub di,2
jmp L6
L7:
pop ax
pop dx
pop di
ret
print endp
line proc near
push ax
push dx
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
pop dx
pop ax
ret
line endp
code ends
end main