Wie interpretiert/versteht ein Mikrocontroller MOV oder ADD Befehle

Hallo zusammen,

meine Frage ist: Wie interpretiert/versteht ein Mikrocontroller/Prozessor nur zum beispiel den MOV oder ADD Befehl?! Es wird ja nur binärcode verstanden und symbole, zeichen werden verständlicherweise, damit der mikrocontroller/Prozessor das versteht, in binärcode umgewandelt. aber wie interpretiert/versteht ein Prozessor was mit MOV gemeint ist. D.h. woher soll dieser wissen was mit „verschieben“ gemeint ist bzw. wie hat man das gelöst.

danke im voraus an die Community

Neo

Hallo Neo,

meine Frage ist: Wie interpretiert/versteht ein
Mikrocontroller/Prozessor nur zum beispiel den MOV oder ADD
Befehl?! Es wird ja nur binärcode verstanden und symbole,
zeichen werden verständlicherweise, damit der
mikrocontroller/Prozessor das versteht, in binärcode
umgewandelt. aber wie interpretiert/versteht ein Prozessor was
mit MOV gemeint ist. D.h. woher soll dieser wissen was mit
„verschieben“ gemeint ist bzw. wie hat man das gelöst.

Also, basteln wir uns mal schnell eine CPU :smile:

Registersatz:
PC = Programm-Zähler
SP = Stapelzeiger
A = Register
B = Register

Nun Nummerieren wir die Register durch:
0 = PC
1 = SP
2 = A
3 = B

Dann die Befehle:

0 = MOV RegQuelle, RegZiel
1 = MOV Immidiate, RegZiel
2 = MOV Addr, RegZiel
3 = MOV RegQuelle, Adresse
4 = MOV (Reg), RegZiel ; Register enthält Adresse
5 = MOV RegQuelle, (Reg) ; Register enthält Adresse

Jetzt noch der Aufbau des Opcodes, der soll 8 Bit lang sein:

 7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
| Befehl | RegQ | RegZ |
+---+---+---+---+---+---+---+---+

Nun Wird aus
MOV A, B

MOV = 0
A = 2
B = 3

In obige Felder eingesetzt ergibt sich binär

0000 10 11

Technisch werden also die Bit 7 bis 4 an den Befehlsdecoder angeschlossen.
Dieser Verwendet dann Bits 3 und 4 und das Quellregister auszuwählen und die Bits1 und 0 um das Ziel auszuwählen.
Und aus den Bits 7-4 ergibt sich die Operation, also Quelle ins Ziel zu kopieren.

Beim Immidiate-Befehl, weiss dann der Decoder, dass da noch mehr Bytes zum Befehl gehören. Um Platz zu sparen, könnte man jetzt das Feld RegQ dazu verwenden, wie viele zusätzliche Bytes noch gelesen werden müssen.

Ich hoffe damit sind jetzt alle Klarheiten beseitigt :smile:

Hier hat sich einer, wie in den 70er Jahren noch üblich, einen Computer aus einzelnen Gattern zusammengebaut:
http://www.homebrewcpu.com/Magic1.pdf

Ganzes Projekt:
http://www.homebrewcpu.com/

MfG Peter(TOO)

Hallo,
http://www.youtube.com/watch?v=cNN_tTXABUA Ich weiß nicht ob dieses Video exakt deine Frage beantwortet. Doch es erklärt anschaulich wie eine CPU funktioniert. Also vom Befehl bis zum Ergebnis.
Wenn du es genauer wissen willst. Also welche 0 und welche 1 wie, warum und mit welcher Logik umgewandelt wird empfehle ich: http://de.wikipedia.org/wiki/Logikgatter

mfg
armer Tor