Hi Leute,
Ich hab ein Programm geschrieben, das vom Benutzer eingegebene Zeichenfolgen mit gültigen Befehlen vergleicht. Momentan hab ich drei gültige Befehle "info", "list" und "exit".
Mit "info" kann man Infos über das OS einsehen.
Mit "list" zeigt man eine Liste der verfügbaren Befehle an
Mit "exit" beendet man alles und startet den Computer neu
Ist die Tastatureingabe kein gültiger Befehl, wird "Invalid command" auf dem Bildschirm ausgegeben
Ein Ausschnitt meines Codes:
Anzeige:
call Initialize ;Setzt alle Array-Inhalte (von Tastatur) auf 0
mov si,msg_Eingabe
call WriteString ;ausgeben von Command :
call GetAndSet ;Tastatureingabe ermöglichen
call COMMANDLIST ;Überprüfen
jmp Anzeige
COMMANDLIST: ;Beinhaltet die verfügbaren Befehle
Command1:
mov si,Msg_Info ;Befehl "info" überprüfen
call PRUEFEN ;Überprüfen, ob "info" gültig
cmp ax,1 ;Tastatureingabe und Befehl identisch ?
jne Command2 ;nein, auf nächsten Befehl hin überprüfen
call COMMAND_Info ;sonst Befehl "info" ausführen
ret
Command2:
mov si,Msg_List ;Befehl "list" überprüfen
call PRUEFEN
cmp ax,1
jne Command3
call COMMAND_List
ret
Command3:
mov si,Msg_Exit
call PRUEFEN
cmp ax,1
jne NoCommand
call COMMAND_Exit
ret
NoCommand:
mov si,Msg_NoCommand
call WriteString
ret
...
Msg_Info db 'info',0
Msg_List db 'list',0
Msg_Exit db 'exit',0
Msg_NoCommand db 'Invalid command',13,10,0
Die Funktion "PRUEFEN" überprüft den in SI stehenden Befehl
mit der Tastatureingabe auf Länge- und Zeichengleichheit hin.
Ist die Tastatureingabe mit dem aktuellen Befehl auf Länge
und Zeichen gleich, steht in AX=1, wenn ungleich, dann AX=0
Der Fehler:
Wenn ich 'info' oder 'exit' eingebe, werden beide Befehle ausgeführt.
Wenn allerdings 'list' eingegeben wird, erscheint 'Invalid command',
obwohl 'list' doch eigentlich ein gültiger Befehl ist.
Wo liegt der Fehler ?
Gruss,
bscreator
Ich hab ein Programm geschrieben, das vom Benutzer eingegebene Zeichenfolgen mit gültigen Befehlen vergleicht. Momentan hab ich drei gültige Befehle "info", "list" und "exit".
Mit "info" kann man Infos über das OS einsehen.
Mit "list" zeigt man eine Liste der verfügbaren Befehle an
Mit "exit" beendet man alles und startet den Computer neu
Ist die Tastatureingabe kein gültiger Befehl, wird "Invalid command" auf dem Bildschirm ausgegeben
Ein Ausschnitt meines Codes:
Anzeige:
call Initialize ;Setzt alle Array-Inhalte (von Tastatur) auf 0
mov si,msg_Eingabe
call WriteString ;ausgeben von Command :
call GetAndSet ;Tastatureingabe ermöglichen
call COMMANDLIST ;Überprüfen
jmp Anzeige
COMMANDLIST: ;Beinhaltet die verfügbaren Befehle
Command1:
mov si,Msg_Info ;Befehl "info" überprüfen
call PRUEFEN ;Überprüfen, ob "info" gültig
cmp ax,1 ;Tastatureingabe und Befehl identisch ?
jne Command2 ;nein, auf nächsten Befehl hin überprüfen
call COMMAND_Info ;sonst Befehl "info" ausführen
ret
Command2:
mov si,Msg_List ;Befehl "list" überprüfen
call PRUEFEN
cmp ax,1
jne Command3
call COMMAND_List
ret
Command3:
mov si,Msg_Exit
call PRUEFEN
cmp ax,1
jne NoCommand
call COMMAND_Exit
ret
NoCommand:
mov si,Msg_NoCommand
call WriteString
ret
...
Msg_Info db 'info',0
Msg_List db 'list',0
Msg_Exit db 'exit',0
Msg_NoCommand db 'Invalid command',13,10,0
Die Funktion "PRUEFEN" überprüft den in SI stehenden Befehl
mit der Tastatureingabe auf Länge- und Zeichengleichheit hin.
Ist die Tastatureingabe mit dem aktuellen Befehl auf Länge
und Zeichen gleich, steht in AX=1, wenn ungleich, dann AX=0
Der Fehler:
Wenn ich 'info' oder 'exit' eingebe, werden beide Befehle ausgeführt.
Wenn allerdings 'list' eingegeben wird, erscheint 'Invalid command',
obwohl 'list' doch eigentlich ein gültiger Befehl ist.
Wo liegt der Fehler ?
Gruss,
bscreator

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken
Gespeichert


