hallo, ich wollte mal fragen woher das kommt, dass nach einem Vergleich mittles cpi das z-Flag unbestimmt ist. Eigentlich sollte das doch nicht möglich sein?! Gruß, JK
pacer wrote: > ich wollte mal fragen woher das kommt, dass nach einem Vergleich mittles > cpi das z-Flag unbestimmt ist. Ne, CPI funktioniert natürlich korrekt und auch ein BREQ danach. Peter
ist die Fehlermeldung die VMLAB bringt. jezt habe ich das register vorher über ldi mit einer Null beschrieben, und siehe da, der Fehler taucht an dieser Stelle nicht mehr auf (leider dafür an einer anderen Stelle mit dem Befehl tst) Selbst wenn ich das register nicht beschreibe, sollte ja eine Null drin stehen, komisch?!
pacer wrote: > ist die Fehlermeldung die VMLAB bringt. Mag ja sein, das hat aber nichts damit zu tun, was der AVR im wirklichen Leben macht. Peter
Ja. das ist was anderes. Der Compiler kann nicht nachvollziehen, dass im Z was sinnvolles drin sein soll.
6632 wrote: > Ja. das ist was anderes. Der Compiler kann nicht nachvollziehen, dass im > Z was sinnvolles drin sein soll. Wenn du keine Ahnung davon hast, was da gezeigt wird, dann rede bitte nicht drüber. Kann eigentlich nur ein VMlab-Bug sein. Schade nur, das Tool wird nicht mehr gepflegt, da ihm der gewünschte kommerzielle Erfolg versagt geblieben ist. Ich kann's nur immer wieder schreiben: wer daran interessiert ist, sollte einfach Enrique fragen, ob er es entweder opensource machen möchte oder aber wenigstens jemandem den Sourcecode unter NDA zur weiteren Pflege übergeben würde.
Ich hab den Fehler gefunden, nachdem ich mich ein bisschen mit der Speicheranzeige befasst habe, ist mir aufgefallen, dass der X-Pointer ins Leere zeigt, ich muß ihn also vorher wieder auf das erste Zeichen zeigen lassen. Bin also noch fleißig am Knobeln.
>jezt habe ich das register vorher über ldi mit einer Null beschrieben,
Bingo, "ldi" ändert das Z-Flag nämlich gerade NICHT!
clr temp --> S = 0, N = 0, V = 0, Z = 1.
ldi temp, 0 --> alle Flags bleiben unverändert.
>Bingo, "ldi" ändert das Z-Flag nämlich gerade NICHT! Zusatz: Die Aussage bezieht sich auf einen realen AVR.
ich denke im ersten Fall ist das richtig, was Peter erwähnt hat. Im realen AVR, gibt es keinen unbestimmten Zustand, wenn es nicht 1 ist, ist es eben 0. Und 0 ist auch ein Ergebnis, oder? Vielleicht war das undeutlich ausgedrückt, aber ich habe in ein beliebieges Regster eine 0 geladen und dann einen Vergleich (cpi temp,0) gestartet. Damit wird das Z-Flag auf 0 gesetzt. Ich habe es natürlich nicht direkt auf Null gesetzt.
@ pacer (Gast) >ich denke im ersten Fall ist das richtig, was Peter erwähnt hat. >Im realen AVR, gibt es keinen unbestimmten Zustand, Ja. Aber es gibt viele befehle, welche die Flags nicht verändern. > wenn es nicht 1 ist, >ist es eben 0. Und 0 ist auch ein Ergebnis, oder? Sicher. MFG Falk
Nein. Das Z ist nur Null wenn der Vergleich auch mit diesem Register geschah. Irgendein Register laden und mit "temp" vergleichen ist unbestimmt. ldi temp,0 cpi temp,0 Z -> 0
genau, das habe ich gemacht, passt ja jetzt. Muss ich nur noch das zweite Problem klären...
>Im realen AVR, gibt es keinen unbestimmten Zustand, wenn es nicht 1 ist, >ist es eben 0. Und 0 ist auch ein Ergebnis, oder? Unbestimmte Flagzustände gibt es selbstverständlich nicht. Der Unterschied besteht nicht in "Flagzustand bestimmt - Flagzustand unbestimmt", sondern "Befehl beeinflusst Flags - Befehl lässt Flags unangetastet". >aber ich habe in ein beliebieges Regster eine 0 geladen und dann einen >Vergleich (cpi temp,0) gestartet. Damit wird das Z-Flag auf 0 gesetzt. So ist es. Äquivalent dazu wäre ein "tst temp".
Wenn man nur das Z auf Null haben will geht das einfacher : BCLR Z
Danke für den Tipp. Wegen meinem zweiten Problem muss ich erst mal ne Zwischenfrage stellen. Habe ich aber in einem neuen Post gemacht, weils thematisch hier nicht reinpasst. Ist aber das Problem mit tst, so wie weiter oben beschrieben.
>Wenn man nur das Z auf Null haben will geht das einfacher : >BCLR Z CLZ ;-)
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.