Witam, mam problem ze skokami po wyborze działania jakie chce wykonać użytkownik.
Jak widać po wpisaniu cyfr pokazuje się zapytanie jakie działanie przeprowadzić na liczbach, po tym program porównuje wpisany znak z czterema symbolami działań artmetycznych po znalezieniu wywoływany jest skok do etykiety po której znajduje się macro.
Przy kompilowaniu wyskakuje mi błąd typu że macro nie pobiera żadnych danych "macro 'dodaj' exists, but not taking 1 parameters"
Program napisany w NASM
org 100h
start:
;-------PODAJ PIERWSZA LICZBE-----------
mov ah,9
mov dx, liczba1
int 21h
mov ah,1
int 21h
sub al,30h
mov [l1], al
;--------PODAJ DRUGA LICZBE-------------
mov ah,9
mov dx, liczba2
int 21h
mov ah,1
int 21h
sub al,30h
mov [l2],al
;--------WYBOR DZIALANIA------------
mov ah,9
mov dx, dzialanie
int 21
mov ah,0
int 16h
mov ah,0eh
int 10h
mov cl,'+'
cmp al,cl
jmp dodaj
mov cl,'-'
cmp al,cl
jmp odejmij
mov cl,'*'
cmp al,cl
jmp mnoz
mov cl,'/'
cmp al,cl
jmp dziel
;--------------DODAWANIE-------------
%macro dodaj 2
mov al,[%1]
mov bl,[%2]
add al,bl
%endmacro
;------------ODEJMOWANIE-------------
%macro odejmij 2
mov al,[%1]
mov bl,[%2]
sub al,bl
%endmacro
;----------MNOZENIE------------------
%macro mnoz 2
mov al,[%1]
mov ax,[%2]
mul al
%endmacro
;----------DZIELENIE-----------------
%macro dziel 2
mov ax,[%1]
mov bl,[%2]
div bl
%endmacro
;------WYWOLANIE MAKR----------------
dodaj:
dodaj l1,l2
odejmij:
odejmij l1,l2
mnoz:
mnoz l1,l2
dziel:
dziel l1,l2
;-----WYSWIETALNIE WYNIKU------------
dodaj l1,l2
mov [c2],al
mov ah,9
mov dx, wynik
int 21h
mov ah,2
mov dl,[c2]
sub dl,30h
int 21h
;------KONIEC PROGRAMU---------------
mov ax,4c00h
int 21h
;-----------ZMIENNE-----------------
liczba1 db "Podaj pierwsza liczbe: ","$"
liczba2 db 10,13,"Podaj druga liczbe: ","$"
dzialanie db 10,13,"Wybierz dzialanie(+,-,*,/): ","$"
l1 db 0
l2 db 0
wynik db 10,13,"Wynik: " ,"$"
c2 db 0