Write ALP to find average of n numbers stored in memory

section .data
resmsgdb 10,'Average = '
rmsg_lenequ $-resmsg
arraydd 0ffff4587h,0f7ff89ffh, 0ffff0022h,0abcdffffh
arrcntequ 04
avgdd 0
section .bss
dispbuffresb 8
%macro print 2
mov eax,4
mov ebx,1
mov ecx,%1
mov edx,%2
int 80h
%endmacro
section .text

global _start
start:
movesi,array
mov eax,0
mov edx,0
movecx,arrcnt
up1:
addeax,[esi]
adc edx,0
add esi,4
loop up1
movebx,arrcnt
divebx
mov [avg],eax
printresmsg,rmsg_len
movebx,[avg]
call disp32num
print resmsg,1
mov eax,01
mov ebx,0
int 80h
disp32num:
mov ecx,8
movedi,dispbuff
dup1:
rol ebx,4
moval,bl
and al,0fh
cmp al,09
jbedskip
add al,07h
dskip: add al,30h
mov [edi],al
incedi
loop dup1
print dispbuff,8
ret

Output
;[mahendra@(none) alp]$ nasm -f elf64 msmalb10.asm
;[mahendra@(none) alp]$ ld -o msmalb10 msmalb10.o
;[mahendra@(none) alp]$ ./msmalb10

;Average = E8F2F3E9
;[mahendra@(none) alp]$

Comments