По аналогии со второй версией без восстановления остатка, сделал подобную версию и с восстановлением
Скрытый текст
Код:; BC = HLBC/DE, HL = HLBC%DE
; Restoring division
DIV32:
ld a,b
call DIV32_8
push af
ld a,c
call DIV32_8
pop bc
ld c,a
ret
; A = HLA/DE, HL = HLA%DE
DIV32_8:
ld b,8
DIV321:
add a,a
adc hl,hl
jr c, DIV322
sbc hl,de
jr nc, DIV323
add hl,de
djnz DIV321
ret
DIV322:
ccf
sbc hl,de
DIV323:
inc a
djnz DIV321
ret
[свернуть]
+7 байт, но она быстрее и 2в1 - тут не только 32/16=16, но и 24/8=8 (кстати без восстановления остатка тоже во второй версии эта фишка есть, забыл там написать).
В итоге у каждого метода (restoring и non-restoring) по два варианта: компактный и побыстрее. Если сравнивать методы, то очевидно restoring компактнее, non-restoring быстрее. Можно еще немного ускорить за счет некоторого увеличения размера, но не сильно, тут уже каждый сам может при желании доработать.

