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