This code is written in x86 assembly language and appears to find the maximum sum of even digits in an array of words. It defines two procedures: "addev" for calculating the sum of even digits in a word and "maxArray" for finding the word in the array with the maximum sum of even digits. The array and its length are passed as parameters to "maxArray," which iterates through the array, calculates the sum of even digits for each word using the "addev" procedure, and keeps track of the word with the maximum sum. Finally, it returns the word with the maximum sum of even digits in ax.
.model small
.stack 100h
.data
A dw 1489, 32661, 31248, 24788, 13499, 28
N dw 6
.code
mov ax, @data
mov ds, ax
push offset A
push N
call maxArray
.exit
addev proc near
push bp
mov bp, sp
mov ax, [bp + 4]
mov bx, 10
mov cx, 0
next:
mov dx, 0
div bx
mov dh, dl
and dl, 1
jnz cont
mov dl, dh
mov dh, 0
add cx, dx
cont:
cmp ax, 0
jne next
mov ax, cx
mov ah, 0
pop bp
ret 2
addev endp
maxArray proc near
push bp
mov bp, sp
mov bx, 0
mov cx, 0
mov di, [bp + 6]
mov si, di
next1:
push bx
push [di]
call addev
pop bx
pop [di]
mov bx, [di]
inc di
inc di
cmp cl, [bp + 4]
je ext
cmp ch, al
ja cont2
cmp ch, al
jne check
cmp bx, [si]
jae cont2
mov si, di
cont2:
inc cl
cmp cl, [bp + 4]
jmp next1
check:
mov ch, al
jmp cont2
ext:
mov ax, [si]
pop bp
ret 4
maxArray endp
end
i tried to debugg it and it doesnt show any value in ax it only shows that ax is equal to 0