Forum: Mikrocontroller und Digitale Elektronik warum mov ?


von Michael (Gast)


Lesenswert?

Hi,

weiß wer (historischer Hintergrund ?) warum der ASM Befehl eigentlich
mov heißt wo er doch eigentlich eine copy funktion hat. ??

von Stefan Kleinwort (Gast)


Lesenswert?

Satire-Mode on

Weil die Processorbauer schon immer ihrer Zeit weit voraus waren und
schon damals ahnten, welche rechtlichen Probleme es mit copy geben
würde. Für jedes copy gibt es ja leider auch ein Copyright - oder im
schlechten Falle eben nicht.
Da ist mov doch viel besser - keinerlei Probleme mit irgendwelchen
Rechteverwertern, es muss nicht vor jedem copy lange geprüft werden,
welche Daten da kopiert werden, ob das copy erlaubt ist und an wen ggf.
für die Rechte bezahlt werden muss.

Wenn ich es so recht überlege .. so eine CPU ist noch viel
komplizierter als ich immer gedacht habe ...

Satire-Mode off

Viel Spass, Stefan

von Tobi (Gast)


Lesenswert?

@stefan
nette erklärung :)

von Peter D. (peda)


Lesenswert?

Dabei ist das beim 8051 noch relativ einfach, da gibts nur MOV, MOVC und
MOVX.

Schau Dir aber mal den AVR an, da gibt es MOV, LDI, IN, OUT, LD, ST,
LDS, STS, BLT, BST, SPM, LPM (sind das alle ?), die alle das gleiche
machen.


Man hat wohl deshalb nicht COPY genommen, weil das einen Buchstaben
mehr hat.


Peter

von dave (Gast)


Lesenswert?

Mal kurz kleine Abfolge:

copy ==> kopieren ==> wo zwischenspeichern? ==> zwischenablage ==>
windows ==> fehler + viren...

so, und jetzt sag mir mal, wie teuer so nen µC mit nen Farbdisplay
(Bluescreen) und ner Internetverbindung (Viren, Produktaktivierung)
werden würde....

aber könnte ja aus dem Grund sein: copy wird irgendwie
zwischengelagert.. mov nicht ;)

dave

von Tobi (Gast)


Lesenswert?

"Schau Dir aber mal den AVR an, da gibt es MOV, LDI, IN, OUT, LD, ST,
LDS, STS, BLT, BST, SPM, LPM (sind das alle ?), die alle das gleiche
machen."

naja, nicht ganz das gleiche... eigentlich garnicht...
kommt ja stark auf die architektur an. bei strengem risc brauchts halt
ein paar mehr befehle, bei speichertrennung noch ein paar

von Thorsten (Gast)


Lesenswert?

Nehmen wir folgendes vom 8086er:
mov ax, 5
Hier wird nichts kopiert, sondern der Wert 5 wird in ax (kommend aus
dem Nichts) bewegt.

von Peter D. (peda)


Lesenswert?

Ich hab noch PUSH, POP (auch beim 8051) und MOVW vergessen.

Doch, die machen alle das gleiche (Daten kopieren), nur Quelle und Ziel
sind unterschiedlich.

Beim 8051 wird Quelle und Ziel durch die Reihenfolge bestimmt (MOV
Ziel, Quelle) und durch #(immediate) bzw. @(indirect).


Im Prinzip sind auch JMP, CALL, RET, RETI Kopierbefehle (kopieren vom
oder in den Programmcounter).


Peter

von 4004er (Gast)


Lesenswert?

>...kommend aus dem Nichts..., nun, zumindest kommt diese Konstante von
der Tastatur des Programmieres.

Mir stellt sich die Frage, ob die Wortbezeichnung dieser Mnemonic einen
logischen Aufbau haben muß?

von Peter D. (peda)


Lesenswert?

@Thorsten,

bei "mov ax,5", steht ja die 5 mit im Befehl, d.h. sie wird aus dem
Programmspeicher in ein Register kopiert.

Sie geht also nicht "verloren", der Befehl kann in einer Schleife
beliebig oft ausgeführt werden und jedesmal wird die 5 in das Register
kopiert.


Peter

von 4004er (Gast)


Lesenswert?

Nachtrag aus DUDEN Fremdwörterbuch:

