Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1
Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1 Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1
1-94 Aufgaben und Lösungen 4.6 Maschinensprache und ASSEMBLER Aufgabe 4.6.1 (T1) a) Beschreiben Sie kurz die Vor- und Nachteile von memory-mapped und isolated I/O. b) Erläutern Sie die Wirkungsweise der Adressierungsart ARI und erklären Sie, warum gerade diese Adressierungsart in der Praxis besonders wichtig ist. c) Erläutern Sie den Unterschied zwischen arithmetischer und logischer Verschiebung. d) Grenzen Sie die Bedeutung des C-Flag und des X-Flag gegeneinander ab. e) Welche Adressierungsarten werden vor allem bei Stack-Operationen angewendet. Lösung ### e) Als Beispiel für ARI mit Predekrement dient der Befehl MOVE.W D0,-(A7). Hierbei handelt es sich um den Transfer des Inhalts des Registers D0 in den Stack. Die Adresse ergibt sich aus dem Inhalt von A7 minus 1. In manchen anderen Assemblersprachen wird diese Operation durch den Befehl PUSH codiert, dies gilt beispielsweise für die Intel- Prozessoren. Adressregister indirekt mit Postinkrement: Durch MOVE.W (A7)+,D0 wird der Inhalt des durch (A7), d.h. durch den Inhalt des Adressregisters A7 adressierten obersten Stack-Elements wird in das Register D0 übertragen. Hier wird nach der Befehlsausführung der Inhalt von A7 durch Postinkrement um 1 erhöht. Die indirekte Adressierung mit Predekrement oder Postinkrement wird vor allem bei Stack-Operationen angewendet. Die Operandenadresse ergibt sich dann aus dem Stack-Pointer A7. In anderen Assemblersprachen steht dafür oft der Befehl POP. Aufgabe 4.6.2 (L1) Geben Sie für die folgenden Assembler-Befehle die Adressierungsarten bzgl. Quelle und Ziel an: a) MOVE D0,A0 b) MOVE #$123,(A1) c) MOVE (A7)+,D3 d) MOVE D1,$12345 Lösung Adressierungsart Adressierungsart Befehl für Quelle für Ziel MOVE D0,A0 Datenregister direkt Adressreg. direkt (implizit) MOVE #$123,(A1) Konstantenadr. (immediate) Adressregister indirekt, ARI MOVE (A7)+,D3 ARI mit Postincrement (Stack) Datenregister direkt MOVE D1,$12345 Datenregister direkt Absolut lang Aufgabe 4.6.3 (P2) Ein einfacher Mikroprozessor soll Befehle der Formate OP adr und OP verarbeiten können. Dabei soll der Befehlsteil OP jeweils durch ein Byte codiert sein, die Adressen adr sollen zwei Byte lang sein und die Speicherzellen sollen ein Byte speichern können. Es sind folgende Befehle möglich, wobei AC den Akkumulator bezeichnet: OP Befehl Bedeutung A9 LDA a Lade ein Byte von Speicherzelle a in AC 8D STA a Speichere das in AC enthaltene Byte in Speicherzelle a
Aufgaben und Lösungen 1-95 C7 SUB a Subtrahiere das Byte in Speicherzelle a von dem Inhalt des AC C8 ADD a Addiere das Byte in Speicherzelle a zu dem Inhalt von AC 76 HLT Programmende a) Im Hauptspeicher sei ab Speicherzelle 0100hex bis 0112hex ein Programm gespeichert. Ferner sollen die Speicherzellen 0113hex bis 0116hex Daten enthalten. Der relevante Speicherausschnitt habe folgenden Inhalt: 0100hex: A9 01 14 C7 01 13 8D 01 0108hex: 13 A9 01 15 C7 01 13 8D 0110hex: 01 16 76 F0 FF 0F AB 01 Der Befehlszähler soll nun mit 0100hex initialisiert werden und das Programm soll ausgeführt werden. Geben sie für jeden Einzelschritt den Inhalt des Akkumulators an. Was steht nach Beendigung des Programms in den Speicherzellen 0113hex bis 0116hex? b) Schreiben Sie unter Verwendung der oben angegebenen Befehle ein Programm, das die Inhalte der Speicherzellen 0113hex und 0114hex vertauscht. Lösung a) Adresse Befehl / Daten Was passiert? AC 0100 A9 0114 (0114) AC FF 0103 C7 0113 AC-(0114) AC 0F = FF-F0 0106 8D 0113 AC (0113) 0F 0109 A9 0115 (0115) AC 0F 010C C7 0113 AC-(0113) AC 00 = 0F-0F 010F 8D 0116 AC 0116 00 0112 76 HLT Speicherinhalt: 0113: 0F 0114: FF 0115: 0F 0116: 00 b) A9 0113 8D 0115 A9 0114 8D 0113 A9 0115 8D 0114 76
- Seite 43 und 44: Aufgaben und Lösungen 1-43 3.2 Cod
- Seite 45 und 46: Aufgaben und Lösungen 1-45 x i w i
- Seite 47 und 48: Aufgaben und Lösungen 1-47 Aufgabe
- Seite 49 und 50: Aufgaben und Lösungen 1-49 Aufgabe
- Seite 51 und 52: Aufgaben und Lösungen 1-51 Modifik
- Seite 53 und 54: Aufgaben und Lösungen 1-53 Auftrit
- Seite 55 und 56: Aufgaben und Lösungen 1-55 Dieses
- Seite 57 und 58: Aufgaben und Lösungen 1-57 N 2/21
- Seite 59 und 60: Aufgaben und Lösungen 1-59 Der Cod
- Seite 61 und 62: Aufgaben und Lösungen 1-61 Aufgabe
- Seite 63 und 64: Aufgaben und Lösungen 1-63 2 2 8 2
- Seite 65 und 66: Aufgaben und Lösungen 1-65 //*****
- Seite 67 und 68: Aufgaben und Lösungen 1-67 } d=x[i
- Seite 69 und 70: Aufgaben und Lösungen 1-69 return
- Seite 71 und 72: Aufgaben und Lösungen 1-71 printf(
- Seite 73 und 74: Aufgaben und Lösungen 1-73 else pr
- Seite 75 und 76: Aufgaben und Lösungen 1-75 } print
- Seite 77 und 78: Aufgaben und Lösungen 1-77 } free(
- Seite 79 und 80: Aufgaben und Lösungen 1-79 3.5 Ver
- Seite 81 und 82: Aufgaben und Lösungen 1-81 Einsetz
- Seite 83 und 84: Aufgaben und Lösungen 1-83 Lösung
- Seite 85 und 86: Aufgaben und Lösungen 1-85 Axiom 1
- Seite 87 und 88: Aufgaben und Lösungen 1-87 Aufgabe
- Seite 89 und 90: Aufgaben und Lösungen 1-89 Aufgabe
- Seite 91 und 92: Aufgaben und Lösungen 1-91 Aufgabe
- Seite 93: Aufgaben und Lösungen 1-93 Lösung
Aufgaben und <strong>Lösungen</strong> 1-95<br />
C7 SUB a Subtrahiere das Byte in Speicherzelle a von dem Inhalt des AC<br />
C8 ADD a Addiere das Byte in Speicherzelle a zu dem Inhalt von AC<br />
76 HLT Programmende<br />
a) Im Hauptspeicher sei ab Speicherzelle 0100hex bis 0112hex ein Programm gespeichert.<br />
Ferner sollen die Speicherzellen 0113hex bis 0116hex Daten enthalten. Der relevante<br />
Speicherausschnitt habe folgenden Inhalt:<br />
0100hex: A9 01 14 C7 01 13 8D 01<br />
0108hex: 13 A9 01 15 C7 01 13 8D<br />
0110hex: 01 16 76 F0 FF 0F AB 01<br />
Der Befehlszähler soll nun <strong>mit</strong> 0100hex initialisiert werden und das Programm soll ausgeführt<br />
werden. Geben sie für jeden Einzelschritt den Inhalt des Akkumulators an. Was steht<br />
nach Beendigung des Programms in den Speicherzellen 0113hex bis 0116hex?<br />
b) Schreiben Sie unter Verwendung der oben angegebenen Befehle ein Programm, das die<br />
Inhalte der Speicherzellen 0113hex und 0114hex vertauscht.<br />
Lösung<br />
a)<br />
Adresse Befehl / Daten Was passiert? AC<br />
0100 A9 0114 (0114) AC FF<br />
0103 C7 0113 AC-(0114) AC 0F = FF-F0<br />
0106 8D 0113 AC (0113) 0F<br />
0109 A9 0115 (0115) AC 0F<br />
010C C7 0113 AC-(0113) AC 00 = 0F-0F<br />
010F 8D 0116 AC 0116 00<br />
0112 76 HLT<br />
Speicherinhalt:<br />
0113: 0F 0114: FF 0115: 0F 0116: 00<br />
b) A9 0113<br />
8D 0115<br />
A9 0114<br />
8D 0113<br />
A9 0115<br />
8D 0114<br />
76