User Tag List

Страница 10 из 30 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя
Показано с 91 по 100 из 305

Тема: Программирование

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,396
    Спасибо Благодарностей отдано 
    765
    Спасибо Благодарностей получено 
    2,368
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    push b ... pop b - может push d ... pop d?

    - - - Добавлено - - -

    И, кстати, если оставить push h ... pop h, то не будет hl - 16-bit pseudo-random number

    - - - Добавлено - - -

    Хотя лучше убрать комментарий про "hl - 16-bit pseudo-random number", эта процедура рассчитана на генерацию 8 битных случайных чисел.

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

  3. #2

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    410
    Спасибо Благодарностей отдано 
    593
    Спасибо Благодарностей получено 
    345
    Поблагодарили
    111 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor, ага, спасибо. поторопился.

  4. #3

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,396
    Спасибо Благодарностей отдано 
    765
    Спасибо Благодарностей получено 
    2,368
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    эта процедура рассчитана на генерацию 8 битных случайных чисел.
    Частично сдам назад. Для 8-битных обеспечивается заявленный период и в таком варианте, как пишет автор, генератор почти прошел статистические тесты. Но если обеспечение заявленных характеристик не обязательно и надо просто сгенерировать "что-то псевдослучайное 16-битное", то можно взять HL, только для этого нужно вызывать rnd8 по два раза для получения нового значения HL! На мой взгляд все же лучше брать генератор нужной разрядности с предсказуемыми характеристиками.

  5. #4

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    1,144
    Спасибо Благодарностей получено 
    1,480
    Поблагодарили
    528 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати, нашёл, вот тут я тестировал два рандомайзера:
    https://zx-pk.ru/threads/32499-porti...=1#post1091958

  6. #5

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    410
    Спасибо Благодарностей отдано 
    593
    Спасибо Благодарностей получено 
    345
    Поблагодарили
    111 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    покумекав для себя вывел вот такой псевдо рандом для байтоых значений
    Код:
    Random:
    @mainCodeAddr:
    			lxi h, $100
    @rnd:
    			sbi 1
    			rrc
    			xra m
    			cma
    			inr l
    			sbb m
    			shld @mainCodeAddr+1
    			sta @rnd+1				; 84
    			ret
    рандомайзит вполне пригодно для меня. ну и побыстрее чем то что нашел.



    - - - Добавлено - - -

    lxi h, адресс кода основной программы используется как сид. используются только 256 байт

    - - - Добавлено - - -

    nzeemin, проверь если сможешь в своих проектах насколько универсальная или не универсальная штука получилась.
    Последний раз редактировалось parallelno; 09.08.2022 в 20:38.

  7. #6

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    1,144
    Спасибо Благодарностей получено 
    1,480
    Поблагодарили
    528 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вспомнил что ещё недавно разбирал код на Z80 имеющий 16-битный рандом.
    Это из Scuba Dive для ZX Spectrum:
    Код:
    NextRandom
    	LD HL,(RANDOM)		; get current Random
    	LD D,H	
    	LD E,L	
    	ADD HL,HL		; x2
    	ADD HL,HL		; x4
    	ADD HL,HL		; x8
    	ADD HL,HL		; x16
    	PUSH HL	
    	ADD HL,HL		; x32
    	EX (SP),HL	
    	OR A	
    	SBC HL,DE		; HL = x15
    	POP BC			; BC = x32
    	ADD HL,BC		; x47
    	ADD HL,HL		; x94
    	ADD HL,HL		; x188
    	ADD HL,HL		; x376
    	ADD HL,DE		; x377
    	ADD HL,HL		; x754
    	ADD HL,HL		; x1508
    	ADD HL,DE		; x1509
    	LD DE,$0029	
    	ADD HL,DE	
    	LD (RANDOM),HL		; (RANDOM) := (RANDOM) * 1509 + 41
    	RET

    Эти 2 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Oleg N. Cher(09.08.2022), parallelno(09.08.2022)

  8. #7

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    410
    Спасибо Благодарностей отдано 
    593
    Спасибо Благодарностей получено 
    345
    Поблагодарили
    111 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ___
    Последний раз редактировалось parallelno; 09.08.2022 в 20:21.

  9. #8

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    1,144
    Спасибо Благодарностей получено 
    1,480
    Поблагодарили
    528 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    И ещё один вариант рандомайзера, на этот раз 8-битный, из Highway Encounter, с виду довольно быстрый:
    Код:
    ; Псевдослучайное 8-битное число с периодом 256 по отношению: X[1] = X[0] * 5 + 7
    ; I: -
    ; O: A=RND
    ; M: HL, AF
    Rand:		lxi	h,RndVal
    		mov	a,m
    		add	a
    		add	a
    		add	m
    		adi	7
    		mov	m,a
    		ret

    Эти 3 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    Oleg N. Cher(09.08.2022), parallelno(09.08.2022), svofski(06.09.2022)

  10. #9

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    410
    Спасибо Благодарностей отдано 
    593
    Спасибо Благодарностей получено 
    345
    Поблагодарили
    111 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    nzeemin, Хороший результат.
    Последний раз редактировалось parallelno; 09.08.2022 в 20:20.

  11. #10

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    410
    Спасибо Благодарностей отдано 
    593
    Спасибо Благодарностей получено 
    345
    Поблагодарили
    111 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    нашел еще парочку интересных псевдо рандомайзеров

    Код:
    ; 16-bit xorshift pseudorandom number generator
    ; returns   hl = pseudorandom number
    ; corrupts   a
    ; http://www.retroprogramming.com/2017/07/xorshift-pseudorandom-numbers-in-z80.html?m=1
    
    Random:
    			lxi h, 1       ; seed must not be 0
    			mov a,h
    			rar
    			mov a,l
    			rar
    			xra h
    			mov h,a
    			mov a,l
    			rar
    			mov a,h
    			rar
    			xra l
    			mov l,a
    			xra h
    			mov h,a
    			shld Random+1		; 116
    			ret
    Код:
    ; Fast RND
    ;
    ; An 8-bit pseudo-random number generator,
    ; using a similar method to the Spectrum ROM,
    ; - without the overhead of the Spectrum ROM.
    ;
    ; R = random number seed
    ; an integer in the range [1, 256]
    ;
    ; R -> (33*R) mod 257
    ;
    ; S = R - 1
    ; an 8-bit unsigned integer. 256 period
    ; http://www.z80.info/pseudo-random.txt
    Random:			
    			mvi a, 34
    			mov l, a
    			rrc
    			rrc
    			rrc
    			xri $1f
    			add l
    			sbi 255
    			sta Random+1		; 64
    			ret
    Код:
    ; returns pseudo random 8 bit number in A. Only affects A.
    ; By Lee Davison. 256 period
    ; https://philpem.me.uk/leeedavison/z80/prng/index.html
    Random:
    			mvi a, 1	; get seed. must not be zero
    			ani	$B8	; mask non feedback bits
    			stc			; set carry
    			jpo	no_clr	; skip clear if odd
    			cmc			; complement carry (clear it)
    no_clr:
    			lda Random+1	; get seed back
    			ral			; rotate carry into byte
    			sta Random+1	; save back for next prn	; 72
    			ret
    Последний раз редактировалось parallelno; 10.08.2022 в 08:56.

    Этот пользователь поблагодарил parallelno за это полезное сообщение:

    Oleg N. Cher(10.08.2022)

Страница 10 из 30 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Программирование на ассемблере
    от shuran33 в разделе Вектор
    Ответов: 341
    Последнее: 05.11.2025, 20:00
  2. Программирование на ассемблере
    от tnt23 в разделе Океан-240
    Ответов: 6
    Последнее: 30.10.2025, 12:56
  3. Программирование графики MSX
    от CityAceE в разделе MSX
    Ответов: 57
    Последнее: 23.10.2025, 08:53
  4. Программирование NES
    от Tronix в разделе Nintendo
    Ответов: 6
    Последнее: 08.07.2015, 21:21
  5. Программирование на пентеве.
    от Kakos_nonos в разделе Программирование
    Ответов: 2
    Последнее: 23.03.2013, 14:08

Ваши права

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