Mnemotechnik... Technik, Verfahren, sich etwas leichter einzuprägen,
seine Gedächnisleistung zu steigern, z.B. durch systematische Übung
oder Lernhilfen...

von A. F. (Gast)


Lesenswert?

Kommt das "mov" nicht von "move" was soviel wie umziehen heißt.
BSP:
mov P1,P3

P3 zieht nach P1 um, und bleibt dort bis wieder umgezogen wird.

;-)

von dave (Gast)


Lesenswert?

Das Problem dabei ist, dass es ja noch im alten Register bleibt.

dave

von edi.edi (Gast)


Lesenswert?

....warum...ist die Banane krumm....

von Zotteljedi (Gast)


Lesenswert?

@Peter:

> Man hat wohl deshalb nicht COPY genommen, weil das einen Buchstaben
> mehr hat.

Wenn Du das als Argument anführst, dann mußt Du COPY aber auch mit MOVE
vergleichen, und dann zieht's nicht mehr. CPY und MOV sind auch wieder
gleich lang, und stellen beides gängige Abkürzungen dar (strcpy,
memcpy).

Ist vielleicht ein Low-Level-Phänomen? Bei Hochsprachen ist man sich
des Unterschieds sehr wohl bewusst. memcpy kopiert und erhält das
Original, memmove kann das Original in der Tat zerstören, wenn sich
die Speicherbereiche überlappen (wobei das Verhalten von memcpy in dem
Fall undefiniert ist).

von Rufus T. Firefly (Gast)


Lesenswert?

Ach, das ist alles kein Problem, wenn man einen Prozessor verwendet, bei
dem derartige Befehle anders benannt werden ...
Auf dem 6809 heisst sowas LDA resp. STA (der dritte Buchstabe des
Mnemonics enthält das betreffende Register, kann also auch durch B, D,
U, X, Y oder auch S ersetzt werden).

Tja - so bleibt der 6809 vor allen Verfolgungen durch die
Medienindustrie verschont - denkt mal drüber nach!
(Mit dem kaum jüngeren 68000 fing Motorola mit dieser vergurkten
Bezeichnung mov an ... man sieht ja, was aus denen geworden ist. Bauen
ja unter eigenem Namen keine Microprozessoren mehr, sondern mussten
sich umbenennen - da ist wohl das mov dran schuld ...)

von Andi (Gast)


Lesenswert?

