Zuweisung unter Assembler

Gast #2520526
Lesenswert?
• ▲
▼
Hallo miteinander ,

ich bin schon länger auf der suche nach einer genauen Definition für die 
"Zuweisung in Assember" am besten mit Beispielen.

Nätürlich ist mir allgemein klar was damit gemeint ist aber gibt es noch 
irgendwelche Besonderheiten im Assembler Bereihc ????
#2520545
Lesenswert?
• ▲
▼
Horst-Martin schrieb:

> Nätürlich ist mir allgemein klar was damit gemeint ist aber gibt es noch
> irgendwelche Besonderheiten im Assembler Bereihc ????

Ja.
Im Assembler gibts keine Zuweisungen.
Auf Assemblerebene gibt es Register und Speicher.
Und es gibt es gibt Load bzw Store Operationen (die manchmal auch Move 
heißen) mit denen man einen Wert (der auch von einem anderen Register 
stammen kann, oder aus dem Speicher) in ein Register bugsieren kann 
(bzw. beim Store in die andere Richtung).

Aber Zuweisungen gibt es nicht.
Gast #2521232
Lesenswert?
• ▲
▼
Hallo!
Natürlich gibt es auch in Assembler Zuweisungen.
Man kann Registern Werte zuweisen (Store, Load, Move...), Marken 
Adressen zuweisen (EQU, ORG...), Speichersegmente zuweisen (CSEG, 
DSEG..), reservierte Speicherbereiche zuweisen (DEFS...) usw.
Alles hängt natürlich vom Prozessor und vom Assembler ab.
#2521465
Lesenswert?
• ▲
▼
Route_66 schrieb:

> Alles hängt natürlich vom Prozessor und vom Assembler ab.


Es gab schon Assembler, bei denen man einen Load mittels einer Zuweisung 
schreiben konnte. Ich glaube es war ein Osborn Z80 Assembler, bei dem 
man schreiben konnte

     BC = 256
     D = H

und der Assembler machte daraus

     LDI  BC, 256
     LD   D, H


Aber das ist von dem was man in einer Programmiersprache eine 
"Zuweisung" nennt, meilenweit entfernt.

Man kann eine Bierkiste auch als "Sessel" bezeichnen. Kann man, man kann 
sie ja umdrehen und darauf sitzen. Aber im Allgemeinen versteht man 
unter einem Sessel alles mögliche, aber sicher keine Bierkiste.
Gast #2521580
Lesenswert?
• ▲
▼
Hallo,

der Begriff Zuweisung ist schon deshalb abwegig, weil es in Assembler ja 
keine Variablen gibt, sondern Register und Adressen - eine Zahl ins 
Register R4 oder B zu laden ist nur verständlich in dem Kontext, wofür 
dieses Register gerade verwendet wird. Das ist eine ms später was ganz 
anderes, eine der Fehlermöglichkeiten in Assembler, die man in einer 
Hochsprache so nicht hat. Ein Register KANN eine Variable (im Sinn eines 
bestimmten Speicherplatzes) enthalten, wenn man die vorher von ihrer 
Speicheradresse ins Register geladen hat, und/oder wenn man vorhat, sie 
nachher dorthin zu speichern. Als Zwischenspeicher für eine logische 
oder Rechenoperation entspricht ein Register keiner Variablen. Abgesehen 
davon gibt es eh nur Bytes oder 16, 32 und 64 Bit-Worte je nach 
Prozessor, mit einer String-Variablen wie z.B. einer Telefonnummer muss 
man selbst alles byteweise organisieren.

Gruss Reinhard
#2521776
Lesenswert?
• ▲
▼
Thomas Eckmann schrieb:
> Karl Heinz Buchegger schrieb:
>> BC = 256
>> D = H
> Aber das sind doch Makros.

Ich weiß nicht wie das genau realisiert wurde.
Makros glaub ich ehrlich gesagt nicht. Denn diese "Zuweisung" löste alle 
Adressierungsmodi richtig auf.

Aber nagle mich da jetzt nicht fest. Das ist 25 Jahre her. Mir ist es 
nur aufgefallen, weil das komplett anders aussah als die Zilog Assembler 
Notation.
Persönliche Seite #2523527
Lesenswert?
• ▲
▼
Auch heute noch gib es Assembler wo etwa ein UND geschrieben wird als

 R1 = R2 & R3

und der Assembler dies nativ unterstützt. Entsprechend sieht eine 
Zuweisung so aus — oder eben ein Load wenn man Zuweisung nicht mag:

 R1 = R2

Beispiel: Blackfin wie zu sehen hier:

http://gcc.gnu.org/viewcvs/trunk/gcc/config/bfin/bfin.md?content-type=text%2Fplain&view=co
http://docs.blackfin.uclinux.org/doku.php?id=toolchain:inline_assembly

Der Compiler (hier bfin-gcc) gibt das tatsächlich aus nud es ist die 
Schnittstelle zum Assembler.
Gast #2524174
Lesenswert?
• ▲
▼
Bei ASM wird ja fast immer irgentwas irgentwie transportiert. Ob man das 
nun Zuweisung nennt oder nicht ist doch reine Geschmackssache.
-------------------------
Die von Blackfin wollten es mit Ihrem ASM (dem man "in 
Hochsprachensyntax" schreiben kann) besser machen als Andere. ...Was 
aber nicht gelungen ist,  denn den meisten Leuten missfällt diese Syntax 
total. Aussendem sehen viele Befehle davon echt bescheuert aus! Die 
haben weder Ähnlichkeit mit herkömmlichem ASM noch mit herkömmlicher 
Hochsprache!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren