Dokumentation

(Gruppe 56/Aufg. 1.76)

1. Pflichtenheft

Die Assembler-Routine calc, die die Kapazitätswerte des Kugelkondensatoren mit zwei verschiedenen Dielektrika (Luft und Öl) berechnet, soll realisiert werden. Die Routine calc soll derart implementiert werden, dass sich nach den Rücksprung ins C-Rahmenprogramm in den Datenfeldern results1 und results2 die Kapazitätswerte befinden. Für Details siehe auch Spezifikation

2. Anwender-Dokumentation

Dank des mitgelieferten Makefiles gestaltet sich das Kompilieren und Linken unter Linux wie gewohnt einfach mit Hilfe von make.

 make clean
make all

Aufruf der Assembler-Routine

Die Funktion wird mit Hilfe eines C-Rahmenprogramms aufgerufen, wobei hier vier Pointer übergeben werden. Die ersten beiden Pointer zeigen auf die Arrays mit den Eingabedaten, die letzten beiden auf die jeweiligen Ergebnisarrays. Die hierfür relevanten Zeilen sind:

 extern void calc(float *, float *, float *,float *);

calc(data1, data2, results1, results2);

Ablauf in der Routine

Zunächst werden in einer Initialisierungsphase die vier Pointer vom Stack geholt und in entsprechenden Registern abgelegt. Des weiteren wird das ECX Register als Counter mit 0 initialisiert.

Jetzt beginnt eine Schleife, die 100 mal ausgeführt wird und in der die Berechnungen stattfinden. Diese werden mit Hilfe der FPU und dem FPU eigenen Stack sukzessive ausgeführt. Für die Details der Implementierung der Berechnungen verweise ich auf den ausfürhlich kommentierten Sourcecode in calc.asm.

3. Quellen

  • TGI Script
  • The Floating Point Unit (Intel Handbuch)

Schreibe einen Kommentar