Es gibt ja noch Compare (CP), Compare with Carry (CPC) und Compare, Skip
if Equal (CPSE).
Vielleicht hat man sich deswegen dann doch wegen Verwechslungsgefahr
und zum besseren auseinanderhalten für mov entschieden statt copy.
Für Speicherzugriffe gibs dann definitives Load (LD, LDS, LDD (laden
vom Speicher)), Store (ST, STS, STD (schreiben zum Speicher)) und Load
Prgramm Memory (LPM (laden vom Programmspeicher mit Z).
Bei anderen µP (8051, 80386) sind load und store teilweise oder ganz in
mov oder move mit eingeflossen.

Gruß
Andi

von Andi (Gast)


Lesenswert?

@Rufus: Die Motorola 680XX waren früher, vor den 286´ern, ganz groß in
den Ataris und Amigas die ich sehr gerne in ASM programmiert hatte.
Motorola macht doch heute noch µC mit dessen Kern, wenn auch zum Teil
abgespeckt, oder?
Ach ja, das ware nicht mov sonder move zusätzlich mit .b, .w und .l.
Das mit mov hat Intel gemacht.

Gruß
Andi

von Rufus T. Firefly (Gast)


Lesenswert?

@Andi: Ja, Coldfire hat meines Wissens nach noch einen 68k-Kern.
In Palm-OS PDAs ist bis vor kurzem auch ein 68k-Derivat verwendet
worden.

Die genaue Syntax ist wohl auch abhängig vom verwendeten Assembler.

Der 6809 ist knapp ein Jahr älter als der 68k ('78 oder '79, der 68k
kam auch '79 'raus) - der Ehrlichkeit halber sei noch angemerkt, daß
das ein 8-Bit-Prozessor war, wenn auch ein urst genialer.

von ...HanneS... (Gast)


Lesenswert?

Hi...

6502/6510(C64, CBM-Floppy) und 7501/8501 (C16, C116, Plus/4) kannten
auch kein MOV. Da gab es Load und Store (LDA, LDX, LDY, STA, STX, STY)
und Transfer (TAX, TXA, TAY, TYA). Die Adressierungsarten wurden durch
die Schreibweise (Raute, Klammern) definiert. Alles ohne Move oder
Copy...

...HanneS...

von Andi (Gast)


Lesenswert?

OK, so weit ich mich noch erinnere gibs beim Z80 auch kein mov sondern
hauptsächlich ld (ld a,b; ld bc,hl; ld bc,(hl) etc.).
Weiß jetzt nicht mehr den kompletten Umfang.

Im Prinzip ist es wurscht bei welchem Prozzi welche Mnemonics verwendet
werden solange man damit klar kommt.
Die einen laden und storen die anderen ziehen um und ganz andere machen
je nach Ziel und Quelle beides.

Gruß
Andi

von ...HanneS... (Gast)


Lesenswert?

So isses...

von Michael (Gast)


Lesenswert?

Es gab damals auch CPUs, die ein Register nach dem Lesen immer gelöscht
haben. Hier fand ein 'richtiges' mov statt. PDP8/PDP11 waren es aber
wohl nicht.

von Michael (ein anderer) (Gast)


Lesenswert?

Hmm, mov oder nicht mov... Kennt das noch einer hier, schön ohne move:

ld hl, #1234
ld b, 5
loop: ld a,(hl)
call #bb5a
inc hl
djnz loop

Oder so ähnlich... Ist wirklich lange her, und ich kann's nicht
wirklich mehr... Na, wer erkennt's? Und noch besser: Welches System
war's? (Am 'call #bb5a' sollte man's erkennen...)

von Andi (Gast)


Lesenswert?

Kann Dir zumindest sagen, dass das eine Z80-CPU ist.
War damals im ZX81, ZX-Spectrum, Schneider-KeineAhnung und verschiedene
CP/M-Systeme.
Der Z80 war damals mein Einstieg in ASM.
Schade das IBM damals nicht zu Zilog gegangen ist, der Z80 war besser
(vortschrittlicher) als der 8086.
Vielleicht gäbe es dann jetzt nicht so Stromfressende CPU´s in den PC´s
mit mehr Leistung.
Wer weis...

Gruß
Andi

von Matthias (Gast)


Lesenswert?

Hi

welche Tewchnik hinter einem aktuellen µP steckt ist völlig egal. Sind
alles Stromfresser. Ob jetzt iA32 (P4, Athlon), IBM's PowerPC oder
iA64. Das bringt die Technik der immer kleineren Strukturen und immer
höheren Frequenzen einfach mitsich.

Matthias

von Philipp Sªsse (Gast)


Lesenswert?

Einspruch! Die immer kleineren Strukturen bringen unter Last weniger
Verbrauch mit sich. Durch kürzere Gatelängen sind niedrigere
Schaltspannungen und -ströme möglich.

Das einzige, was leicht ansteigt, sind die Leckströme, die aber nur
beim "idlen" überhaupt eine Rolle spielen. Hier haben neue Techniken
wie SOI dafür gesorgt, daß die Verluste nicht so stark gestiegen sind,
wie die Strukturen kleiner wurden.

Die Verlustleistung pro ausgeführter Anweisung ist auf jeden Fall
dramatisch gefallen gegenüber früher.

Und zwischen effektiven Prozessoren (ARM, PPC, PentiumM) und
Stromfressern (P4, Athlon) liegen Größenordnungen, so daß man sie nicht
in einen Topf werfen sollte.

Im übrigen werden vermutlich 9 von 10 verschwendeten CPU-Watt durch
schlechte Programmierung sinnlos verschleudert ...

von Kupfer Michi (Gast)


Lesenswert?

> kleinere Strukturen, Frequenz und Leckströme...

Hierzu eine paar schöne Bildchen zur Übersicht (pp 19ff, pp 42ff)

ftp://download.intel.com/research/silicon/Nano open house Paolo
Gargini.pdf

Wenns noch genauer sein soll, so findet man unter

http://intel.com/research/silicon/nanotechnology.htm

weiteres.

von Matthias (Gast)


Lesenswert?

Hi

kleiner Strukturen heißt auch fast immer mehr Transsistoren.

Der Vorteil der kleineren Umladeströme geht durch die erhöhte
Transistorzahl wieder verloren. Dazu kommen die höheren Leckströme.
Sieht man ja an den Heizplatten P4/A(64)/PPC.

Einen PowerPC Prozessor würde ich auch nicht mehr als effektiv
bezeichnen. Siehe G5 von Apple -> Wasserkühlung nötig.

Eine Effektivität an der (Befehls)Architektur fest zu machen halte ich
auch nicht wirklich für angebracht. Man kann da aber schon gegensteuern
wie es Intel mit dem PM bzw. auch AMD mit dem A64 gemacht hat. Aber das
geht dann hauptsächlich durch Abschalten einzelner Einheiten bzw.
Heruntertacken des ganzen Prozessors.

Matthias

von Philipp Sªsse (Gast)


Lesenswert?

Ojeoje!

> kleiner Strukturen heißt auch fast immer mehr Transsistoren

Tolle Logik! Also sind die kleineren Strukturen für Dich am höheren
Verbrauch schuld? "Automotoren werden immer effektiver. Effektivere
Motoren heißt auch fast immer mehr Leistung, also sind effektivere
Motoren Dreckschleudern ..." So kann man auch argumentieren.

Wenn ein Design auf eine kleinere Technologie übertragen wird, hat man
nachher üblicherweise weniger Leistungsaufnahme trotz höherem Takt.

> Einen PowerPC Prozessor würde ich auch nicht mehr als effektiv
> bezeichnen.

Die PowerPCs sind eine weite Familie. Die Motorola MPC5xx können sich
da durchaus mit anderen 32-Bit Embedded-Controllern messen.

> Sieh Dir die Em Siehe G5 von Apple -> Wasserkühlung nötig.

Von IBM. Von Apple ist allenfalls der Name. Und die Wasserkühlung ist
nicht "nötig", im Xserve kann der doppel-G5 auch ganz konventionell
problemlos gekühlt werden. Und bei den Giga-Flops pro Watt stehen die
G5-Cluster unter den Supercomputern ja auch einsam an der Spitze.

Und schlicht und ergreifend: wenn Du die Rechenleistung braucht,
erledigt sie ein solcher "Heizer" trotzdem sparsamer als ein
entsprechend großer Haufen handelsüblicher Microcontroller es täte.

> Eine Effektivität an der (Befehls)Architektur fest zu machen halte
> ich auch nicht wirklich für angebracht.

Es reicht schon, wenn Du einfach schreibst, daß der Satz von dem
höheren Verbrauch durch kleinere Strukturen Unsinn war.

von Matthias (Gast)


Lesenswert?

Hi

>Wenn ein Design auf eine kleinere Technologie übertragen wird, hat
man
>nachher üblicherweise weniger Leistungsaufnahme trotz höherem Takt.

War das so beim Umstieg des P4 von 130nm auf 90nm? Ich wage das zu
bezweifeln.

>Von IBM. Von Apple ist allenfalls der Name.

Der Prozessor ja. Der heißt aber PowerPC G5. Ich bezog mich auf den
kompletten Rechner.

>Xserve

Der läuft auch nur mit 2,0GHz und darf ausreichend Krach machen.

>Es reicht schon, wenn Du einfach schreibst, daß der Satz von dem
>höheren Verbrauch durch kleinere Strukturen Unsinn war.

Für Umladeverluste: Ja.
Für Leckströme: Nein.

Matthias

von Philipp Sªsse (Gast)


Lesenswert?

> War das so beim Umstieg des P4 von 130nm auf 90nm?

Wenn ich mich recht entsinne, wurde gleichzeitig die Transistorenanzahl
verdoppelt, daher stimmte die Regel nicht. Was dann auch prompt soviel
Empörung auslöste, weil alle Welt eine sinkende Leistungsaufnahme
erwartet hatte.

> Für Umladeverluste: Ja.
> Für Leckströme: Nein.

Gut, und wie bei modernen CPUs (vor allem mobilen) der Anteil der
Leckverluste am Energiehunger ist, kann man gut über das Verhältnis der
minimalen und der maximalen Leistungsaufnahme abschätzen!

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.