NASM 64 BIT STAMPA INTERO

di Anonimizzato6671 il
1 risposte
Salve, dovrei stampare un intero da file nasm, ho una macro che stampa numeri float, ma non so come modificarla per la stampa di interi, questa è la macro:

extern printf
section .bss
align 32
dbuf: resq 1
section .data
dmask: db '%f ',0

%macro sprint 1
pushaq
vpushay
mov rax, 1
mov rdi, dmask
cvtss2sd xmm0, [%1]
call printf
vpopay
popaq
%endmacro

dove pushaq fa la push di tutti i registri generali, a parte rbp e rsp, vpushay fa la push di tutti i registri AVX ymm, vpopay fa la pop di tutti i registri Ymm e popaq fa la pop di tutti i registri generali.
la macro funziona bene stampa un float, prende in ingresso un indirizzo, ad esempio:

temp dd 15.2
..
..
sprint temp

come posso modificarla in modo tale da stampare un intero? so che devo modificare certamente la maschera dove a posto di %f ci va %d, purtroppo sono novello di assembly, qualcuno può aiutarmi?

1 Risposte

  • Basta cambiare cvtss2sd con cvtsi2sd, anche la maschera resta uguale.
Devi accedere o registrarti per scrivere nel forum
1 risposte