为什么NA​​SM组件64位printf不能打印浮点数的值?

时间:2018-10-03 16:59:10

标签: assembly printf nasm x86-64

我的目标是添加3个浮点数并除以3以计算平均值,然后打印结果。

它组装并执行时,我得到: 平均值是0.000000

而不是计算的平均值。

有人可以告诉我为什么显示0.000000而不是平均值吗?

%macro EXITPGM 0
mov eax, 0
call exit
%endmacro

section .data
flt1  dq 0.0

msg db "The average of the numbers is %f",10,0


section .text
global main
extern printf
extern exit

main:
    push rbp
    mov dword [flt1], __float64__(3.93)
    mov rsi, __float64__(9.4)
    mov rdx, __float64__(84.52)
    add rsi, [flt1]
    add rsi, rdx
    mov rdx, 0
    mov rax, rsi
    mov rcx, 3
    div rcx
    mov rdi, msg
    mov rax, 1
    movq xmm0, rax
    call printf

    pop rbp
    EXITPGM

0 个答案:

没有答案