TASM - Pętla warunkowa JCXZ

0

Witam mam problem z kodem programu w Asemblerze. Mam wypisać 4 razy znak za pomocą pętli JCXZ niestety wyświetla mi ją tylko raz i nie wiem dlaczego, może ktoś mi pomoże??
Oto kod:
[code]
WARLIT SEGMENT
ASSUME CS:WARLIT

START:
MOV CX,4
JMP WARUNEK

WYPIS PROC
MOV AH,02H
MOV DL,'M'
INT 21H
RET
WYPIS ENDP

WARUNEK:
JCXZ KONIEC
DEC CX
CALL WYPIS

KONIEC:
MOV AH,4CH
INT 21H

WARLIT ENDS
END START
[/code]

1

wrzucasz do rejestru CX 4 później wykonujesz bezwarunkowy skok i sprawdzasz czy cx jest równe. Jeśli tak to przeskakujesz do label KONIEC. Ten warunek nie jest spełnionym, następnie zmniejszasz zawartość cx(czyli teraz bedzie ona wynosic 3) później wywołujesz funkcję wypis. Następnie wykona się kod z pod etykiety KONIEC i program się zakończy.
Rozwiązanie:
po CALL WYPIS
daj bezwarunkowego jumpa do label WARUNEK
Bedzie to mniejwiecej wygladac tak:

WARUNEK:
JCXZ KONIEC
DEC CX
CALL WYPIS
JMP WARUNEK 
0

Dzięki :) pomogło zapomniałem dodać skok :/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.