我需要为Linux Assembler编写一个简单的4函数计算器进行2个数字编码,但是编程工作并不完全正常,因为有时读取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
答案 0 :(得分:2)
你的一些字符串不是零终止。
这可能会混淆printf和scanf。