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