Musterlösung zum 1. Übungsblatt



1. Aufgabe

Disassemblierung

Es handelt sich beim gezeigten Speicherausschnitt um ein kurzes Programmstück zur Addition zweier 16-Bit Zahlen. Beginnt man mit der Disassemblierung bei der Speicherstelle 0220 die das Byte 02 enthält, so stellt man fest, daß dies keinen Befehl des 6502 darstellt. Es handelt sich um den Rest des vorhergehenden Befehls oder um ein Datenwort, das an dieser Stelle abgelegt ist. Beginnt man bei 0221 so ergibt sich folgendes Programm:
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   4
Offensichtlich 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.

Charakteristische Eigenschaften des Prozessors

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

2. Aufgabe (Pipelining)

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.

3. Kontrollfragen

Die Lösung der Kontrollfragen sollte aus dem Skript und weiterführender Literatur erfolgen.
Felix Holderied