24.12.2014 Aufrufe

Klausur SS02 Hilfsmittel Hinweise Aufgabe 1 ... - Stabile-ing

Klausur SS02 Hilfsmittel Hinweise Aufgabe 1 ... - Stabile-ing

Klausur SS02 Hilfsmittel Hinweise Aufgabe 1 ... - Stabile-ing

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

FHD<br />

FB Elektro- und Informationstechnik<br />

Mechatronik<br />

Mikroprozessortechnik<br />

<strong>Klausur</strong> <strong>SS02</strong><br />

Dr. Schaefer<br />

Nachname Vorname Matrikelnummer Unterschrift<br />

<strong>Hilfsmittel</strong><br />

• Buch ATMEL AVR Instruction Set<br />

• Weitere Bücher und eigene Aufzeichnungen sind erlaubt.<br />

• Keine Taschenrechner oder andere elektronische Geräte !<br />

<strong>Hinweise</strong><br />

Alle Programmbeispiele beziehen sich auf einen 8 Bit RISC Microcontroller ATMEL AVR AT90S8515.<br />

Alle Register, die nicht zu den Rückgabeparametern gehören, müssen außerhalb der Unterprogramme<br />

ihre Werte behalten !<br />

Sedezimalzahlen ("hex") haben den prefix 0x, Binärzahlen haben den Präfix 0b, Zahlen ohne Präfix sind dezimal.<br />

<strong>Aufgabe</strong> 1: Prüfsummen - Programm<br />

Schreiben Sie in Maschinensprache ein Unterprogramm "unsigned short checksum(BYTE * Z, BYTE N)".<br />

Dieses Programm hat die <strong>Aufgabe</strong>, eine Prüfsumme über einen im RAM liegenden Speicherbereich zu bilden.<br />

Input: Z = Zeiger auf den Anfang des zu prüfenden Speicherbereich.<br />

R16<br />

= Länge des zu prüfenden Bereichs N in Bytes<br />

Output: R17:R16 = Prüfsumme, 16 bit unsigned<br />

Die Prüfsumme ist die 16-Bit - Summe aller Bytes im zu prüfenden Speicherbereich.<br />

1.1 Geben Sie die Abfolge der Programmschritte im Pseudocode an.<br />

1.2 Codieren Sie das Unterprogramm in AVR Maschinencode! Kein Hauptprogramm dazu schreiben !<br />

<strong>Aufgabe</strong> 2: Arithmetrische und logische Befehle<br />

R16<br />

vorher<br />

R17<br />

vorher<br />

Flags<br />

vorher<br />

Befehl<br />

R16<br />

nachher<br />

R17<br />

nachher<br />

Flags<br />

nachher<br />

200 200<br />

200 199<br />

-110 -20<br />

0xa5 0x0f<br />

0xaa 0xff<br />

CZNVS<br />

10111 Add R16,R17<br />

CZNVS<br />

10111 Adc R16,R17<br />

CZNVS<br />

10111 Add R16,R17<br />

CZNVS<br />

10111 Eor R16,R17<br />

CZNVS<br />

10111 Asr R16<br />

C Z N V S<br />

C Z N V S<br />

C Z N V S<br />

C Z N V S<br />

C Z N V S<br />

1 <strong>SS02</strong>


FHD<br />

FB Elektro- und Informationstechnik<br />

<strong>Aufgabe</strong> 3: Programmanalyse<br />

Mechatronik<br />

Mikroprozessortechnik<br />

Dr. Schaefer<br />

Analysieren Sie folgendes Maschinenprogramm:<br />

0000 c010 rjmp main<br />

0001 930f acc: push R16<br />

0002 931f push R17<br />

0003 9110 0061 lds R17,accu+1<br />

0005 0f01 add R16,R17<br />

0006 9300 0061 sts accu+1,R16<br />

0008 f428 brcc acc1<br />

0009 9110 0060 lds R17,accu<br />

000b 9513 inc R17<br />

000c 9310 0060 sts accu,R17<br />

000e 910f acc1: pop R16<br />

000f 911f pop R17<br />

0010 9508 ret<br />

0011 e50f main: ldi R16,low(RAMEND)<br />

0012 bf0d out SPL,R16<br />

0013 e002 ldi R16,high(RAMEND)<br />

0014 bf0d out SPL,R16<br />

0015 e000 ldi R16,low(511)<br />

0016 9300 0061 sts accu+1,R16<br />

0018 e00a ldi R16,high(511)<br />

0019 9300 0060 sts accu,R16<br />

001b e011 ldi R17,1<br />

001c dfe4 rcall acc<br />

001d dfff loop: rcall loop<br />

.DSEG<br />

0060 accu: .byte 2<br />

3.1: Wozu dient die Programmsequenz bei Adresse 11 12 13 14 <br />

Was passiert, wenn diese Sequenz vergessen wird <br />

3.2: Geben Sie anhand der Programmadresse (Spalte 1 des List<strong>ing</strong>s) an, in welcher Reihenfolge das Programm<br />

abgearbeitet wird. (Beispiel: 00 01 0f 10 11 12 13 02 u.s.w)<br />

3.3: Welchen Zweck erfüllt das Unterprogramm "acc" <br />

3.4: Das Unterprogramm enthält einen semantischen Fehler.<br />

Finden und beschreiben Sie diesen !<br />

3.5: Auch das Hauptprogramm enthält einen gravierenden Fehler.<br />

Finden Sie diesen und beschreiben Sie die resultierenden Folgen !<br />

2 <strong>SS02</strong>

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!