Hallo Leute,
ich möchte einzelne Tastatureingaben zu einer kompletten
Zeichenkette zusammenfassen und ausgeben.
;Erstellen eines Arrays "Input" mit 50 Byte-Elementen:
times 50 db 0
Input db 0
;Der Hauptquelltext:
....
mov bx,0
call GetAndSet
....
;Ende Hauptquelltext
;Die einzelnen Funktionen:
;Die Funktion WriteString:
;Ausgeben einer in SI stehenden Zeichenkette
WriteString:
lodsb
cmp al,0x00
je Return
mov ah,0x0E
mov bx,0x0007
int 0x10
jmp WriteString
;Die Funktion GetAndSet:
;Einlesen von Tastatureingaben, ausgeben und ASCII-Codes der
;Tasten in Array 'Input' speichern
GetAndSet:
mov ah,0x00 ;Funktion 'Zeichen lesen'
int 0x16 ;Tastaturinterrupt ausführen
cmp al,0x0D ;Taste RETURN gedrückt ?
je ConvertArrayToString ;Ja, springe zu ConvertArrayToString
inc bx ;Keine besondere Taste -> BX auf nächstes Array-Element
mov [Input+bx],al ;speichere Zeichen in Array-Element
mov [EndArray],bx ;Anzahl bisher verwendeter Array-Elemente
mov ah,0x0E ;Funktion 'Zeichen ausgeben'
int 0x10 ;Video-BIOS-Interrupt
jmp GetAndSet
;ConvertArrayToString-Funktion:
;Schließt ein Array durch Anhängen des ASCII-Codes
;von 'Keine Operation' am Array-Ende
ConvertArrayToString:
mov bx,[EndArray] ;Anzahl bisher verwendeter Elemente
inc bx ;nächstes Element auswählen
mov al,0x00
mov [Input+bx],al ;Array schließen
mov si,[Input]
call WriteString
Nur funktioniert das ganze nicht, beim Drücken der Taste
Return wird lediglich in eine neue Zeile gewechselt.
Wo liegt der Fehler ?