Das eBook Angewandte Mikroelektronik wurde von Hans Lohninger zur Unterstützung verschiedener Lehrveranstaltungen geschrieben. Weitere Informationen finden sie hier. |
![]() |
Home ![]() ![]() ![]() ![]() |
||||
Siehe auch: Ablauf einer Programmentwicklung | ||||
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||||
Unterprogramme
In solchen Fällen wird man einen Programmteil nicht zweimal in das Gesamtprogramm einfügen, sondern ein Unterprogramm schreiben, das die gestellte Aufgabe erfüllt. Ein Unterprogramm ist ein Programm, das mit einem RET-Befehl endet und damit die Rückkehr an die Stelle des Aufrufes ermöglicht, sofern es mit einem speziellen Befehl (CALL) aufgerufen worden ist. Ein Unterprogramm (z.B. UP1) wird aus einem Hauptprogramm durch CALL aufgerufen. bla bla bla bla ;Hauptprogramm CALL UP1 ;Unterprogrammaufruf von UP1 bla bla bla bla ; UP1: bla bla ;Ausführungsteil des bla bla ; Unterprogramms RET ;Rücksprung zum Hauptprogramm Dabei wird, wenn der Befehl CALL ausgeführt wird, zuerst die Adresse des nächsten Befehls nach CALL am Stack zwischengespeichert und dann verzweigt das Programm auf die Anfangsadresse von UP1. Am Ende des Unterprogramms steht der Befehl RET, der die zwischengespeicherte Adresse vom Stack nimmt und in den Program Counter lädt. Dies entspricht einem Rücksprung zum nächsten Befehl nach CALL im Hauptprogramm. Folgende Abbildung zeigt die Verhältnisse in graphischer Form.
Mit diesem Mechanismus ist also sichergestellt, dass man ein Unterprogramm von beliebigen Stellen im Adressraum des Mikrocomputers aufrufen kann, und dass nach der Ausführung wieder mit dem nächsten Befehl nach CALL fortgesetzt wird. Die Verwendung von Unterprogrammen ist ein sehr mächtiges Hilfswerkzeug bei der Programmierung von Mikroprozessoren, und sollte soviel wie möglich eingesetzt werden. Für die fehlerfreie Einsetzbarkeit eines Unterprogramms sollte man sich jedoch auch seiner Unzulänglichkeiten bewusst sein. Es ist daher unbedingt notwendig, bei der Dokumentation eines Unterprogramms nicht nur eventuelle Parameter und Ergebnisse abzulegen, sondern auch mögliche Gefahren und Einschränkungen. Ebenso sollte man sich stets im Klaren sein, welche Register und Speichervariablen vom Unterprogramm verändert werden.
|
||||
Home ![]() ![]() ![]() ![]() |