这个Linux汇编程序代码有什么问题?

时间:2011-05-06 22:55:47

标签: linux assembly x86

我需要为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

1 个答案:

答案 0 :(得分:2)

你的一些字符串不是零终止。

这可能会混淆printf和scanf。