Hallo, kann mir jemand sagen, ob die Atmel Megas eine Modulo Operation können? Ich habe da bisher nix gefunden Grüsse Ralf
Klar können die das, kann jeder µProzessor. Der Modulo ist der Restwert einer Division. Und falls der Modulo aus einer Division einer 2ér-Potenz ermittelt werden soll (/2, /4, /8 etc.), reicht, in ASM oder auch C, eine einfache AND-Verknüpfung. MfG Andi
Danke für deine Antwort. Einen speziellen Befehl zB wie add oder mul gibts aber nicht für diese Operation oder? In C isset ja % aber es geht mir ja um einen Assembler Befehl. Mein Ziel ist es für eine beliebige einstellige Dezimalzahl den den Modulo 4 Wert zu bilden Also zB: 9 %4 = 1
Nix leichter als das! Zum Beispiel: ldi r16,11 ;Ausgangswert andi r16,3 ;Modulo aus 11 / 4 = 3 oder ldi r16,6 ;Ausgangswert andi r16,3 ;Modulo aus 6 / 4 = 2 Der Wert 3 für die AND-Verknüpfung kommt daher, das ein Modulo 4 Werte von 0 bis 3 haben kann und die 4 einer Zahl aus einer 2ér-Potenz entsprechen. Mit Modulo 5 geht das natürlich nicht sondern immer nur mit Zahlen wie 2, 4, 8, 16, 32 etc. Brauchst Du mal einen Modulo aus 8, machst Du eine AND-Verknüpfung mit 7 (0 bis 7 sind dann mögliche Werte). Bei Modulo 100 z. B. benötigst Du eine Divisions-Routine welche das Ergebnis und den Restwert zurück gibt. MfG Andi
Guck dir einfach das Instruction Set an: http://www.atmel.com/dyn/resources/prod_documents/DOC0856.PDF da kannst du gleich sehen, welche Befehle drin sind.
Modulo erfolgt bei der Division. Der Befehl wäre also "DIV", aber den haben die AVRs nicht. Der 8051 hat "DIV" (8Bit Division), der Quotient steht dann in A, der Rest (Modulo) im B-Register. Peter
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.