Gast
#2434031
Hallo, kann mir, ein absoluter Newbie, sagen was der Befehl mov p1, 10 macht. Was ist die 10 für ein Wert? #10 wäre ja 10 Hexadezimal. Aber für was steht nur die 10? Gruß Peter
|
Anzeige
|
Mikrocontroller - Assembler
Gast
#2434031
Hallo, kann mir, ein absoluter Newbie, sagen was der Befehl mov p1, 10 macht. Was ist die 10 für ein Wert? #10 wäre ja 10 Hexadezimal. Aber für was steht nur die 10? Gruß Peter
Gast
#2434036
Um welchen µC und welchen Assembler geht es?
Gast
#2434037
Peter Steiner schrieb: > Was ist die 10 für ein Wert? > #10 wäre ja 10 Hexadezimal. Aber für was steht nur die 10? eventuell für die Zahl 10?
Gast
#2434038
Welcher µC? 10 ist 10, was hast du genau für ein Problem?
Gast
#2434045
Wenn das ein einfacher Assembler für Intel-Mikros (8051 o.ä.) ist, dann wird mit diesem Befehl der dezimale Wert 10 in das Port-Register p1 (das ist in diesem Fall halt ein vordefinierter Name) geschrieben. Beim 8051 wären dann die Portleitungen P1.1 und P1.3 auf High gesetzt. Bei anderen Mikrocontrollern kann das ganz anders sein, ebenso wenn p1 vorher anders definiert wurde. Dann wird eben der Wert 10 an die Speicherstelle geladen, die im Assembler den Namen p1 erhalten hat.
Gast
#2434055
mov p1, 10 lädt nicht den Wert 10 in den Port P1 (das wäre mov p1,#10), sondern den Inhalt des Registers 10. mfG ingo
Gast
#2434068
Danke für die Antworten. Es müsste ein Kontroller aus der Intel 8051 Familie sein. Im Simulator habe ich das Problem: mov r0, #10 So läuft er genau 10mal eine folgende Schleife durch. mov r0, 10 Hier fängt er bei ff = 255 an. Kann es sein das hier die 10 eine Programmadresse ist?
Gast
#2434074
Danke Ingo. Das hat sich gerade überschnitten. Gruß Peter ingo schrieb: > den Inhalt des Registers 10. Der 8051 hat nur 8 Register. Peter Steiner schrieb: > Kann es sein das hier die 10 eine Programmadresse ist? Es ist eine Adresse in den 128 (oder 256 beim 8052) Byte RAM. Der Inhalt von Adresse 10 im RAM wird an dem Port P1 ausgegeben. Gruß Jobst
Gast
#2434329
> Der 8051 hat nur 8 Register. um ganz korrekt zu sein 4 Registerbänke a 8 Register > mov p1, 10 könnte also auch R2 aus der Registerbank1 an den Port1 senden ;-) wobei Ich mir allerdings nicht vorstellen kann, dass der TO schon die Registerbänke umschalten kann. Thomas Peter Steiner schrieb: > mov r0, #10 Konstante (hier = 10dez) ins Register R0 laden . > mov r0, 10 Daten aus interner Adresse ins Register R0 laden, wobei 0...127=RAM, 128...255 SFR (Special Function Register, d.h. I/O, Port, Control-Register, Status-Register etc.). Gruß Dietrich Peter Steiner schrieb: > #10 wäre ja 10 Hexadezimal. Aber für was steht nur die 10? Autsch! Das "#" heisst "Immediate" und bedeutet "Schreibe die folgende Zahl in das Register". Wenn da nur eine Zahl steht, ist das eine Dezimalzahl. Also nach "mov p1, #10" steht der Wert 10 in p1, also liegt am Ausgang an, wenn es ein Port ist. Eine Hexadezimalzahl kann man je nach Assembler 0x0A, $0A oder 0Ah scheiben. Meistens werden alle drei Schreibweisen akzeptiert. Also "mov p1, #$0A" schreibt auch eine "10" auf den Port. "mov p1, 10" oder auch "mov p1, 0x0A" ist direkte Adressierung und schreibt den Inhalt der Adresse 10 auf den Port. Tröste dich. Dieser Fehler ist Anfängers Liebling. mfg. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|