m8div06252026c.asm

;; david vajda
;; div command bitwise
;; 06/25/2026

.include "m8def.inc"

.equ DIVIDEND   =   56
.equ DIVISOR    =   7

ldi r16, HIGH (RAMEND)
out SPH, r16
ldi r16, LOW (RAMEND)
out SPL, r16

ldi r16, 0xff
out DDRD, r16

ldi r17, DIVIDEND
ldi r19, DIVISOR
ldi r21, 0x00

.def    dividendr           =   r17
.def    divisorr            =   r19
.def    submaskr            =   r21
.def    dividendsubmaskr    =   r18
.def    quotientr           =   r23
.def    dividendsubmasksub0growingr =   r24

prerun001:
sbrc dividendr, 7
rjmp prerun1end
lsl dividendr

lsl submaskr
ori submaskr, 0b00000001

rjmp prerun001
prerun1end:

ldi r16, 0x00

ldi quotientr, 0x00
div000:

and dividendsubmaskr, submaskr
cp dividendsubmaskr, divisorr
brlt div001
ori quotientr, 0b00000001
rjmp div002
div001:
ori quotientr, 0b00000000

div002:
lsr submaskr
lsr divisorr
rjmp div000


end: rjmp end