Musterlösung - Institut für Kommunikationsnetze und ...
Musterlösung - Institut für Kommunikationsnetze und ...
Musterlösung - Institut für Kommunikationsnetze und ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Aufgabe 2<br />
IKR-CISC Modellprozessor: Assemblerprogrammierung<br />
Frage 1 a) Geben Sie die Assemblerbefehlszeile an, mit welcher der Inhalt des Feldes<br />
3 Punkte LEN in myArray ausgelesen <strong>und</strong> in Register D0 geschrieben wird. Die<br />
Startadresse von myArray sei in Adressregister A0 abgelegt.<br />
MOVE (2,A0),D0<br />
b) Geben Sie die genaue Bezeichnung der verwendeten Adressierungsart an.<br />
Adressregister indirekt mit Offset<br />
Frage 2<br />
6 Punkte<br />
Schreiben Sie die Routine ARRAY_GET. Falls der Index auf einen Wert außerhalb<br />
des Arrays verweist, soll in D1 der Wert 1 zurückgegeben werden.<br />
ARRAY_GET: CMP (2,A0),D0 ;Index zu groß?<br />
BCC ARRAY_ERROR ;CC? = Higher or Same?<br />
LSL D0<br />
;Byte-Index berechnen<br />
MOVE (4,A0,D0),D0 ;Datenwert auslesen<br />
CLR D1<br />
;Fehlerflag loeschen<br />
RTS<br />
ARRAY_ERROR: MOVE #1,D1<br />
RTS<br />
;Fehlerflag setzen<br />
Frage 3<br />
9 Punkte<br />
Schreiben Sie die vollständige Routine LLIST_GET.<br />
LLIST_GET: MOVE (2,A0),A0 ;A0 := HEAD<br />
LLIST_LOOP: CMP #0,A0 ;Element-Adresse = 0 ?<br />
BEQ LLIST_ERROR<br />
TST D0<br />
;Position erreicht?<br />
BEQ LLIST_FOUND<br />
SUB #1,D0<br />
;Zaehler dekrementieren<br />
MOVE (2,A0),A0 ;A0 := NEXT<br />
BRA LLIST_LOOP<br />
LLIST_FOUND: MOVE (4,A0),D0 ;VALUE auslesen<br />
CLR D1<br />
;Fehlerflag loeschen<br />
RTS<br />
LLIST_ERROR: MOVE #1,D1<br />
RTS<br />
;Fehlerflag setzen<br />
Aufgabe 2 Seite 6