Господа, не поможете ли решить такую задачку. Требуется переписать на асм функции генерации случ. чисел в заданном диапазоне - для байтов и для слов. Сейчас они написаны у меня частично на Си, что конечно не так эффективно.
Код:
/*--------------------------------- Cut here ---------------------------------*/
/* SEED_RND address */
#define SF_RND$ 0x5C76
unsigned int _Basic_RandBB (void) /* Ripped from Beta Basic */
{
__asm
LD D,#0
LD BC,(#SF_RND$)
LD H,C
LD L,#0xFD
LD A,B
OR A
SBC HL,BC
SBC A,D
SBC HL,BC
SBC A,D
LD E,A
SBC HL,DE
JR NC,R1$
INC HL
R1$:
LD (#SF_RND$),HL
__endasm;
} //__Basic_RandBB
/*--------------------------------- Cut here ---------------------------------*/
unsigned char Basic_RND (unsigned char min, unsigned char max) {
return _Basic_RandBB()%(max-min+1) + min;
} //Basic_RND
/*--------------------------------- Cut here ---------------------------------*/
unsigned int Basic_RNDW (unsigned int min, unsigned int max) {
return _Basic_RandBB()%(max-min+1) + min;
} //Basic_RNDW
Опять же, знаю, что много где в прессе и на форумах приводятся разные генераторы случ. чисел, но вопрос именно про в заданном диапазоне, так что поделитесь, пожалуйста, наработками. А можно смотреть на тему шире, не возражаю если вообще обсудим случайные, а не псевдослучайные числа и методы их получения на Z80.