Cześć, zadanie: podać dwie liczby oraz znak, w zależności od podanego znaku wykonać dane działanie na tych liczbach i wypisać wynik. Jednakże w pierwszym programie wprowadzam znak, potem 2 liczby i wszystko jest ok, a w drugim wprowadzam 2 liczby i nie wiem czemu, omija mi wprowadzanie znaku.
extern scanf
extern printf
global main
section .text
main:
mov rdi,podaj
xor rax,rax
call printf
mov rsi,liczba1
mov rdi,format
xor rax,rax
call scanf
mov rsi,liczba2
mov rdi,format
xor rax,rax
call scanf
mov rdi,pytanie
xor rax,rax
call printf
mov rsi,znak
mov rdi,char
xor rax,rax
call printf
mov ebx,[liczba1]
cmp byte [znak],'+'
JNE _odejmowanie
ADD ebx,[liczba2]
jmp _koniec
_odejmowanie:
SUB ebx,[liczba2]
_koniec:
mov esi,ebx
mov rdi,wynik
xor rax,rax
call printf
mov rax,1
int 80h
section .data
podaj: db "podaj liczby",10,0
format: db "%d",0
liczba1: dd 0
liczba2: dd 0
pytanie: db "podaj znak",10,0
znak: db '-'
char: db "%c",0
wynik: db "wynik dzialania to: %d",10,0