По аналогии со второй версией без восстановления остатка, сделал подобную версию и с восстановлением
Скрытый текст
Код:; 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 быстрее. Можно еще немного ускорить за счет некоторого увеличения размера, но не сильно, тут уже каждый сам может при желании доработать.