Klausur SS02 Hilfsmittel Hinweise Aufgabe 1 ... - Stabile-ing
Klausur SS02 Hilfsmittel Hinweise Aufgabe 1 ... - Stabile-ing
Klausur SS02 Hilfsmittel Hinweise Aufgabe 1 ... - Stabile-ing
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>