Hola, estoy trabajando con nasm, y me ha surgido un error en un programa que estoy haciendo que usa las funciones externas de C printf y scanf. El programa en ensamblador solicita un numero real, lo lee y lo vuelve a imprimir en pantalla con sus respectivos mensajes. El programa que tengo es este:
%include "asm_io.inc"
segment .data
prompt1 db "Ingrese valor : ",0
prompt2 db "%f",0
prompt3 db "El valor ingresado es %f",10,0
segment .bss
a resw 1
segment .text
global pedir
extern printf, scanf
pedir:
enter 0,0 ; setup routine
pusha
;printf(prompt1)
push prompt1
call printf
add esp,4
;scanf("%f",&a)
push a
push prompt2
call scanf
add esp,8
fld dword[a]
push prompt3
call printf
add esp, 8
salir:
popa
mov eax, 0 ; return back to C
leave
ret
Este programa es llamado por otro en C, compila bien y lo enlazo con el que lo llama usando gcc; pero cuando lo ejecuto, aparce en la pantalla algo como esto:
Ingrese valor:123
El valor ingresado es -0.000000
El valor q ingreso es 123 y me devuelve ese otro valor, agradeceria si alguien me dice en q me estoy equivocando para corregirlo
Muchas gracias