[Assembler] ASCII-Zeichen von einer Zahl in Binär umwandeln

Mamph

Grünschnabel
Guten Tag liebe Gemeinde,

Ich wollte mir ein Programm in Assembler schreiben welches ein ASCII-Zeichen von der Tastatur liest und dann falls dieses ASCII-Zeichen einer Zahl entspricht diese Zahl in Binär umwandelt und dieses Binärwort(sollte nur 4 Bits haben) mir auf den Bildschirm wieder ausgibt. Das Programm soll so lange wiederholt werden bis keine Zahl mehr gedrückt wurde.

Es funktioniert eigentlich soweit nur dass ich, wenn ich eine Zahl eingebe, keine Rückgabe bekomme und das Programm hängen bleibt.

Weiß vielleicht jemand wo mein Fehler ist?

Mit freundlichen Grüßen und vielen Dank schonmal
Mamph

Code:
.MODEL SMALL
.STACK 200h
.DATA

.CODE

PROGRAMMSTART:

MOV AH,1h	
INT 21H

CMP AL,27d
JZ FIN

CMP AL,30h
JL FIN

CMP AL,39h
JG FIN

SUB AL,30d 

MOV CL,0d

JMP SCHLEIF1

MOV CL,0d

JMP SCHLEIF2

JMP PROGRAMMSTART

SCHLEIF2:
	INC CL
	POP BX
	ADD BL,30d
	MOV DL,BL
	MOV AH,2h
	INT 21h
	CMP CL,4h
	JLE SCHLEIF2

ONE:
	PUSH 0001h
	CMP CL,4h
	JLE SCHLEIF1

NULL:
	PUSH 0000h
	CMP CL,4h
	JLE SCHLEIF1

SCHLEIF1:
	INC CL
	SHR AL,1h
	JC ONE
	JNC NULL

FIN:	
	MOV AH,4CH	
	INT 21H 

END PROGRAMMSTART