Anfänger Problem
-
hallo habe folgenden code abgetippt
lea dx, prompt ;ausgabe mov ah, 9 int 21h mov ah, 1 ;einlesem int 21h cmp al, 'j' ;war j jmp gut cmp al, 'n' ;war n jmp bad gut: lea dx, endl mov ah, 9 int 21h lea dx, react1 mov ah, 9 int 21h bad: lea dx, endl mov ah, 9 int 21h lea dx, react2 mov ah, 9 int 21h
wenn ich das programm jetzt starte springt er nicht in die einzelnenn funktionen sondern geht alles durch
woran liegt das ?
-
zwei sachen fehlen denk ich.
jmp springt immer an eine stelle, ohne irgendwelche bedingungen zu berücksichtigen. in diesem fall brauchst du ein je: jump if equal. du hast al mit 'j' verglichen durch cmp. das war schon mal gut. jetz willst du aber nur dann springen, wenn auch beide gleich sind. eben "if equal". du solltest dir auch überlegen, was passieren sollte, wenn der user weder j noch n eingegeben hat.
und zum zweiten: dein ziel "gut" braucht noch ein jump (diesmal wirklich jmp) hinter das bad ziel, sonst würde der code bei bad immer nach gut ausgführt werden, da der prozessor einfach nach gut weiter macht und damit zu bad kommt.lea dx, prompt ;ausgabe mov ah, 9 int 21h mov ah, 1 ;einlesem int 21h cmp al, 'j' ;war j je gut ;<--- neu cmp al, 'n' ;war n je bad ;<--- neu gut: lea dx, endl mov ah, 9 int 21h lea dx, react1 mov ah, 9 int 21h jmp fertig ;<--- neu bad: lea dx, endl mov ah, 9 int 21h lea dx, react2 mov ah, 9 int 21h fertig: ;<--- neu
ich hoff, dass es jetzt klappt.
sollte bei diesem code jemand weder j noch n eingeben, so wird der code bei gut ausgeführt.björn
-
Dank dir jetzt geht es
die falsche eingabe fang ich so ab
loop1:
lea dx, prompt ;ausgabe
mov ah, 9
int 21hmov ah, 1 ;einlesem
int 21hcmp al, "j" ;war j
je gutcmp al, "n" ;war n
je badlea dx, error
mov ah, 9
int 21hjmp loop1