Witam,
Mam do napisania program który pobiera łańcuch znaków, dodaje kody znaków ASCII tych znaków i wypisuje na ekran wynik, program ma powtarzać operację dopóki użytkownik nie wciśnie klawisza "+". Napisałem w większości ten program, jakoś działa ale nie do końca. Mój program ma w miarę dobre pierwsze przejście (oprócz tego że wypisuje o jedno 0 za dużo, nie wiem czemu...), jednak po przejściu gdy znowu zaczyna (użytkownik nie podał "+") to coś mu nie pasuje i mam wrażenie że uznaje iż stos jest pusty przez co nic nie wypisuje -> powtarza jeszcze raz program i dopiero za drugim razem załapuje że ma coś na stosie (i wypisuje cyfry z poprzedniego przejścia + obecnego).
Poniżej wstawiam kod, bardzo proszę o pomoc gdzie robię błąd.
;===============================================================================
section .text
org 100h
start:
xor bx, bx
xor cx, cx
xor al,al
petla:
mov ax, 0100H
int 21H
and ax, 00FFh
cmp al, 43
je koniec
cmp al, 0DH
je wypisz
add cx, ax
jmp petla
wypisz:
test cx, cx
jz start
mov ax, cx
mov bx, 0AH
xor dx, dx
mov bp, sp
przygotuj:
div bx
push dx
xor dl, dl
test ax, ax
jnz przygotuj
mov ax, 0200H
cyfra:
test bp, sp
je start
pop dx
add dl, 30H
int 21H
jmp cyfra
koniec:
mov ax, 4C00H
int 21H
section .data