3*85/256 = 0.99609...
Если округлить до ближайшего целого - то получится правильный ответ, 1.
Например, если у нас в HL - результат от умножения на 85, то:
Округлит результат.Код:LD A,H RL L ADC A,0
---------- Post added at 16:07 ---------- Previous post was at 15:59 ----------
Только что проверил. Округление - это хорошо, но в деле нахождения остатка помогает плохо. Неверное частное без округления при умножении на 85 и делении на 256 получается только для тех чисел, которые делятся на 3 нацело. Но этот случай легко предусмотреть. Например, находим частное q = i*85/256 (округляем в меньшую сторону). Умножаем частное на 3, вычитаем из делимого. Получаем остаток, который будет равен 3 (а не 0) в случае, если исходное число делится на 3 нацело. Просто проверяем, что если вычисленный остаток равен 3 - то обнуляем его, и все.






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