Forum: Mikrocontroller und Digitale Elektronik st-Befehl


von Tobias Müller (Gast)


Lesenswert?

Hallo,

muss man bei den st Befehl irgend was beachten. Sobald ich den Verwende 
spackt mein ganzes Programm.

Egal ob
  st y, r16
oder
  st z, r16

Die Register YL,YH bzw. ZL,ZH werden nur für die Adresse zuweisung 
verwendet, sonst nirgends:

  ldi temp, (maxx+1)
  mov rm1, temp
  mov rm2, dy
  rcall mul8

  mov YL, rel
  mov YH, reh

  add YL, dx
  brcc PC + 2
  inc YH

Wenn ich den Befehl aus kommentiere oder durch ein sts ersetze 
funtkioniert es.

Grüße

von mikki merten (Gast)


Lesenswert?

Solange die Registerpaare ZL/ZH bzw. YL/YH die richtige Adresse 
enthalten sollte dein Programm problemlos laufen. Wenn du die allerdings 
durch falsche Zeiger z.B. die Return-Adressen auf dem Stack 
überschreibst, kann's daneben gehen.

von Tobias Müller (Gast)


Lesenswert?

Hmm... Wenn ich bei 0 Anfange und höchsten 80 wird, dann solltest doch 
locker reichen, oder?

von Tobias Müller (Gast)


Lesenswert?

Hmm...vielleicht verstehe ich das auch mit den High/Low Dinger falsch

Ich denke:

Der Pointer Y besteht aus YL und YH. YL enthält die "niedrigen Werte" 
als z.B. bei 1000 als Zahl:

  YH    |   YL
00000011 11101000

Oder ist das falsch?

Grüße

von mikki merten (Gast)


Lesenswert?

Mit 0 kannst du nicht anfangen, da ja dort die Register 0-31 gefolgt von 
den I/O-Registern liegen. Die erste SRAM-Adresse ist $60. Bei den 
grossen Atmels mit zusätzlichem I/O (z.B: Mega 128) $100.

von Tobias Müller (Gast)


Lesenswert?

Ah! Daran liegt es wohl!!!

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.