Без четких критериев оптимальности и ограничений не получится сделать оптимальную процедуру. Если говорить о развернутых вариантах, то для 8080 быстрейшим является реализация алгоритма blackmirrora, которую можно найти в ветке про пи. Насчет ее оптимальности по скорости для z80 (с соответствующей оптимизацией) я уверен не на 100%, но по крайней мере она где-то среди быстрейших.
Если вернуться к сравнительно компактным процедурам, то изменив распределение регистров, можно еще оптимизировать
Скрытый текст
Код:DIV32: ld a,b ld b,16 ; BC = HLBC/DE, HL = HLBC%DE DIV321: sla c rla adc hl,hl jr c, DIV322 sbc hl,de jr nc, DIV323 add hl,de djnz DIV321 ld b,a ret DIV322: ccf sbc hl,de DIV323: inc c djnz DIV321 ld b,a ret[свернуть]
И важно знать предполагаемые диапазоны наиболее вероятных значений делимого и делителя. Самую короткую процедуру можно оптимизировать без увеличения размера для (как мне представляется) наиболее востребованных соотношений делимого и делителя, для четкой проверки нужен конкретный test bench.




Ответить с цитированием