Guten Tag, Ich bräuchte ein bisschen "Nachhilfe". Ich hab eine Aufgabe die wohl ganz trivial ist aber ich nicht so auf die Reihe bekomme: - Gegeben sind die Konstanten zahl1 = 3 und zahl2 = 6 - Die zahl1 soll in den kompletten RAM-Adressbreich von 0x150 abwärts bis 0x120 geschrieben werden. Beginnend mit der Adresse 0x150. - Jetzt soll die zahl2 an jede dritte Adresse beginnend mit 0x160 bis maximal 0x180 geschrieben werden. Hierfür verwenden Sie den indirekten Adressierungs- Modus. Also das mit den Adressbereich von 150 - 120 zu kopieren bekomme ich einfach nicht hin. Ich hab mir überlegt, mit lfsr FSR1,0x150 erstmal einen Pointer zu erstellen. dann möchte ich ihn im "loop" 30x mal dekrementieren und dabei die Zahl1 jedesmal in die adresse reinschreiben. Ich bräuchte dabei wirklich hilfe, wie ich das bewerkstelligen soll.
Hallo, vielleicht solltest du uns mal verraten, von welchem Prozessor / welcher Prozessorfamilie du ausgehst. Die Befehle zur indirekten Addressierung sind in ihrer Syntax doch unterschiedlich. Sascha
nun gut mit dem PIC kenne ich mich nun gerade nicht aus, was du brauchst nennt sich <Indirekte Adressierung>. Such einfach mal bei G.. nach "pic indirekte adressierung" und du wirst genügend Futter finden. Sascha
Nunja ist ja nicht so, dass ich schon gesucht hätte ;-) Es ist mir einfach nicht verständlich, wie ich eine konstante wie ich sie z.b. bei movlw (eine Zahl ins W-Register schreiben) verwende, in die Adresse des Pointers reinschreiben soll. ich hab es schon mit movff versucht und alles aber beim "File Register" wird nichts angezeigt. was für ein befehl brauch ich denn, damit ich einfach die zahl1 in die adresse reinschreiben kann auf die der pointer gerade zeigt?
Eska schrieb: > Nunja ist ja nicht so, dass ich schon gesucht hätte ;-) Komisch. Ich hab mit Google in weniger als 15 Sekunden diesen Link hier gefunden. War gleich der allererste http://www.pictutorials.com/Indirect_Addressing_Exam.htm
Mit movwf postinc1 schreibst du ja schon mal den Inhalt vom W in das indirekt adressierte Register und erhöst automatisch den Zeiger. Jetzt must du nur noch eine Schleife Programmieren können. Edit grade gesehen du solst das von oben herrab machen, dafür oh wunder gibt es postdec1
ok hab es hinbekommen :D hier der code: variablen: ZAHL1 equ D'3' ZAHL2 equ D'6' counter equ 0x100 main: movlb 0x01 lfsr 1,0x150 movlw D'49' movwf counter movlw ZAHL1 loop: movwf POSTDEC1 decfsz counter goto loop
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.