User Tag List

Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 27 из 27

Тема: Вопрос по опросу клавиатуры!

  1. #21

    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я использую такой рандомизатор:

    Код:
    rnd:      ld a,(rnd_data_e - 1)
              ld hl,rnd_data
    
              dup rnd_data_e - rnd_data - 1
              add a,(hl)
              ld (hl),a
              inc hl
              edup
    
              add a,(hl)
              ld (hl),a
              ret
    
    rnd_data: db "HBF^db"
    rnd_data_e:
    от длины и "рандомности" строки в rnd_data зависит рандомность генератора.
    чем длинее строка - тем рандомнее числа, но тем медленней работает.
    4-8 символов обычно хватает для любых случаев.

    чтоб в заданных пределах, то это уже сложней.
    если надо от N до N+(2^x)-1, то можно так:

    например если надо от 30 до 61, то пойдёт такой метод:

    and 31
    add a,30

    если в совсем любых пределах, то без умножения не получится.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  2. #22

    Регистрация
    23.03.2007
    Адрес
    г. Сухиничи, Калужская обл.
    Сообщений
    1,793
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus Посмотреть сообщение
    на 2:
    Код:
    and a
    rra
    на 4:
    Код:
    and a
    rra
    and a
    rra
    на 8:
    Код:
    rrca
    rrca
    rrca
    and %00011111
    Может я в асме ничо не соображаю, но вроде команду SRL никто в проце не отменял

    SRL A ;делим на 2
    SRL A ;на 4
    SRL A ;на 8

    Скрытый текст

    Profi 4.02 512k
    Profi 5.04 1024k нижняя плата здесь
    Scorpion 256k+ProfROM+SMUC 1.3+SMUC 2.0+ZXMC2
    Pentagon v2.2+Z-controller+ZXMC2+NeoGS
    АТМ 7.10 1024k
    Pentagon 2.666LE
    ZX Evolution 4Mb rev B
    [свернуть]


    Извещение лички отключено, захожу редко.

  3. #23

    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от savelij Посмотреть сообщение
    Может я в асме ничо не соображаю, но вроде команду SRL никто в проце не отменял

    SRL A ;делим на 2
    SRL A ;на 4
    SRL A ;на 8
    хороший вопрос.
    дело в том, что разницы никакой (только srl флаг C не трогает):

    and a: rra - 2 байта, 8 тактов
    srl a - 2 байта, 8 тактов

    более того:

    srl a: srl a: srl a - 6 байт, 24 такта
    rrca: rrca: rrca: and %00011111 - 5 байт, 19 тактов
    Последний раз редактировалось Sinus; 22.07.2010 в 16:14.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  4. #24

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    надо делить на 4 так: rrca:rrca:and %00111111 - 4 байта, 11 тактов при безваите

  5. #25

    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    rrca:rrca:and %00111111 - таки 15 тактов, а не 11
    (хотя всё равно выгоднее чем "srl a:srl a" или "and a:rra:and a:rra" - и то и другое по 16 тактов).
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  6. #26

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    АААААА! вот это меня плющит))))
    первоначально хотел написать 7 тактов))
    и ведь точно знаю, и считал ведь именно так: 4+4+7, но получилось 11... ))))

  7. #27

    Регистрация
    17.06.2009
    Адрес
    Москва
    Сообщений
    401
    Спасибо Благодарностей отдано 
    421
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    ;A=range - число будет в границах от 0 до range-1
    Random
    	push af
    	call rand_
    	pop af
    	ld c,a
    	ld b,0
    	ex de,hl
    	call mod
    	ld a,l
    	ret
    
    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
    	
    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

Страница 3 из 3 ПерваяПервая 123

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

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

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

Похожие темы

  1. Ответов: 28
    Последнее: 06.06.2018, 15:28
  2. Корпуса и клавиатуры
    от Sonic в разделе Устройства ввода
    Ответов: 110
    Последнее: 07.10.2010, 22:27
  3. Раскладка клавиатуры
    от johnos в разделе Устройства ввода
    Ответов: 3
    Последнее: 25.06.2008, 22:57
  4. Питание PC клавиатуры
    от denisv в разделе Устройства ввода
    Ответов: 3
    Последнее: 20.03.2008, 20:28

Ваши права

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