home *** CD-ROM | disk | FTP | other *** search
/ Action! Club Magazin 3B / Action_Club_Magazin_3_1987_Action_User_Group_Side_B.atr / verzweig.txt < prev   
Text File  |  2023-02-26  |  2KB  |  1 lines

  1. ¢********     Verzweigungen     ********¢¢Was waere ein Computer, wenn es keine¢IF...THEN Bef. geben wuerde...??"#$?!¢¢In diesem Teil besprechen wir , wie¢Verzweigungen in die Prg. bauen koennen¢(CMP, CPX , CPY).¢¢Nun soll ein Prg.  geschrieben werden,¢welches aus dem Zufallsregister RANDOM¢(53770 = $D20A) solange liest , bis¢dieses der Wert 50 hat.¢Der Bildschirm soll sich dann jeweils¢anders faerben.¢¢Das Prg.:¢¢10  *=$5000¢20  .OPT OBJ ¢30  LDA #0         ; BILDSCHIRM¢40  STA 710        ; SCHWARZ¢50 LOOP LDA 53770  ; IF PEEK(RANDOM)    60  CMP #50        ; =50?¢70  BNE LOOP       ; <> 50¢80 ; THEN¢90  LDA #50        ; BILDSCHIRM¢91  STA 710        ; ROT¢92  BRK            ; = STOP¢¢Was bewirkt CMP im Computer ?:¢Wenn der Wert hinter CMP gleich dem¢des Akkumulators dann setzt dieser Bef.¢das ZERO FLAG. Ist der Wert ungleich¢dem des Akkus, dann wird das ZERO FLAG¢auf 0 gesetzt.¢¢Der Bef. BNE verzweigt nun immer dann¢zu dem angegebenen LABEL, wenn das ¢ZERO FLAG 0 ist.Im obigen Prg. ist ¢das Zero Flag ja solange auf 0 bis¢der RANDOM Wert gleich 50 ist.¢So ist  koennte man das obige Prg.¢in Basic so schreiben:¢¢10 IF PEEK(53770)<>50 THEN 10¢20 POKE 710,50¢¢¢Der Bef. BEQ + Label ist genau das¢Gegenteil zu BNE. Dieser verzweigt¢naemlich immer dann, wenn das ZERO FLAG¢gesetzt ist.¢Mit dem BEQ koennte das Prg. folgender-¢massen aussehen:¢¢100  *=$5000¢110  .OPT OBJ¢120  LDA #0¢130  STA 710¢140 LOOP LDA 53770¢150  CMP #50¢160  BEQ GLEICH¢170  JMP LOOP¢180 GLEICH LDA #50¢190  STA 710 ¢200  BRK¢¢Mit JMP (JuMP) wird immer zum LABEL¢oder Adr. gesprungen. (Waere also¢ungefaehr identisch mit GOTO)¢¢Die Arbeitsweise der Bef. BNE & BEQ:¢¢Wichtig ist , dass BNE & BEQ keine¢Sprungbefehle sind. BNE & BEQ sind¢2 Byte Befehle:¢Im 1. Byte steht der Befehl und im¢2. Byte in welche Richtung ver-¢zweigt werden soll.¢Steht im 2. Byte also 10, so wird¢der Befehl als naechstes ausgefuehrt,¢der 10 Bytes weiter steht.¢Mit BNE & BEQ kann man vorwaerts als ¢auch rueckwaerts maximal 128 Bytes(in¢jeder Richtung) verzweigen.¢¢Wir wollen an diser Stelle nicht weiter¢in diese Bef. eingehen, da dieses nur¢Verwirrung schaffen wuerde.¢¢Sollte eine Verzweigung ueber diese¢128 Bytes hinausgehen, so wird der¢Assembler einen Fehler ausgeben.¢¢Alle בompare Befehle arbeiten natuer-¢lich identisch, so das auch das X, so-¢wie Y-Register mit einem bestimmten¢Wert verglichen werden kann:¢¢CPX¢CPY¢¢@¢