Vom Prinzip her ist die Vorgehensweise so, wenn man quot = a / b und mod = a modulo b berechnen will:
  1. Erweitere b zu einem 24-Bit-Wert, indem man es expandiert. Wie expandiert wird, ist abhängig davon, ob die Werte Vorzeichen haben oder nicht. Ist b ohne Vorzeichen (also >= 0) wird es mit Nullen aufgefüllt. Ist b vorzeichenbehaftet, wird das obere Bit von b zum Füllen verwendet
  2. Merke die Vorzeichen ersetzte a, b durch ihre Beträge
  3. Falls b=0 dann FEHLER
  4. Falls b > a oder a=0 dann quot:=0, mod=:a, Gehe zu 12.
  5. mask:=1, quot := 0
  6. Schiebe mask und b so lange nach links, bis das obere Bit von b mit dem oberen Bit von a übereinstimmt
  7. Falls b<=a dann a := a-b, quot := quot OR mask
  8. Schiebe b und mask um 1 nach rechts
  9. Falls b ungleich 0 dann gehe zu 7.
  10. mod := a
  11. Rechne die gemerkten Vorzeichen von a und b in das Ergebnis ein
  12. Fertig


Von a werden also 2er-Potenzen von b abgezogen, falls dieser Wert <= a ist. Wie hoch die Potenz ist merkt mask. Im Falle einer Subtraktion wird zum Ergebnis mask addiert (in diesem speziellen Fall geht ein OR (bitweise ODER), gleichbedeutend und gleicheffizient für AVR ist eine Addition).

Linksschieben geht mit
add R0, R0
addc R1, R1
addc R2, R2
...
Für addc x, x ist auch die Abkürzung rol x gebräuchlich, für add x, x auch lsl x oder asl x

Zum Vergleichen nimmt man
cp A0, B0
cpc A1, B1
cpc A2, B2
...
cp und cpc funktionieren genauso wie Subtraktion, nur das A nicht verändert wird, sondern nur die Flags, Mit dem Carry-Flag kann man auf größer/kleiner testen, mit dem Zero-Flag auf Gleichheit, etc