Assembler - Problem mit Schleifenabbruch

BlauerCorsar

Grünschnabel
Moin.

Sitz hier grad vor nem Problem mit einer Schleife.
Aufgabe ist, eine Schleife durchlaufen zu lassen und dabei alle Ascii-Zeichen anzeigen zu lassen. Dabei soll der Beep (07h) ausgelassen werden und die Schleife soll per ESCape Taste abgebrochen werden können.

Habs auch soweit am laufen, hab nur 2 kleine Probleme:
1. Schleife muss mit Tastendruck gestartet werden
2. Wird was anderes als Esc gedrückt ist Schleife nicht mehr anzuhalten

Hier mal der Code, vllt kann mir ja jmd helfen und sagen wa ich falsch mach

Code:
.model small
.code
org 100h

mov dl,00		;Lade DL mit 00
mov AH,0Ch		;Tastatur-
mov AL,01h		;puffer
int 21h			;leeren

M1:
	MOV AH,02	;Anzeige vorbereiten
	int 21h		;Ausgabe
	INC DL		;Incrementiere
	cmp DL,07h	;ist 07h (Beep) erreicht?
	je Weiter	;ja? -> gehe zu weiter

	mov ah,01
	int 16h	
	cmp al,0
	jne Vergleich
	jmp m1

Vergleich:
	cmp al,1bh
	jne M1
	mov ax,4c00h	;beenden vorbereiten
	INT 21h		;beenden

Weiter:                 ;Label für Weiter
	INC DL		;eins weiter um auf 08h zu kommen
	jmp m1		;zurück zu m1

end

thx'n'mfg :)
 
Guten Abend,

also einen Scancode (nicht direkt das ASCII Zeichen) von der Tastatur manuell einzulesen ist einfach:

; input the key (warte bis ein Scancode ankommt)
Check_Key:
in al,64h
test al,00000001b
jz Check_Key

in al,60h


Dann musst du den Scancode in ein ASCII Zeichen umwandeln, und wenn es eben die escape Taste ist die schleife abbrechen.
Die Umwandlung hier zu erklären würde den Rahmen eines Posts bei weitem Sprengen, ein Dokument von mir darüber behandelt das Thema Tastatur Programmierung 50 Seiten lang.

Du kannst das Dokument (Programming the Keyboard genuine) downloaden bei der Website http://www.osdever.net.tc -> Dokumente -> Magazine -> Programming the Keyboard genuine
(ist auf deutsch geschrieben)

lg,

Toaster
 
Danke für die Antwort, hab des Problem schon gelöst, wenn auch auf ne andere Weise..
Bei bedarf kann ich ja den Code mal posten :)
 
Zurück