Adr. Code Mnemonic N 0220 02 ? ? 0221 18 CLC 2 0222 AD 50 02 LDA 0250 4 0225 6D 52 02 ADC 0252 4 0228 8D 16 02 STA 0216 4 022B AD 51 02 LDA 0251 4 022E 6D 53 02 ADC 0253 4 0231 8D 17 02 STA 0217 4Offensichtlich wird folgende arithmetische Operation ausgeführt:
M[0216] := M[0250] + M[0252] + 0 (8 Bit) M[0217] := M[0251] + M[0253] + C (8 Bit)oder:
M[0217,0216] := M[0251,0250] + M[0253,0252] (16 Bit)Es handelt sich um eine Addition zweier 16-Bit d.h. 2-Byte-Zahlen. High- und Lowbyte stehen in benachbarten Speicherzellen, wobei das Highbyte an der höhereren Speicheradresse steht. Dies ist nicht zwingend, bei diesem Prozessor jedoch konsistent zum Umgang mit 16-Bit-Adressen. Ein möglicherweise entstehender Übertrag bei der Addition des Highbytes könnte im weiteren Programm bearbeitet werden.
Die Abarbeitung dauert 26 Takte. Hierbei ist zu beachten, da§ alle Speicherzugriffe auf 02xx erfolgen, d.h. auf derselben Seite. Bei einem Seitenwechsel verlŠngert sich die Abarbeitung um einen Takt.
Aus der Tabelle (die auf das Übungsblatt kopiert war) lassen sich einige Charakteristika herauslesen. Der Umgang mit Notationen solcher Tabellen und Grundkenntnisse der Assemblerprogrammierung werden vorausgesetzt.
Der 6502 ist eine Einadreßmaschine mit typischer Load-Store-Architektur. Er besitzt daher keine Move-Befehle. Der Prozessor besitzt einen 8-Bit-Akkumulator sowie zwei 8-Bit-Indexregister X und Y. Es handelt sich um einen 8-Bit-Prozessor. Adressierbarer Speicherbereich ist 64 KByte (z.B. Commodore 64). Der Speicher ist seitenadressiert (paging). Dies ist daran zu erkennen, daß bei einem Seitenwechsel die Ausführungszeit eines Befehls größer wird. Er besitzt einen internen Stackpointer. Für besondere Anwendungen kann auch in einem Dezimalmodus gerechnet werden, der Prozessor arbeitet dann mit BCD-Ziffern
Bei beiden Rechenwerken wird der Ausgang wieder auf einen Eingang desselben Rechenwerks zurückgeführt. Dauert die Berechnung der beiden Operationen jeweils drei Taktzyklen, dann kann auch nur alle drei Taktzyklen die Berechnung einer neuen Iteration gestartet werden. Konsequenz: Die Pipeline erzeugt lediglich in jedem dritten Takt ein neues Ergebnis.