Мне нужно сделать простой калькулятор на 4 функции для кодирования 2 чисел с помощью Linux Assembler, однако программа работает не полностью нормально, потому что иногда не удается прочитать 2 числа.
Мои настройки и данные:
bits 32
global main
extern scanf
extern printf
extern exit
section .data
menu: db ; truncated, but essentially a string
msg1: db "El resultado de la suma es: %d", 10, 0
msg2: db "El resultado de la resta es: %d", 10, 0
msg3: db "El resultado de la multiplicacion es: %d", 10, 0
msg4: db "El resultado de la division es: %d", 10, 0
in1: db "Proporciona dato 1: ", 10
in2: db "Proporciona dato 2: ", 10
fmt: db "%d"
x: dd 0
y: dd 0
Функция, которую я считаю, не всегда работает:
leer:
push dword in1
call printf
add esp, 4
push dword x
push dword fmt
call scanf
add esp, 8
push dword in2
call printf
add esp, 4
push dword y
push dword fmt
call scanf
add esp, 8
ret
Исходный код можно найти здесь: http://notepad.cc/piloobru13