Das obige Problem ist erledigt.
Das aktuelle Problem:
Bei der unteren Funktion (CMPAS) wird ein Array mit Tastatureingaben
(Input) mit einem in SI befindlichen String verglichen. Wenn das
aktuelle Zeichen der Tastatureingabe mit dem aktuellen Zeichen
des zu vergleichenden Strings übereinstimmt, dann überprüfe nächstes
Element, sonst Ende.
...
msg_Gleich db ' =GLEICH',13,10,0
msg_Ungleich db ' =UNGLEICH',13,10,0
Eingabe db 'Hallo',0
msg_Shell db 'Input : ',0
...
;----------------------------------------------------------------
;Funktion zur Überprüfung auf Gleichheit
;----------------------------------------------------------------
CMPAS: ;Compare Array with String
mov al,[Input+bx] ;Aktuelles Zeichen von Tastaturarray
mov ah,[si+bx] ;Aktuelles Zeichen von String
cmp al,ah ;Stimmt aktuelles Zeichen von Tastaturarray mit
;aktuellem Zeichen des Strings überein?
jne short Ungleich ;nein, springe zu "Ungleich"
cmp bx,0 ;Vergleich, ob Arrayende erreicht
je short Gleich ;alle Zeichen wurden überprüft (bx=0), daher Gleich
dec bx ;nächstes Element
jmp CMPAS ;nächster Vergleich
;-------------Eingaben gleich---------------------
Gleich:
mov si,msg_Gleich
call WriteString
;-------------Eingaben ungleich--------------------
Ungleich:
mov si,msg_Ungleich
call WriteString
;-----------------------------
;Ausschnitt vom Hauptquellcode:
Shell:
mov si,msg_shell
call WriteString ;"Input :" ausgeben
mov bx,0 ;Array-Zeiger auf Anfang (für Tastaturarray)
call GetAndSet ;Tastatureingaben
mov si,Eingabe ;SI den String "Hallo" zuweisen
call CMPAS ;Vergleich durchführen
mov bx,0 ;Array-Zeiger auf Anfang (für Arrayelemente initialisieren)
call ClearKeyboardBUffer ;alle Arrayelemente mit 0 initialisieren
jmp Shell
;-----------------------------
Der Vergleich funktioniert. Bei einer anderen Tastatureingabe
als Hallo (bspw. Hall) erscheint:
Input : Hall =UNGLEICH
Bei der richtigen Eingabe (Hallo) erscheint:
Input : Hallo =GLEICH
=UNGLEICH
Warum erscheint bei der richtigen Tastatureingabe unten =UNGLEICH,
obwohl doch zuerst =GLEICH erscheint ?
Gruss,bscreator