在打印阵列值上分段故障组装NASM

问题描述

我无法打印出数组值。

程序在到达“ printloop:”标签之前不会显示任何错误。有一些错误使得无法打印这些值,但我找不到它。

希望你可以。

; compile: nasm -felf64 array.asm
; linked in Ubuntu/Linux Mint: gcc -no-pie array.o -o array
; run: ./array

segment .data

lst: dq 101,102,103,104,105
len: equ (($ - lst) / 8)
fmt: dq "%lld ",10,0

segment .text

global main

extern printf

main:
    mov ecx,len
    lea rbx,[lst]
    mov rdx,rbx      ; We'll use RDX below.
    xor edi,edi       
    xor eax,eax

pushloop:
    push qword [rbx+rdi*8]
    add rdi,1
    dec ecx
    jnz pushloop

   mov ecx,len
   xor edi,edi

poploop:
    pop rax
    mov [rdx+rdi*8],rax    
    add rdi,1
    dec ecx
    jnz poploop

    mov ecx,len
    xor edi,edi

printloop:
    mov rax,[rdx+rdi*8]
    add rdi,1  
    mov rcx,fmt
    mov rsi,rax
    call printf wrt ..plt
    dec ecx
    jnz printloop

end:
mov     eax,60
xor     edi,edi
syscall

预先感谢您。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...