Assembler indirekte Adressierung

Gast #3157019
Lesenswert?

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.
Gast #3157053
Lesenswert?

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?
#3157062
Lesenswert?

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
Gast #3157097
Lesenswert?

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

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