---------------------------------------¢¢ Assembler Kurs Folge II, Teil II¢¢ (C) 1986 by C.C. Damata¢¢---------------------------------------¢¢¢Das eigentliche Programm:¢¢¢1. Unmittelbare Addressierung:¢ (immediate addressing)¢¢Diese Addressierungsart wird immer be-¢nutzt, wenn konstante Werte verarbeitet¢werden muessen.¢z.B: LDA #0¢Dieser Befehl veranlasst den Computer¢den Wert 0 in den Akkumulator zu laden.¢Gegenbeispiel : LDA 0¢Dieser B. (Befehl) veranlasst den C.¢(Computer) den Wert, der in der Adresse¢0 steht,in den Akkumulator zu laden.¢Das "#" ist also das Erkennungszeichen¢fuer die unmittelbare Adressierung.¢Folgende Befehle sind fuer unmittelbare¢Adressierung zulaessig:¢¢LDA¢LDX¢LDY¢¢ADC (addiere mit Carry-Flag)¢SBC (subtrahiere)¢¢CMP (Vergleiche (Compare)¢CPX¢CPY¢¢sowie die logischen Operatoren AND,ORA,¢EOR¢¢Auf die Rechen-,Vergleichs und Logic-¢befehle werden wir spaeter genauer ein-¢gehen.¢¢¢¢¢ Die absolute Adressierung:¢ (absolute adressing)¢ ---------------------------------¢¢z.B: LDA 710¢¢Hier wird der Wert, der in 710 ge-¢speichert ist in den Akkumulator ueber-¢tragen.¢Die Werte , die mit der absoluten Adr.¢verarbeitet werden muessen immer¢groesser als 255 sein.¢Alle Werte , die kleiner oder gleich¢255 sind werden mit der ¢¢ ZERO PAGE Adressierung¢¢verarbeitet (z.B LDA 82).¢¢Nun werden sich einige fragen, was der¢Unterschied nun soll. Der Unterschied¢liegt einfach darin, dass fuer die¢absolute Adressierung 3 Byte und fuer¢die Zero Page Adr. nur 2 Byte benoetigt¢werden:¢¢Assembler Maschinencode¢Befehl¢¢LDA 256 $AD $00 $01¢¢LDA 255 $A5 $FF¢¢Wenn wir mit einem Assembler pro-¢grammieren, ist dieses nicht ganz so ¢wichtig, da der Assembler die unter-¢schiedlichen Adressierungsmodi selbst-¢staendig erkennt.!¢¢¢---------------------------------------¢In der naechsten Ausgabe werden wir ¢eine Uebersicht ueber saemtliche¢Befehle und deren Adressierungsmodi¢bringen.¢---------------------------------------¢¢Natuerlich gibt es wesentlich mehr¢Adressierungsmodi. Aber wir glauben,¢dass es wenig Zweck hat, gleich alle¢vorzustellen.¢Wir werden speziellere Adressierungs-¢modi spaeter immer gleich am¢praktischen Beispiel zeigen.¢¢¢Moegliche Befehle fuer absolute Adr.¢und Zero Page Adr.¢¢LDA¢LDX¢LDY¢¢STA¢STX¢STY¢¢ADC¢SBC¢INC¢DEC¢¢alle Vergleichs- und Logicbefehle¢¢JMP (∈⌡≥ absolute Adr)¢JSR ( " " " )¢¢alle SHIFT Befehle, die spaeter er-¢klaert werden.¢¢Wir sehen, dass sehr viele Befehle ¢fuer die absolute Adr. und Zero Page¢Adr. ausgelegt sind.¢Diese Adressierungsarten und wie auch¢die unmittelbare sind ersteinmal die¢grundlegenden Arten der Adr.¢Es folgen Beispiele...¢¢¢¢Anwendungsbeispiele fuer die absolute ¢und Zero Page Adressierung und die¢Benutzung des DEBUGers:¢¢Aufg.: Die Bildschirmfarbe ist auf¢ weiss (Wert 15) zu setzen.¢ Der linke Rand im Editor soll¢ 2 Zeichen nach links geschoben¢ werden, so dass 40 Zeichen pro¢ Zeile erreichbar sind.¢¢ 5 .OPT OBJ ; IN DEN SPEICHER¢10 *=$5000 ; Startadr.¢20 ;¢30 LDA #15 ; UNMITTELBAR¢40 STA 710 ; ABSOLUT¢50 ;¢60 LDA #0 ; UNMITTELBAR¢70 STA 82 ; ZERO PAGE¢80 ;¢90 BRK ; = STOP¢¢¢Ist das Prg. eingegeben, so soll es¢mit 'ASM' assemblieren.¢Danach gehe man mit 'BUG' in den De-¢bugger und starte das PRG mit:¢¢ G5000¢¢Nun sollte der Bildschrm weiss und der¢Cursor τβ∈· links sein (wie in Basic¢nach POKE 82,0).¢¢Wenn man jetzt eine andere Farbe¢wuenscht, so muesste man jetzt wieder¢zurueck in den Editor, den ent-¢sprechenden Bef. (LDA #15) auf z.B.¢LDA #16 aendern und das gesamte Prg.¢noch einmal assemblieren.¢Aber eigentlich ist ja nur eine Zahl¢im gesamten Prg. geaendert worden. Hier¢hilft uns dann der Debugger.¢Wir schreibrn also:¢¢C5001<10¢¢Die 10 ist HEXadecimal und hat den ¢DECimalen Wert 16.¢(Beachte: Im DEBUGGER muessen alle Ein-¢gaben in HEX gemacht werden.)¢¢Wieso muss eigentlich Adr $5001 ge-¢aendert werden ???:¢¢Im Quelltext ist angegeben, dass $5000¢Startadr ist.¢LDA #16 als unmittelbarer Bef. belegt¢zwei Bytes.¢Also steht in $5000 der Bef. LDA ($A9).¢In $5001 steht dann der Wert 16. So ¢muss also $5001 geaendert werden.¢Anderfalls muesste die Aenderung im¢DEBUGGER so lauten:¢¢C5000<A9,10¢¢Wir hoffen, dass durch dieses Beispiel¢deutlich geworden ist, wie man mit¢EDITor und DEBUGer sinnvoll arbeiten¢kann.¢¢¢