Hi Leute,
bei meinem Betriebssystem bin ich gerade dabei, eine Befehlsabfrage zu implementiert.
Wird z.B. 'info' eingegeben, sollen Infos wie Versionsnummer, Programmierer, Mitwirkende,... angezeigt werden.
Nach dem Booten wird eine Funktion 'GetAndSet' aufgerufen, die
vom Benutzer eingegebene Zeichen ausgibt und in dem Array
'Taste' speichert.
Wenn Return gedrückt wurde, wird die Funktion beendet
Mein Code dazu lautet:
Fehler db 'Kein gültiger Befehl !',13,10,0
...
mov bx,0
call GetAndSet
mov bx,0
call Befehl_Info
...
-----------------Anfang Funktion 'Befehl_Info'--------------------------
Befehl_Info:
mov ax,0x69 ;ASCII-Code für 'i'
cmp [Taste+bx],ax ;Tastatureingabe mit 'i' vergleichen
jne not_available ;keine Übereinstimmung, Fehlermeldung ausgeben
inc bx ;nächstes Array-Element
mov ax,0x6E ;ASCII-Code für 'n'
cmp [Taste+bx],ax ;Tastatureingabe mit 'n' vergleichen
jne not_available ;keine Übereinstimmung, Fehlermeldung ausgeben
inc bx ;nächstes Array-Element
mov ax,0x66 ;ASCII-Code für 'f'
cmp [Taste+bx],ax ;Tastatureingabe mit 'f' vergleichen
jne not_available ;keine Übereinstimmung, Fehlermeldung ausgeben
inc bx ;nächstes Array-Element
mov ax,0x6F ;ASCII-Code für 'o'
cmp [Taste+bx],ax ;Tastatureingabe mit 'o' vergleichen
jne not_available ;keine Übereinstimmung, Fehlermeldung ausgeben
ret
;----------------------------Ende Funktion 'Befehl_Info'-----------
not_available:
mov si,Fehler
call WriteString
ret
Wenn also bspw. die zweite Tastatureingabe (Array-Element 1) nicht mit 'n' übereinstimmt wird sofort abgebrochen.
Wenn er übereinstimmt, wird die dritte Tastatureingabe (Array-Element 2)
mit 'f' verglichen, ...
Der Fehler:
Bei der Eingabe von 'info' werden nicht die Informationen (Programmierer,..)
ausgegeben, sondern immer nur die obige Fehlermeldung, obwohl die
Tastatureingaben richtig sind.
Tschüss, bscreator