Les adresses et le comportement stroboscopique clavier ressembler à un Apple II, donc je vais l'utiliser pour répondre. Pour une question légèrement différente de la réponse du gourou huit bits, voici une version ("A") de votre code qui suppose que vous voulez imprime le caractère clé de fin (puisque c'est souvent Entrée/Retour comme ci-dessous) ce qui rend la boucle plus propre. Vous pouvez également omettre le # CMP 80 $ parce que LDA KYBD fixe N.
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
Si vous ne souhaitez pas imprimer la touche de fin, vous devriez toujours effacer le stroboscopique avant de quitter:
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
Le le code de sortie sera spécifique à l'environnement. Par exemple, RTS conviendrait si AppLESoft BASIC était appelé avec CALL 32768, mais si votre programme avait été appelé à partir du système d'exploitation ProDOS Disk, vous auriez besoin d'appeler une API avec la commande QUIT.
Notez que la version "A" ne fonctionne que si COUT préserve le contenu de A, comme dans le firmware Apple II. Garder à l'esprit ce qui est dans chaque registre et quels drapeaux sont modifiés ou laissés intacts après chaque instruction est le moyen de concilier et de compacter le langage d'assemblage.
On dirait que vous savez déjà comment faire des comparaisons et des branches conditíonal. Cela devrait suffire à résoudre votre problème. –