Auf dieser Seite wird beschrieben, wie der letzte Versuch organisatorisch jedes Mal abläuft. Fragen zu technischen Details werden hier nicht beantwortet. Ebenso finden sich hier keine Angaben über Zeiten: siehe dazu die Einstiegsseite.

Einige Beispielaufgaben, teilweise mit Musterlösungen, leider noch für den 6809-Prozessor, finden sich übrigens im PC-Pool unter P:\ti_prak\v6muster. Die Aufgabenstellungen zeigen in etwa, was vorkommen wird.

Was wird verlangt?

In dem Versuch muß man alleine innerhalb eines Praktikumstermins ein kleines Assemblerprogramm schreiben. Man erhält am Anfang des Termins eine Aufgabe, die innerhalb der Zeit fertig bearbeitet werden muß.

Im Detail wird folgendes verlangt:

  • Ein Entwurf des Lösungswegs auf Papier in einer Hochsprache.
    Hierbei ist es nicht wichtig, die Syntax einer bestimmten Hochsprache einzuhalten, sondern den geplanten Lösungsweg den Betreuern zu vermitteln. Erst wenn der Betreuer den Lösungsweg akzeptiert darf man am Rechner am Assemblerprogramm zu arbeiten beginnen. Dieser Schritt ist als Hilfe gedacht, so daß niemand beim Programmieren einen Weg einschlägt, der nicht funktionieren kann.
  • Ein funktionierendes Assemblerprogramm ...
    Bevor sie uns um Abnahme bitten sollten sie ihr Programm wenigstens mit allen Testfällen des Aufgabenblattes überprüft haben. Von uns kommen dann weitere Tests.
  • ... dessen Quelltext überprüft wird.
    Wenn das Programm alle Testfälle korrekt bearbeitet sehen wir es anschließend durch. Nur wenn das Programm hierbei für gut befunden wird, ist der Versuch bestanden. Gründe, warum ein Progamm hierbei nicht besteht gibt es zahlreich, die allerdings alle recht selten auftreten: ein Programm kann zwei Fehler haben, die sich in allen Testfällen kompensieren (kam schon einmal vor), das Programm benutzt explizit in der Aufgabe verbotene Mechanismen, das Programm hält sich nicht an den eigenen Lösungsentwurf (der ist verpflichtend!), das Programm ist absolut unlesbar (kam noch nicht vor). Wovor sie keine Angst haben müssen sind beispielsweise folgende Gründe: Qualität der Kommentare (ein Programm wird auch ganz ohne Kommentare angenommen) oder ungeschickte Programmierung.
  • Und das ganze in 90 Minuten.
    Der zeitliche Rahmen beträgt einen Praktikumstermin, also zwei Stunden. Davon gehen die Zeit für den Wechsel der Teilnehmer und für organisatorisches ab. Typisch bleiben etwas mehr als die genannten 90 Min. übrig.

