Forum: Mikrocontroller und Digitale Elektronik Unterprogramm


von Sahra N. (sahra_nana)


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?

von Karl H. (kbuchegg)


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.

von Sahra N. (sahra_nana)


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

von spess53 (Gast)


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

von Karl H. (kbuchegg)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.