Почему программа печатает 10 раз только последнее значение массива? - PullRequest
0 голосов
/ 15 апреля 2019

Я новичок в 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
...