www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Unterprogramm


Autor: Sahra Nana (sahra_nana)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guten Morgen,
ich habe ein Programm geschrieben, und in dem soll ein Unterprogramm 
aufgerufen werden. das Unterprogram habe ich extra gespeichert. und im 
Hauptprogramm rufe ich mein Unterprogramm unter include"test.asm". das 
unterprogramm habe in Source files hinzugefügt.
ist es richtig?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sahra Nana schrieb:
> guten Morgen,
> ich habe ein Programm geschrieben, und in dem soll ein Unterprogramm
> aufgerufen werden. das Unterprogram habe ich extra gespeichert. und im
> Hauptprogramm rufe ich mein Unterprogramm unter include"test.asm". das
> unterprogramm habe in Source files hinzugefügt.
> ist es richtig?

Nein.
.include
ruft nichts auf. .include inkludiert einen Text in einen anderen Text. 
Mehr macht das nicht.

Das ist so wie wenn du in einem Editor einen Text schreibst. Dann setzt 
du den Cursor auf eine bestimmte Stelle und rufst den Menüpunkt auf 
'Eine andere Datei an der Stelle, an der der Cursor gerade steht, 
einfügen'. Und der Editor machst das dann auch: Er macht die andere 
Datei auf, holt sich den Inhalt und fügt den Inhalt an der Stelle des 
Cursors ein.

Mehr macht .include nicht.

Ein Unterprogramm wird mit rcall aufgerufen.

Autor: Sahra Nana (sahra_nana)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Ein Unterprogramm wird mit rcall aufgerufen.

danke erstmal, aber mit rcall ruf ich ein unterprogramm, das in einem 
Label in mein Hauptprogramm geschrieben ist. aber ich habe mein 
Unterprogramm mit der Endung *.asm gespeichert und mein Hauptprogramm 
soll das Unterprogramm von der Datei zb test.asm aufrufen. Geht es auch 
mit rcall?
VG
sahra

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

> aber ich habe mein
>Unterprogramm mit der Endung *.asm gespeichert und mein Hauptprogramm
>soll das Unterprogramm von der Datei zb test.asm aufrufen.

Für den Assembler ist es egal, ob das Label im Hautprogramm oder in 
einer Include-Datei steht. Es muss nur vorhanden sein.

>Geht es auch mit rcall?

Ja. Bzw bei grösseren Controllern auch mit 'call'.

MfG Spess

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal:

Wenn sich dein Assembler deine Hauptdatei 'main.asm' vornimmt, dann löst 
er alle .include auf.

Aus den beiden Dateien

    main.asm                         test.asm
    +----------------------+         +---------------------+
    | abcd                 |         | 01234               |
    | .include 'test.asm'  |         | 56789               |
    | xyz                  |         +---------------------+
    | ...                  |
    +----------------------+


baut sich der Assembler einen Zwischentext

          +---------------------------+
          | abcd                      |
          | 01234                     |
          | 56789                     |
          | xyz                       |
          | ...                       |
          +---------------------------+

indem er den .include auflöst und die Zeile mit dem Include durch den 
Inhalt der Datei test.asm ersetzt. Und erst dieser Text wird dann durch 
die Übersetzung gejagt!

Die Frage 'UP existiert in einer anderen Datei' stellt sich somit gar 
nicht mehr. Denn wenn sich der Assembler den Programmtext dann zur 
Übersetzung vornimmt, gibt es keine unterschiedlichen Dateien mehr. Die 
.include sind längst alle aufgelöst und durch den Inhalt der jeweiligen 
Dateien ersetzt worden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.