Die Adressen und Tastaturverhalten Strobe wie ein Apple II aussehen, also werde ich das benutzen, um zu antworten. (Wenn es sich tatsächlich um eine Retrocomputing-Frage handelt, können Sie sie unter Retrocomputing veröffentlichen.)
Für eine etwas andere Antwort von Eight-Bit Gurus Antwort ist hier eine Version ("A") Ihres Codes, die Sie annehmen möchten Drucken Sie das Ende-Zeichen (da es oft Enter/Return wie folgt ist), was die Schleife sauberer macht. Sie können auch die CMP # $ 80 auslassen, weil LDA KYBD N. setzt
START JSR HOME
LOOP LDA KYBD ;Key pressed?
BPL LOOP
STA STROBE ;Yes: clear key
JSR COUT ;Print key
CMP #$8D ;End key?
BNE LOOP
RTS ;Yes: return to caller
Wenn Sie die Ende-Taste nicht drucken möchten, sollten Sie noch den Blitz löschen vor dem Verlassen:
START JSR HOME
LOOP LDA KYBD ;Key pressed?
BPL LOOP
STA STROBE ;Yes: clear key
CMP #$8D ;End key?
BEQ EXIT
JSR COUT ;No: print key
JMP LOOP
EXIT RTS ;Yes: return to caller
Die Exit-Code ist für die Umgebung spezifisch. Zum Beispiel wäre RTS in Ordnung, wenn es von Applesoft BASIC mit CALL 32768 aufgerufen würde, aber wenn Ihr Programm vom ProDOS Disk Operating System aufgerufen wurde, müssten Sie eine API mit dem Befehl QUIT aufrufen.
Beachten Sie, dass die Version "A" nur funktioniert, wenn COUT den Inhalt von A beibehält, wie es in der Apple II-Firmware der Fall ist. Wenn man bedenkt, was sich in jedem Register befindet und welche Flags nach jeder Anweisung geändert oder nicht verändert werden, ist dies der Weg zu einer übersichtlichen und kompakten Assemblersprache.
Es sieht so aus, als ob Sie bereits Vergleiche und bedingte Verzweigungen kennen. Das sollte ausreichen, um dein Problem zu lösen. –