Witam, uczę się assemblera i zajmuje się aktualnie działaniami arytmetycznymi. Mam program na sume 2 liczb wprowadzanych z klawiatury. Program działa ale tylko jeśli wynik jest liczba jednocyfrową, jeśli suma wynosi 10 wyświetla : jeśli 11 wyświetla ; . Nie mam pojęcia co źle zrobiłem. Oto kod:
section .tekst global start
start:
mov eax, 4 mov ebx, 1 mov ecx, tekst mov edx, [dlugosc] int 80h
mov eax, 3 mov ebx, 0 mov ecx, x mov edx, [dlgx] int 80h
section .tekst
global start
start:
mov eax, 4
mov ebx, 1
mov ecx, tekst
mov edx, [dlugosc]
int 80h
mov eax, 3
mov ebx, 0
mov ecx, x
mov edx, [dlgx]
int 80h
mov eax, 4
mov ebx, 1
mov ecx, tekst2
mov edx, [dlg2]
int 80h
mov eax, 3
mov ebx, 0
mov ecx, y
mov edx, [dlgy]
int 80h
mov eax, 4
mov ebx, 1
mov ecx, tekst3
mov edx, [dlg3]
int 80h
mov ecx, [x]
add ecx, [y]
sub ecx, 48
mov [wynik], ecx
mov edx, [dlgw]
mov eax, 4
mov ebx, 1
mov ecx, wynik
mov edx, [dlgw]
int 80h
mov eax, 1
int 80h
section .data
tekst db "Program obliczajacy sume dwoch liczb", 0ah, "Podaj pierwsza liczbe:", 0ah
dlugosc dd $-tekst
x dd 0
dlgx dd $-x
tekst2 db "Podaj druga liczbe:", 0ah
dlg2 dd $-tekst2
y dd 0
dlgy dd $-y
tekst3 db "Suma podanych liczb wynosi:", 0ah
dlg3 dd $-tekst3
wynik dd 0
dlgw dd $-wynik
#assembler #assembly #programowanie
Hint: liczby większe od 9 mają co najmniej dwa znaki. Wyświetlasz jeden.