Forum: Mikrocontroller und Digitale Elektronik AVR Risc Controller Modulo Operation


von Ralf (Gast)


Lesenswert?

Hallo,

kann mir jemand sagen, ob die Atmel Megas eine Modulo Operation
können?
Ich habe da bisher nix gefunden

Grüsse Ralf

von Andi (Gast)


Lesenswert?

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

von Ralf (Gast)


Lesenswert?

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

von Andi (Gast)


Lesenswert?

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

von ERDI - Soft (Gast)


Lesenswert?

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.

von Peter Dannegger (Gast)


Lesenswert?

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

von And (Gast)


Lesenswert?

Und für was jetzt "DIV" beim Modulo 4 (auch, wenns ein 8051 wäre)?
X Modulo 4 = X AND 3

MfG
Andi

von Andi (Gast)


Lesenswert?

Und für was jetzt "DIV" beim Modulo 4 (auch, wenns ein 8051 wäre)?
X Modulo 4 = X AND 3

MfG
Andi

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.