2011-05-06 7 views
2

리눅스 어셈블러로 2 ​​개의 숫자 코딩을위한 간단한 4 함수 계산기를 만들 필요가 있지만, 프로그래머는 2 개의 숫자 읽기에 실패하기 때문에 완전히 작동하지 않습니다. 이 Linux 어셈블러 코드에서 무엇이 잘못 될 수 있습니까?

내 설정 및 데이터 :

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

여기서 RELEVANT 코드를 게시하십시오. –

+0

@Diego 귀하의 질문에 관련 있다고 생각되는 코드를 가져 와서 일부 태그를 추가했습니다. 붙여 넣기 저장소를 사용하고 전체 코드를 게시하는 것은 여기에서 눈살을 찌푸리게되므로 적절하다고 생각하는 부분을 포함시켜야합니다. '{} '버튼을 사용하여 코드의 서식을 지정할 수 있습니다. 또한, 태그 바로 아래에있는 질문의 버튼에는'edit' 링크가 있습니다. 그렇게 할 수있는 방법을 바꾸려면 필요합니다. 스택 오버플로에 오신 것을 환영합니다. –

+0

이 숙제입니까? – sehe

답변

2

일부를 당신의 문자열이 0으로 종료되지 않습니다.

아마도 printf와 scanf를 혼동 할 것입니다.

+0

in1 및 in2 문자열에 대해 언급합니까? 어떻게 든 0을 더하면 명확하게 작동하지 않습니다. – diegoaguilar

+0

예, x와 y에 새로운 값을 입력 할 때까지 처음에는 'fmt'가 0으로 종료되었습니다. –

관련 문제