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