.set Direktive

Gast #67253
Hallo.Ich weise am Anfang meines Programms mit der .set Anweisung einem
Label einen Wert zu.Wenn ich diesen Wert in einem Unterprogramm dann
wieder mit der .set Anweisung ändere,bezieht sich diese änderung
irgendwie nur auf das Unterprogramm.Wenn ich wieder ins Hauptprogramm
wechsle,gilt wieder der alte Wert(gesehen anhand der Simulation).Wäre
nett,wenn mir jemand sagen könnte,wie man eine Variable jederzeit
ändern kann,und diese änderung dann auch überall wirksam ist.
mfg
Andy
Gast #67254
je nach programmiersprache. bei manchen müssen variablen global
vereinbart werden, damit sie auch in subroutinen geändert werden
können. womit codest du denn?
Gast #67256
oje, null plan von assembler.
ich bin ein fauler hund und strick alles in bascom.
macht wenig arbeit und funzt trotzdem (meistens)

gruss, faultier harry
#67257
.set ist eine Preprozessoranweisung und hat bestimmt auch ein Äquivalent
in Basic.

Es ist zeilenorientiert, d.h. in allen Zeilen vor der .set-Anweisung
ist es unbekannt und in allen Zeilen danach ist es bekannt und hat den
zugewiesenen Wert.

Weist man dem gleichen Symbol in späteren Zeilen einen anderen Wert zu,
ist dieser wiederum nur in allen Zeilen danach gültig.

Das kann leicht zu Verwirrungen führen, deshalb sollte man für andere
Werte auch immer andere Symbolnamen verwenden.
Deshalb nimmt man in der Regel besser die .equ Anweisung, die eine
versehentliche Doppelzuweisung von Symbolen anmeckert.


Peter
Gast #67258
Hallo.Danke für die antworten.Aber wegen zu wenig Speicher(AT1200)
müsste ich eine Variable benutzen,da ein grösseres Unterprogramm 2 mal
durchlaufen werden soll,aber mit zwei verschiedenen Werten.
Wenns gar nicht geht,muss ich wohl einen grösseren AT nehmen.
Andy
#67259
Mit .set definierte Symbole sind doch keine Variablen und belegen
demzufolge auch keinen Speicherplatz !

Sie helfen nur einen Assemblertext lesbarer zu gestalten.


Variablen kannst Du im SRAM oder in Registern ablegen, z.B.

.def MY_VAR = r16



Peter
Gast #67260
Wie ich das sehe, soll ein Unterprogramm ZUR LAUFZEIT mit zwei
verschiedenen Werten aufgerufen werden. Das geht nur mit Peter's
Methode. .SET erzeugt keinen irgendwie geartetem Code, der zur Laufzeit
irgendetwas bewirken würde.

MfG
Gerd

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.