Почему сборка NASM 64-битная printf не печатает значение деления с плавающей запятой? - PullRequest
0 голосов
/ 03 октября 2018

Моя цель здесь - добавить 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
...