setar писал(а):как раз на робоклубе рандом в си реализован,
а вот как это сделать в асм я так и не придумал.
Один из таймеров-счётчиков задействовать, настроить на какую-нить частоту, асинхронно считывать значение, это значение использовать как адрес для выборки байта из памяти програм, и пообъеденять полученые 3 байта напр. через XOR или просумировав без учёта переноса меж собой, и предыдущим значением - получим псевдослучайное число размером в байт. Такое делал довольно давно ещё на Спектруме - довольно неплохо работало, и последовательность повторялась довольно нескоро. Можно наварганить и посложнее алгоритм - повторяться будет ещё реже.
Можно и без таймера-счётчика обойтись, но тогда начало последовательности будет заранее извесно: задаёться какой-то регистр как указатель на последовательность, из ячейки, на которую он указывает в памяти програм считываеться число, указатель инкрементируем и прибавляем это число - это новый указатель, побайтная сумма указателя с этим числом и будет значением (можно ещё и с XOR побаловаться).