Из газеты Body #22, Минск, 29.12.2000 --------------------------[ Coding ]-------------------------- (c) Brom^Ellipse 500:17/2@zxnet Привет всем, это опять я и мои чудо процедуры на ассемблере. Сегодня я представляю вашему вниманию очередную арифметическую процедуру деления 16-битного числа на 8-битное, т.е. деление HL на B. Процедурка довольно шустрая, для самых умных я проставил количество тактов при выполнении каждой команды, если будет желание можете подсчитать, хотя для каждой комбинации время выполнения будет разным. К сожалению у меня в справочники не оказалось команды сдвига битов SLI E, но по моим подсчетам она выполняется за 8 тактов. Так же любители оптимизации могут сразу же заметить стоки в которых стоят звездочки (для не понятливых "*"), если убрать данные строки, то выходной результат будет находиться не в HL, а в DE, убрав данные строки вы так же ускорите процедуру на 4 такта и уменьшите ее в объеме на 2 байта :) ;Входные данные: Выходные данные: ; HL - делимое HL - результат ; B - делитель DIV_HL_B XOR A ; 4 LD DE,1 ; 10 DIV1 SLA L ; 8 RL H ; 8 RLA ; 4 CP B ; 4 JR C,ZR ; 12/7 SUB B ; 4 SLI E ; RL D ; 8 JR NC,DIV1 ; 12/7 EX DE,HL ; 4 * RET ; 10 ZR SLA E ; 8 RL D ; 8 JR NC,DIV1 ; 12/7 EX DE,HL ; 4 * RET ; 10