Если все же достаточно 8*8=16, то компактнее и быстрее (и без порчи A) так:
Скрытый текст
Код:;HL=H*E
mul88:
mvi l,0
mov d,l
mvi b,8
mul88_1:
dad h
jnc mul88_2
dad d
mul88_2:
dcr b
jnz mul88_1
ret
[свернуть]
Вид для печати
Если все же достаточно 8*8=16, то компактнее и быстрее (и без порчи A) так:
Скрытый текст
Код:;HL=H*E
mul88:
mvi l,0
mov d,l
mvi b,8
mul88_1:
dad h
jnc mul88_2
dad d
mul88_2:
dcr b
jnz mul88_1
ret
[свернуть]
Да, у меня 8х8. Отличный мул у тебя.
Подскажите пожалуйста как включать квазидисковый режим Баркаря? Или он включается всегда если такой квазидиск используется?
Еще чуть компактнее и быстрее (портим A вместо B)
Скрытый текст
Код:;HL=H*E
mul88:
xra a
mov l,a
mov d,a
cma
mul88_1:
dad h
jnc mul88_2
dad d
mul88_2:
add a
jm mul88_1
ret
[свернуть]
Похоже на самое компактное умножение 8*8=16 для 8080. Или нет?
Про Баркаря можно почитать в журнале Радиолюбитель 95/11
- - - Добавлено - - -
Upd: И еще на 4 такта быстрее.
Добавил раздел про работу с квазидиском.
- - - Добавлено - - -
Добавил раздел про тайминги команд.
Была у меня книжка: Злобин В. К., Григорьев В. Л. Программирование арифметических операций в микропроцессорах. М.:1991
В Сети скан находится без проблем. Сейчас посмотрел - есть несколько алгоритмов и для умножения 8x8->16 на ВМ80. Не было сейчас времени вникнуть, насколько они хороши, но может на будущее пригодится...
Иногда надо маленький диапазон псевдослучайности -- 11-битный LFSR:
Сделал ему Мандрил-тест.Код:; выход:
; HL - число от 1 до 2047
rnd11:
lxi h,1
mov a, h
rrc \ rrc
xra h
ani 1 ; bit 10 xor bit 8
dad h
ora l
mov l, a ; lsb = bits 10 xor 8
mvi a, 7
ana h
mov h, a
shld rnd11+1
ret
Конфигурация Галуа все же эффективнее Фибоначчи при программной реализации, даже в таком не очень удобном случае
Скрытый текст
Код:rnd11:
lxi h,1
dad h
mvi a,1000b
ana h
jz rnd11exit
xra h
mov h,a
mvi a,5
xra l
mov l,a
rnd11exit:
shld rnd16_1+1
ret
[свернуть]
Не помню, почему взял тот полином в rnd16, возможно чтобы картинка проявлялась помедленнее. Но скорее всего просто прошляпил. Если заменить mvi a,00000001b на mvi a,2Dh, то дальше можно убрать 3 команды относящиеся к h.
Ссылки которые содержат номер страницы - не работают, если у вас в настройках форума другой размер страницы.
Речь про ссылки вида
Цитата:
Самая быстрая установка палитры по версии Improver
https://zx-pk.ru/threads/29144-progr...ml#post1136855