Печать массива на языке ассемблера AT & T - PullRequest
0 голосов
/ 02 ноября 2019

Я жестко кодирую массив и пытаюсь распечатать его содержимое. Я новичок в сборке, и я заблудился на том, что идти отсюда. Когда я запускаю код, выводится 1 и 6295604. Если кто-то может помочь мне исправить мои ошибки и распечатать ошибку, которая была бы потрясающей.

    .data

arr: .quad 1, 2, 3, 4, 5 
output: .string "%d \n"

.text

.global main
sumarr:
    xor %rax, %rax
    xor %rcx, %rcx

printarr:
    xor %rax, %rax
    decq %rsi
    movq (%rdi, %rsi, 8), %rcx
    movq %rcx, %rax


    cmpq $0, %rsi
    jne printarr
    call fake

    ret

main:

    mov $arr, %rdi  
    mov $5, %rsi
    call sumarr

fake:  

    push %rax   
    push %rcx
    push %rdi


    mov $output, %rdi
    mov %rax, %rsi
    xor %rax, %rax
    call printf

    pop %rax
    pop %rcx
    pop %rdi
    ret
...