›******** 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››@›