简单的汇编级程序返回错误的值

时间:2014-05-16 17:28:27

标签: assembly nasm x86-64

section .data

section .bss
x1: resb    4
x2: resb    4
k:  resb    4
n:  resb    4

section .text

global _fibonacci

_fibonacci:
mov [n],    rdi
mov rax,    0
mov [x1],   rax

mov rax,    1
mov [x2],   rax

mov rax,    0
mov [k],    rax

mov rax, [n]
ret

这是我的一个小功能。我不知道,为什么返回的值是“0”,尽管链接的C程序给出了' 10'。有谁知道,出了什么问题?

1 个答案:

答案 0 :(得分:1)

所有变量都声明为4个字节,但是你正在从它们读取和写入64位寄存器(8个字节)。

此代码:

mov rax,    0
mov [k],    rax

将从k开始的8个字节中存储0,即kn