2 Stimmen

LC-3 If/Else-Anweisungen

Ich habe ein Problem mit diesem LC-3 Programm, ich kann den String nicht aus der if/else Anweisung anzeigen lassen. Ich weiß nicht, ob ich die Anweisung falsch mache, oder ob ich den String falsch anzeige. Das Ziel ist es, dass es das IF anzeigt, wenn der Benutzer 0 eingibt und das else (Programm anhalten) anzeigt, wenn er 1 eingibt.

    .ORIG   x3000

START:
; Register löschen
    AND R0, R0, 0
    AND R1, R0, 0
    AND R2, R0, 0
    AND R3, R0, 0
    AND R4, R0, 0

; Begrüßung ausgeben
    LEA R0, GREETING
    PUTS

; Benutzereingabe bekommen
; Zurückgeben
    GETC
    PUTC

; Eingegebenen String speichern
    ST  R0, USERINPUT

;ERSTE IF-ANWEISUNG
OUTPUT  LD R2, USERINPUT
    BRz ENDIF
    LEA R3, GREETING
;SONST
    ENDIF
    LD R2, USERINPUT
    HALT
    DONE

; Prozessor anhalten
    HALT

    GREETING:   .STRINGZ    "\nWillkommen beim Spiel.\nMöchten Sie spielen?\n0:Ja   1:Nein\n: "
    GREETINGTWO:    .STRINGZ    "\nTest if statement: "

    ; Variablen
    USERINPUT:  .FILL   0
    ; Ende des Codes
    .END

1voto

aqua Punkte 587

Du zeigst den String falsch an.

LEA lädt nur die effektive Adresse eines Labels/ Speicheroffsets, es druckt sie nicht aus. Wenn du einen String ausgeben möchtest, musst du TRAP x22 aufrufen (als Makro PUTS), wie in der 14. Zeile deines obigen Codebeispiels.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X