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 21h

    mov ah, 1 ;einlesem
    int 21h

    cmp al, "j" ;war j
    je gut

    cmp al, "n" ;war n
    je bad

    lea dx, error
    mov ah, 9
    int 21h

    jmp loop1


Anmelden zum Antworten