====== Toröffnungssequenzen ====== ((Material von Nopper, Makowsky, Schaller, [[https://creativecommons.org/licenses/by-nc-sa/3.0/de/|CC-BY-NC-SA]])) Diese Aufgaben dienen dazu, mit der Programmierung des Simulators vertraut zu werden. Alle Operationen sollen durchgeführt werden, ohne nach der anfänglichen Initialisierung irgendein Register direkt (von Hand) zu verändern. Ausschließlich das Schließen und Öffnen der "Tore" und das Auslösen eines Doppeltakts (Taste ''>>'') sind erlaubt. {{:aufgabe.png?nolink |}} === (A1) === Löse die folgenden Aufgaben - notiere nach jedem Schritt die Belegung der Register AX, BX und IP. Schreibe zunächst 09h von Hand in das Register DR. Erzeuge dann nach obigen Regeln die folgenden Operationen: * a) AX := DR (steht für "AX erhält den Wert in DR", es soll also danach eine 09 in AX stehen) * b) IP := DR * c) BX := IP + DR * d) IP := −1 (Hinweis: −1=FF) * e) IP := IP + DR * f) AX := AX − BX (geht nicht in einem Schritt, DR darf in diesem und den folgenden Befehlen überschrieben werden) * g) BX := −BX * h) Vertausche den Inhalt der Register AX und IP. Zur Kontrolle: Jetzt sollte in AX 08, in BX EE und in IP F7 stehen. ++++ Lösungen | * a) AX := DR: 0+9 \\ * b) IP := DR: 4+9 \\ * c) BX := IP + DR: 2+5+9 \\ * d) IP := -1: 4+7+D \\ * e) IP := IP + DR: 4+5+9 \\ * f) AX := AX − BX: 3+A danach 0+1+9+D \\ * g) BX := -BX: 3+A danach 2+9+D \\ * h) AX und IP vertauschen: 1+A dann 0+5 dann 4+9 ++++ {{:aufgabe.png?nolink |}} === (A2) === * a) Schreibe verschiedene Werte direkt in AX. Wann ist SF=0 und wann ist SF=1? Erstelle eine Regel. Wofür könnte man die Information in SF verwenden? * b) Da in MIKROSIM alle Register nur 1 Byte breit sind, ist der RAM auf 256 Byte beschränkt. Erläutere, warum das so ist. * c) Die ersten PCs hatten ein Datenregister mit 16 Bit Breite und einen Adressbus mit 20 Bit Breite. Geben Sie an, wie groß der Arbeitsspeicher maximal sein konnte. * d) Lange Zeit (bis zu den Intel Pentium-Prozessoren) war der Arbeitsspeicher auf eine maximale Größe von 4 GByte beschränkt. Welche Adressbusbreite bzw. Datenbusbreite war dafür nötig? * e) Recherchiere, welche Breite die Register in aktuellen Rechnern haben. ++++ Lösungen | * a) SF ist genau dann 1, wenn AX<0, das kann man später für Sprungbefehle verwenden. * b) Wenn das Adressregister nur 1 Byte breit ist, können nur 2^8=256 verschiedene Adressen angesprochen werden. Da auch die Datenbusbreite nur 1 Byte groß ist, kann durch jede Adresse auch nur 1 Byte angesprochen werden (Bei 2 Byte-Datenbus könnten zwar 512 Byte Speicher verwendet werden, aber immer nur 2er-Blöcke abgerufen werden. Das ist auch eher unüblich). Daher ist der Speicher auf 256 Byte beschränkt. * c) 2^20 = 1,048576 Millionen verschiedene Adressen mit jeweils 16 Bit = 2 Byte großer Datenmenge macht 2,097152 MiB. * d) Um 4 Gbyte Speicher zu adressieren muss der Adressbus 32Bit breit sein. * e) 64 Bit => Theoretisch bis zu 2^64 = 16 Exbibyte (Zahl mit 18 Nullen) adressierbar. ++++