Программа не работает, потому что в ней нет даже намёка на массив. Вы взяли чью-то программу, которая подсчитывала сумму цифр введённого числа и выводила полученную сумму в шестнадцатеричной системе (ну или что-то в этом роде) , и просто её изуродовали. Что делала эта программа со вторым числом (y) понять по такому "обрубку" уже невозможно.
s_s segment stack "stack"
dw 256 dup(?)
s_s ends
d_s segment
PromptN db "Введите кол-во элементов массива: $"
PromptA db "Введите элементы массива: ", 13, 10, 36
Result db "Максимальный элемент: $"
N dw ?
Array dw 256 dup (?)
d_s ends
c_s segment
assume ss:s_s,ds:d_s,cs:c_s
begin:
mov ax,d_s
mov ds,ax
mov es, ax
lea dx, PromptN
mov ah, 9
int 21h
push 256
push 1
call Input
mov N, ax
mov cx, ax
lea dx, PromptA
mov ah, 9
int 21h
lea di, Array
ReadLoop:
mov ax, N
inc ax
sub ax, cx
call Print
mov al, ':'
int 29h
mov al, 32
int 29h
push 32767
push -32767
call Input
stosw
loop ReadLoop
lea di, Array
mov ax, [di]
lea si, [di+2]
mov cx, N
dec cx
jcxz CmpEnd
CmpLoop:
cmp ax, [si]
jge CmpNext
mov di, si
CmpNext:
add si, 2
loop CmpLoop
CmpEnd:
xchg si, di
lea dx, Result
mov ah, 9
int 21h
lodsw
call Print
mov ah, 7
int 21h
mov ah,4ch
int 21h
Input proc stdcall uses bx cx dx di si es, LowBound :word, UpBound :word
xor bx, bx
mov di, bx
mov si, bx
mov cx, bx
InpRep:
mov ah, 7
int 21h
test al, al
jnz InpCR
int 21h
jmp InpRep
InpCR:
mov bl, al
jcxz InpSign
cmp al, 13
jne InpBS
cmp cx, 1
jne InpTest
test bh, 1
jnz InpRep
InpTest:
mov ax, di
xor ax, si
sub ax, si
cmp ax, LowBound
jl InpRep
cmp ax, UpBound
jg InpRep
jmp InpQuit
InpBS:
cmp al, 8
jne InpDig
cmp cx, 1
jne InpBS2
test bh, 1
jz InpBS2
xor bx, bx
mov si, bx
InpBS2:
mov al, 8
int 29h
mov al, 32
int 29h
mov al, 8
int 29h
mov ax, di
mov di, 10
xor dx, dx
div di
mov di, ax
dec cx
jmp InpRep
InpSign:
cmp al, '-'
jne InpPlus
not si
jmp InpSign3
InpPlus:
cmp al, '+'
jne InpDig
InpSign3:
or bh, 1
InpNext:
inc cx
mov al, bl
int 29h
jmp InpRep
InpDig:
sub al, 30h
jb InpRep
cmp al, 9
ja InpRep
xor ah, ah
mov es, di
xchg di, ax
mov dx, 10
mul dx
jc InpRestor
add di, ax
jno InpNext
InpRestor:
mov di, es
jmp InpRep
InpQuit:
push ax
mov al, 13
int 29h
mov al, 10
int 29h
pop ax
ret
Input endp
Print proc stdcall uses ax dx bx
cwd
test dx, dx
jz PrRec
xor ax, dx
sub ax, dx
push ax
mov al, '-'
int 29h
pop ax
xor dx, dx
PrRec:
mov bx, 10
div bx
or dl, 30h
test ax, ax
jz PrOut
call Print
PrOut:
mov al, dl
int 29h
ret
Print endp
c_s ends
end begin

s_s segment stack "stack"
dw 12 dup(?)
s_s ends
d_s segment
x db 12 dup(?),0ah,0dh,"$"
y db 12 dup(?),0ah,0dh,"$"
d_s ends
c_s segment
assume ss:s_s,ds:d_s,cs:c_s
begin:
mov ax,d_s
mov ds,ax
mov si,0
L1:mov ah,01h
int 21h
cmp al,13d
je L3
mov x[si],al
sub x[si],30h
add bl,x[si]
add x[si],30h
inc si
jmp L1
L3:
mov ah,9h
lea dx,x
int 21h
mov ah,9h
lea dx,y
int 21h
mov dl,bl
L7:cmp dl,9h
jng L4
cmp dl,15
jng L6
mov bl,dl
and bl,00001111b
shr dl,4
add dl,30h
mov ah,02h
int 21h
mov dl,bl
jmp L7
mov dl,bl
mov ah,02
jmp L5
L6:add dl,37h
jmp L5
L4:add dl,30h
L5:mov ah,02
int 21h
mov ah,4ch
int 21h
int 20h
c_s ends
end begin
работает только если вводишь 1 число, если вводишь несколько, то выдает либо различные рисунки