Я новичок в NASM, и я хочу написать программу, которая показывает макс.значение массива.Но теперь я хочу получить значения и распечатать весь массив, но я не могу, потому что программа печатает в 10 раз больше последнего значения, даже если я добавлю в ESI 32 бита.Что я делаю неправильно?Должен ли я переместить ESI в регистры R12 и выше?Это моя первая программа, использующая массивы в Assembly, поэтому извините за ошибки.
default rel
extern scanf,printf
global main
section .data
tab times 40 dd 0
format db "%d",2ch
najw dd 0
section .text
main:
push rbp
mov rbp,rsp
mov r12d,10
mov r13d,10
_petla1:
dec r12d
cmp r12d,0
je _petla2
mov rdi,format
mov esi,tab
add esi,4
xor rax,rax
call scanf wrt ..plt
jmp _petla1
_petla2:
cmp r13d,0
je _exit
mov rdi,format
mov esi,[tab]
add esi,4
xor rax,rax
call printf wrt ..plt
dec r13d
jmp _petla2
_exit:
mov rsp,rbp
pop rbp
ret