使用AT&T语法汇编语言打印数组

时间:2019-11-02 03:30:50

标签: assembly x86-64 att

我正在对数组进行硬编码,并尝试打印出其内容。我是组装的初学者,我迷路了。运行代码时,输​​出为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

0 个答案:

没有答案