2

ifこの LC-3 プログラムに問題があります。/elseステートメントから表示する文字列を取得できません。ステートメントが間違っているのか、文字列を間違って表示しているのかわかりません。目標はIF、ユーザーが入力0したときに を表示し、else入力したときに (プログラムを停止) を表示すること1です。

    .ORIG   x3000


START:
; clear registers
    AND R0, R0, 0
    AND R1, R0, 0
    AND R2, R0, 0
    AND R3, R0, 0
    AND R4, R0, 0

; print greeting
    LEA R0, GREETING
    PUTS

; get user-input
; echo it back
    GETC
    PUTC

; store entered string 
    ST  R0, USERINPUT

;FIRST IF STATEMENT
OUTPUT  LD R2, USERINPUT
    BRz ENDIF
    LEA R3, GREETING
;ELSE
    ENDIF
    LD R2, USERINPUT
    HALT
    DONE

; stop the processor
    HALT

    GREETING:   .STRINGZ    "\nWelcome to the game.\nDo you want to play?\n0:Yes   1:No\n: "
    GREETINGTWO:    .STRINGZ    "\nTest if statement: "

    ; variables
    USERINPUT:  .FILL   0
    ; end of code
    .END
4

1 に答える 1

1

文字列を正しく表示していません。

LEA は、ラベル/メモリ オフセットの実効アドレスをロードするだけで、出力しません。文字列を出力したい場合は、上記のコード スニペットの 14 行目のように、TRAP x22 (PUTS にマクロ化) を呼び出す必要があります。

于 2012-02-09T07:12:18.553 に答える