2016-10-20 22 views
0

私は、ユーザーが入力を入力できるようにする簡単なプログラムを作成しており、ユーザーが特定のキーを入力したときにプログラムを終了します。しかし、現在私が現在持っているコードはどこにあるのか分かりません。ループを終了するにはどうすればよいですか?

  OBJ $8000 
    KYBD EQU $C000 
    STROBE EQU $C010 
    COUT EQU $FDED 
    HOME EQU $FC58 

    START JSR HOME 
    LOOP LDA KYBD 
      CMP #$80 
      BCC LOOP 
      STA STROBE 
      JSR COUT 
      JMP LOOP 

ありがとうございました。簡単に言えば

+2

あなたはすでに比較と条件分岐を行う方法を知っているようです。それはあなたの問題を解決するのに十分なはずです。 –

答えて

2

、ちょうどあなたが終了するときに使用するキーコードのため.Aの内容をテストして、等しい場合に分岐:

 OBJ $8000 
KYBD EQU $C000 
STROBE EQU $C010 
COUT EQU $FDED 
HOME EQU $FC58 

START JSR HOME 
LOOP LDA KYBD 
     CMP #$80 
     BCC LOOP 
     CMP #$<KEYCODE> 
     BEQ EXIT 
     STA STROBE 
     JSR COUT 
     JMP LOOP 
EXIT NOP 
2

アドレスとキーボードストロボの動作は、アップルIIのように見えます私はそれを使って答えます。

Eight-Bit Guruの回答から少し違っていますが、ここではコードのバージョン( "A")を次のようにします。ループエンドをよりきれいにする終了キー文字を印刷します(これはしばしば以下のようにEnter/Returnです)。 LDA KYBDが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 

を設定しますので、また、あなたが終了キーを印刷したくない場合は、あなたがまだ終了する前にストロボをクリアしなければならないのCMP#$ 80を省略することができます

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 

終了コードは環境固有のものです。例えばRTSはCALL 32768のApplesoft BASICから呼び出されても問題ありませんが、あなたのプログラムがProDOS Disk Operating Systemから呼び出されていれば、QUITコマンドでAPIを呼び出す必要があります。

バージョン "A"は、Apple IIファームウェアと同様に、COUTがAの内容を保持する場合にのみ動作することに注意してください。各レジスタの内容と、各命令の後に変更または残されたフラグは、簡潔でコンパクトなアセンブリ言語の方法です。

関連する問題