Z80 – 8 Bit Division
Der Z80 hat leider auch keinen Befehl für eine Division. Zwar kann man mit Bit-Shifting einiges bewirken, die Möglichkeiten sind aber begrenzt. Also muss eine kleine Routine her. Hier eine 8 Bit-Division der Form BC=HL/E (Also Register HL durch Register E, Ergebnis in Register BC). Die Routine bedient sich der einfach Subtraktion.
| 
					 1 2 3 4 5 6 7 8 9 10 11  | 
						Divide:                             ; Diese Routine führt eine Division der Form BC=HL/E durch      ld a,e                         ; Den Divisor auf 0 prüfen, wenn 0, dann Ende (Division durch 0)      or a                           ; --> Übertragsbit (carry) ist leer.      ret z                          ; Es liegt Division durch 0 vor      ld bc,-1                       ; BC soll das Ergebnis enthalten      ld d,0                         ; Register D auf 0, Registerpaar DE enthält jetzt den Divisor DivLoop:                            ; DE von HL abziehen bis zum Überlauf      sbc hl,de                      ; da das Carry-Bit nicht gesetzt ist, funktioniert SBC wie SUB      inc bc                         ; BC um eins hochzählen      jr nc,DivLoop                  ; Solange das Carry-Bit nicht gesetzt ist, wird die Schleife wiederholt  ret  |