Organisatorisches

  • Jeder hat drei Chancen.
    Genauer: jeder hat drei Chancen am Ende des Praktikumszyklus um den letzten Versuch zu bearbeiten. Die drei Chancen sind wie folgt organisiert:
    • der Termin für die erste Chance wird im Praktikum mitgeteilt.
    • die zweite Chance wird direkt dynamisch festgelegt, wenn die erste nicht geklappt hat. Typischerweise einige Tage später.
    • die dritte Chance, falls nötig, findet in der letzten Semesterwoche an einem speziellen Termin statt. An diesem Termin wird eine handselektierte, leichte Aufgabe benutzt. Da die Schwierigkeit der Aufgaben variiert ist so sichergestellt, daß niemand mit drei schweren Aufgaben seine Chancen vertut.
    Wenn man es in den drei Chancen nicht schafft, dann geht einem nichts verloren, außer Zeit. Speziell bedeutet das, daß die vorherigen Versuche erhalten bleiben.
    Wenn man es also nicht innerhalb seiner drei Chancen schafft, dann kann man an jedem Semesterende erneut den Versuch bearbeiten. Aus organisatorischen Gründen gibt es an den Semesterenden, an denen dieser Versuch regulär stattfindet für jeden (die genannten) drei Chancen, an anderen Semesterenden nur eine Chance, und die auch nur auf explizite Nachfrage.
  • Der letzte Versuch ist unabhängig von den anderen Versuchen.
    D.h., man kann an diesem Versuch teilnehmen, auch wenn man die anderen Versuche noch nicht komplett hat. Natürlich erhält man den Schein für das Praktikum erst, wenn man alle Versuche komplett hat. Und es ist empfehlenswert die Versuche davor bereits fertig zu haben, weil man die Arbeitsumgebung für den letzten Versuch dabei kennenlernt.
  • Die Arbeitsumgebung entspricht der im Praktikum bereits bekannten, mit folgenden Abweichungen:
    • Man arbeitet alleine.
      Hilfe von dritten ist verboten und führt wie bei einer Prüfung automatisch zu einem nicht bestandenen Versuch.
      Allerdings sollte man nicht vergessen, daß man die Betreuer fragen darf. Kleine Details (wie addiere ich 5 zum Register X?) beantworten wir gerne. Was wir nicht beantworten sind Fragen, die zu umfassend sind (Wie löse ich die Aufgabe?) oder mangelnde Grundlagen erkennen lassen (Was ist ein Register?).
    • Elektronische Hilfsmittel außer den vorgegebenen sind nicht zulässig.
    • Die Rechner sind nicht mit dem Netzwerk verbunden.
    • Elektronische Datenträger, wie z.B. USB-Sticks, sind nicht zulässig.
      Erste Ausnahme davon ist, daß sie gerne, bevor der eigentliche Versuch beginnt, d.h., bevor die Aufgabenstellung ausgeteilt wird, den eigenen Lieblingseditor auf den Rechner kopieren dürfen. Jedoch keine Musterprogramme, Quelltexte, o.ä. Im Zweifelsfall den Betreuer fragen.
      Die zweite Ausnahme ist, daß sie bei den Rechnern im TI-Praktikumsraum eine bei Versuchsbeginn leere Diskette benutzen dürfen. Da die Rechner komplett vom Netz gebootet werden und danach alles in einer Ram-Disk halten ist bei einem Absturz alles verloren. Eine Diskette darf benutzt werden, um das eigene Programm zwischendurch zu sichern. Im Notfall kann dann der Rechner durch die Betreuer neu gebootet werden, und sie haben ihr Programm dann noch auf Diskette.
    Explizit unverändert gilt:
    • Hilfsmittel in Papierform (eigenen Notzen, Praktikumsanleitung, Skripte, Bücher) sind in überschaubarer Menge zulässig. Empfohlen sind alle Unterlagen mit denen man selbst vertraut ist.

Tipps

Vorbereitung auf den Versuch:

  • Machen sie sich mit dem Befehlssatz des Prozessors vertraut. Man sollte im Hinterkopf haben, was es für Befehle gibt und eine Untermenge davon sofort anwenden können.
  • Machen sie sich mit den vorgegebenen Routinen der Arbeitsumgebung vertraut. Man sollte im Hinterkopf haben, welche Routinen es gibt, und wie man eine solche Aufruft.
  • Der Versuch ist immer eine reine Software-Aufgabe, d.h., Ein- und Ausgabe findet immer über die vorgegebenen Routinen statt. Es wird auch garantiert, daß keine Interrupts vorkommen.
  • Schreiben sie sich Muster vor, wie man eine while-schleife implementiert, wie man ein Array deklariert und die Array-Zugriffe implementiert, skalare Variablen im Speicher anlegt und benutzt, etc. Die Umsetzung eines in Hochsprache vorgeschriebenen Programms in Assembler ist mit solchen Mustern trivial. (Das kann man sogar automatisieren; die Programme, die das tun nennt man "Compiler".)
  • Nutzen sie am Arbeistplatz die Zeit bis zum Austeilen der Aufgabe und erstellen Sie ein Programm, das "Hello, World!" ausgibt und testen sie es. Würden Probleme dabei erst während des Versuchs auftreten, so würde es sie nur unnötig Nerven kosten.
Wenn sie die Aufgabe erhalten haben:
  • Lesen sie die Aufgabe durch.
  • Lesen sie die Aufgabe nochmals durch.
  • Stellen sie sicher, daß sie die Aufgabe verstanden haben, z.B. indem sie das Beispiel manuell bearbeiten. Fragen sie bei Unklarheiten den Betreuer früh! Wenn sie die Aufgabe nicht korrekt verstehen geht gar nichts!
  • Entwerfen sie einen "Schlachtplan" und versuchen sie ihn auf Papier zu bringen (diese Phase sollte am Ende den Entwurf ihres Programms in einer Hochsprache ergeben). Diese Phase darf ruhig etwas länger dauern. Wenn diese Phase bis zur Hälfte der Zeit benötigt, so ist dies meist ok.
  • Wie oben schon einmal gesagt: Die Umsetzung von einer Hochsprache in ein Assemblerprogramm ist so trivial, daß man das sogar Computern beibringen kann! Sie dürfen zwar keinen Compiler benutzen, aber sie dürfen sich vor dem Versuch 6 bereits überlegen, wie man ein IF, ein WHILE, ein ARRAY etc. in Assembler umsetzt. Ein entsprechender Notizzettel darf ja benutzt werden!

Viel Erfolg!