Важная информация

User Tag List

Показано с 1 по 9 из 9

Тема: Нужны процедуры.

  1. #1
    Activist
    Регистрация
    27.02.2005
    Адрес
    Белоруссия
    Сообщений
    382
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Нужны процедуры.

    Может у кого есть процедуры
    1 - генератор случайных чисел, генерящий число в заданном 8bit диапазоне.
    выдающий разные числа даже при первом обращении
    2 - процедура деления 16bit/8bit=16bit остаток не важен

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master Аватар для ng_dead
    Регистрация
    22.02.2006
    Адрес
    Москва
    Сообщений
    522
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от transman Посмотреть сообщение
    Может у кого есть процедуры
    1 - генератор случайных чисел, генерящий число в заданном 8bit диапазоне.
    выдающий разные числа даже при первом обращении
    2 - процедура деления 16bit/8bit=16bit остаток не важен
    1. пользовал процу из какойто книженции. помойму "как написать игру на ассемблере", посмотри мож подойдет.
    2: http://www.zxdn.narod.ru/coding/bd22divd.txt
    Time to burn! You losers better learn -
    No one controls our goddamn lifesl

    Дельта-С 128
    Amiga 600
    Raspberry Pi Rev. B

  4. #3
    Master
    Регистрация
    20.01.2005
    Адрес
    Россия, Вологда
    Сообщений
    957
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По rnd здесь.
    Вложения Вложения
    • Тип файла: zip RND.zip (18.5 Кб, Просмотров: 244)
    axor/Perspective
    http://abzac.retropc.ru/

  5. #4
    Member Аватар для jim
    Регистрация
    31.03.2005
    Адрес
    Новосибирская область
    Сообщений
    96
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вот. выдрано из beta basic
    Код:
    rand_	ld	d,0
    	ld	bc,(rnd)
    	ld	h,c
    	ld	l,#fd
    	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	(rnd),hl
    	ret
    rnd	dw	0
    Добавлено через 13 минут
    процедура деления по модулю вместе с процедурой вызова рандомайзера. на входе в А указываешь максимальное число диапазона в котором нужно получить рнд. на выходе рнд от нуля до макс..

    Код:
    mod	ld	a,16
    	ld	hl,0
    m0	rl	e
    	rl	d
    	rl	l
    	rl	h
    	sbc	hl,bc
    	jr	nc,m1
    	add	hl,bc
    m1	ccf
    	dec	a
    	jr	nz,m0
    	ret
    
    rand	push	af
    	call	rand_
    	pop	af
    	ld	c,a
    	ld	b,0
    	ex	de,hl
    	call	mod
    	ld	a,l
    	ret
    Последний раз редактировалось jim; 24.07.2007 в 21:01. Причина: Добавлено сообщение

  6. #5
    Activist Аватар для Raider
    Регистрация
    24.06.2005
    Адрес
    novosibirsk
    Сообщений
    266
    Записей в дневнике
    5
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    PHP код:
    вот моя 16 бит

    rnd =  seed*5+1

    seed
    :   LD HL,0
               LD D
    ,H
               LD E
    ,L
               ADD HL
    ,HL
              ADD HL
    ,HL
              ADD HL
    ,DE
             INC HL
             LD 
    (SEED+1),HL           ;  hl rnd 
    Alex Raider, Flash inc. 1992-1997 Новосибирск

  7. #6
    Member Аватар для Vladson
    Регистрация
    14.01.2008
    Адрес
    Эстония, Таллинн
    Сообщений
    177
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    24
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Raider, старший байт какой-то не особо случайный получается. Таким образом если использовать её например для заполнения экрана то придётся в 2 раза больше раз её выполнять.

    Всё-же ИМХО вариант из beta basic предпочтительнее (сам я использую что-то типа его.)

    Цитата Сообщение от axor Посмотреть сообщение
    По rnd здесь.
    От туда очень понравился вариант
    Код:
    RND	LD A, (R1)
    	LD D, A
    	LD A, (R2)
    	LD (R1), A
    	ADD A, D
    	LD D, A
    	LD A, (R3)
    	LD (R2), A
    	ADD A, D
    	RLCA
    	LD (R3), A
    	RET
    Просто элегантное решение.
    Последний раз редактировалось Vladson; 16.01.2008 в 15:17.
    Разрабатываю новый сетевой протокол
    Variable Length Advanced Data Sending Over Network
    Что он будет делать и зачем нужен не знаю, разработал пока только название.

  8. #7
    Activist Аватар для Raider
    Регистрация
    24.06.2005
    Адрес
    novosibirsk
    Сообщений
    266
    Записей в дневнике
    5
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladson Посмотреть сообщение
    Raider, старший байт какой-то не особо случайный получается. Таким образом если использовать её например для заполнения экрана то придётся в 2 раза больше раз её выполнять.
    смотря как ты заполняешь. просто байтом?
    совершенно особая ситуация возникает если приходится ставить множество случайных точек на экран, генерации X, а затем Y. Вот там-то быстро можно увидеть, какой RND генератор "настоящий". Попробуйте, кстати для эксперимента. Увлекательнейшее дело.

    генераторы основанные на принципе "сдвиг и xor" дают случайный бит. их используют для шума. но такие генераторы дают очень плохой случайный байт.

    в линейном конгруэнтном датчике псевдо-случайной последовательности, что определяется формулой X[n+1] = (X[n] * A) mod B + C
    наиболее "шумят" старшие биты. наименее - младшие.
    * - это обычное умножение, A следует брать любым, но жел-но таким что остаток от денения его на 4 дает 1.
    mod - операция взятия остатка от деления. (здесь получается B = 65536)
    + сложение. C следует брать любым, всегда нечетным

    Добавлено через 4 минуты
    а вот еще фокус для экспериментаторов с RND.
    если взять как случайное число сумму случайных чисел, скажем 3-4 и более, то у данной последовательности изменяется мат.ожидание, меняется распределение.
    оно меняется от uniform (чистый белый шум) например на triangular.
    а такой шум звучит иначе.

    для 1-битной пищалки можно попытаться складывать биты. тоже будет изменение тембра шума.
    Последний раз редактировалось Raider; 29.09.2008 в 23:26. Причина: Добавлено сообщение
    Alex Raider, Flash inc. 1992-1997 Новосибирск

  9. #8
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вот эта процедура на 100% эмулирует рандом из ПЗУ

    sub_random
    push de,bc,af
    ld de,0
    seed equ $-2
    xor a
    ld h,a,l,a,b,a
    add hl,de
    adc a,b
    dup 3
    add hl,hl
    adc a,a
    edup
    add hl,de
    adc a,b
    dup 2
    add hl,hl
    adc a,a
    edup
    add hl,de
    adc a,b
    add hl,hl
    adc a,a
    add hl,de
    adc a,b
    sub #4a
    neg
    ld c,a
    add hl,bc
    ld (seed),hl
    pop af,bc,de
    ret
    С уважением,
    Jerri / Red Triangle.

  10. #9
    Member Аватар для Vladson
    Регистрация
    14.01.2008
    Адрес
    Эстония, Таллинн
    Сообщений
    177
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    24
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Raider Посмотреть сообщение
    Попробуйте, кстати для эксперимента. Увлекательнейшее дело.
    Пробовал, очень увлекательно

    Дело в том что вариант HL*5+1 даёт последовательность из 65536 чисел, а тот что мне понравился из ~16млн (после чего всё идёт по второму кругу)
    Последний раз редактировалось Vladson; 24.11.2008 в 01:48.
    Разрабатываю новый сетевой протокол
    Variable Length Advanced Data Sending Over Network
    Что он будет делать и зачем нужен не знаю, разработал пока только название.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Арифметические процедуры на ассемблере
    от spensor в разделе Программирование
    Ответов: 27
    Последнее: 13.05.2017, 20:56
  2. Процедуры на асме (умножение деления)
    от gres8 в разделе Программирование
    Ответов: 3
    Последнее: 25.01.2007, 10:26
  3. Функция #0a процедуры #3d13
    от axor в разделе Программирование
    Ответов: 3
    Последнее: 12.10.2006, 16:31
  4. Нужны исходники
    от newart в разделе Программирование
    Ответов: 19
    Последнее: 08.02.2006, 15:51
  5. Нужны микрухи...
    от BotzMan в разделе Барахолка (архив)
    Ответов: 4
    Последнее: 21.12.2005, 15:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •