Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: bscreator am 23. May 2004, 00:28

Titel: Array schließen und ausgeben
Beitrag von: bscreator am 23. May 2004, 00:28
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 ?