Hallo Kann mir jemand sagen, wie man ein Vergleich in ASM macht? Ich will ein Variable inc. Wenn sie z.B. eins ist springe, wenn sie zwei ist springe doch wenn sie ungleich 0 1 2 oder 3 ist dann setzte Variable auf 0 zurück. Ich hatte es mit cpi zustand, 4 breq reset das haut aber nicht hin. In Basic ging das: if zustand > 3 then reset Vielen Dank für eure Hilfe Frank
"if zustand > 3 then reset" Wenn du das so schreibst, laesst das irgendwie vermuten, dass reset eine deklarierte Sub ist. Da Breq aber eher einem normalen Sprungbefehl (Goto) gleichkommt, koennte das wegen des ret am Ende der Sub irgendwas im Stack vemurksen. MfG
Hallo Ja, es ist eine SUB. Ich inc die Var. mit einem Drehgeber. Ich will nur Bit 1 und 2 und 3 haben. Wenn Zustand eine andere grösse annimmt, dann soll er zu reset springen und Zustand wieder auf Null setzen. Das das ganze von vorn begint. Soll eine Menüsteuerung werden. Frank
cpi zustand, 4 brsh reset1 'huepfen, wenn groesser oder gleich 4 . .'restlicher code . . . jmp ende !reset1: rcall reset !ende: Versuchs mal so. MfG
Wobei die Sub nicht unbedingt noetig ist, wenn dort nur die Variable wieder 0 gesetzt wird. Also: cpi zustand, 4 brsh reset1 'huepfen, wenn groesser oder gleich 4 . .'restlicher code . . . jmp ende !reset1: clr zustand !ende:
Hi! Wenn "Zustand" niemals höhere Werte als 4 annehmen kann, dann geht das auch so: cpi zustand, 4 ;Ist zustand > 3? brne NoReset ;Wenn nicht, dann Wert belassen. clr Zustand ;zustand löschen, ist das selbe wie "ldi zustand,0". NoReset: Wenn es aber auch mal durch Zufall Werte größer 4 haben sollte, kann man auch mit kleiner als, lower, brlo, vergleichen bzw. springen: cpi zustand, 4 ;Ist zustand < 4? brlo NoReset ;Wenn ja, dann Wert belassen. clr Zustand ;zustand löschen, ist das selbe wie "ldi zustand,0". NoReset: MfG Andi
clr Zustand ;zustand löschen, ist das selbe wie "ldi zustand,0". Dasselbe nur in dem Sinn, daß sowohl nach "clr a" als auch nach "ldi a, 0" das Register a den Wert Null hat. Es gibt jedoch einen Unterschied zwischen diesen beiden Null-Setz-Varianten, der durchaus bedeutsam sein kann: clr beeinflußt das S-, V-, N- und Z-Flag (S=0, V=0, N=0, Z=1), wohingegen ldi keine Wirkung auf die Flags hat.
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.