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

User Tag List

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

Тема: Обьясните про деление. старый стал не понимаю вообще ничего.

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

    По умолчанию Обьясните про деление. старый стал не понимаю вообще ничего.

    вот универсальное деление
    Код:
    ;НL/DЕ=ВC,НL-остаток                    
    ;16/16=16,16                            
                                            
    DIVW    LD A,Е:ОR D                     
            RЕТ Z                           
            XОR A                           
            LD C,A,В,A                      
            ЕX DЕ,НL                        
    DIVW1   INC В                           
            ВIТ 7,Н                         
            JR NZ,DIVW2                     
            ADD НL,НL                       
            JР DIVW1                        
    DIVW2   ЕX DЕ,НL                        
    DIVW3   ОR A                            
            SВC НL,DЕ                       
            JR NC,DIVW4                     
            ADD НL,DЕ                       
    DIVW4   CCF                             
            RL C,A                          
            RR D,Е                          
            DJNZ DIVW3                      
            LD В,A                          
            RЕТ


    вот деление HL/320
    Код:
    ; HL - Вход
    ; A - выход ~(HL/320)
            LD A,H
            RLCA
            AND 1
            LD L,A
            LD A,H
            RLCA
            RLCA
            RLCA
            RLCA
            AND 15
            ADD A,L
            LD L,A
            LD A,H
            SUB L
            SUB L
            SUB L
    мне нужно быстрое деление на 10

    что отсюда надо убрать чтобы было проще и быстрее
    желательно с комментариями
    С уважением,
    Jerri / Red Triangle.

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

  3. #2
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это поможет?
    http://map.grauw.nl/sources/external/z80bits.html#2

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

    Деление на 10:
    http://z80-heaven.wikidot.com/math#toc21

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

    По умолчанию

    Шынни, спасибо то что надо
    С уважением,
    Jerri / Red Triangle.

  5. #4
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,041
    Спасибо Благодарностей отдано 
    931
    Спасибо Благодарностей получено 
    224
    Поблагодарили
    121 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Грубо, тупо, в байт, но быстро.
    Код:
            LD B,H
            LD C,L    ; BC=HL=x
            ADD HL,HL ; HL=x*2
            ADD HL,BC ; HL=x*2+x=x*3
            ADD HL,HL ; HL=x*3*2=x*6
            ADD HL,HL ; HL=x*12
            ADD HL,HL ; HL=x*24
            ADD HL,BC ; HL=x*25
            LD A,H    ; A=int((x*25)/256)=int(A/10.24)

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

    jerri (17.09.2019)

  7. #5
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    Грубо, тупо, в байт, но быстро.
    если 8 бит, то быстрее будет LUT

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

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    Грубо, тупо, в байт, но быстро.
    Код:
            LD B,H
            LD C,L    ; BC=HL=x
            ADD HL,HL ; HL=x*2
            ADD HL,BC ; HL=x*2+x=x*3
            ADD HL,HL ; HL=x*3*2=x*6
            ADD HL,HL ; HL=x*12
            ADD HL,HL ; HL=x*24
            ADD HL,BC ; HL=x*25
            LD A,H    ; A=int((x*25)/256)=int(A/10.24)
    а результат будет 16 битный?
    С уважением,
    Jerri / Red Triangle.

  9. #7
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    а результат будет 16 битный?
    не-а

  10. #8
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,041
    Спасибо Благодарностей отдано 
    931
    Спасибо Благодарностей получено 
    224
    Поблагодарили
    121 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    а результат будет 16 битный?
    В байт, это в байт. Последнюю строчку я написал только ради комментариев.
    HL, соответственно, должен быть не сильно больше 2560.

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

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    В байт, это в байт. Последнюю строчку я написал только ради комментариев.
    HL, соответственно, должен быть не сильно больше 2560.
    ага вижу

    hl/c получается 66
    умножение 64
    хотя если умножать на 26
    ...
    то будет 68

    результат не очень
    но меня деление 16/8 устроит.

    Код:
    div16_8
    ;hl/c
    ;hl quotiend
    ;a remainder
    	add	hl,hl
    	jp	nc,div16c	
    
    	ld	a,h
    	cpl
    	ld	h,a
    	ld	a,l
    	cpl
    	ld	l,a
    	inc	hl
    	call	div16c
    	ld	a,h
    	cpl
    	ld	h,a
    	ld	a,l
    	cpl
    	ld	l,a
    	inc	hl
    	ret
    div16c
    	xor	a
    	dup	15
    	add	hl,hl		; unroll 16 times
    	rla			; ...
    	cp	c		; ...
    	jr	c,$+4		; ...
    	sub	c		; ...
    	inc	l		; ...
    	edup
    	add	hl,hl		; unroll 16 times
    	ret
    С уважением,
    Jerri / Red Triangle.

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

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

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

Похожие темы

  1. Деление/умножение
    от Serdjuk в разделе Программирование
    Ответов: 51
    Последнее: 25.04.2018, 15:54
  2. Не понимаю, как работает мультиколор в игре
    от predatoralpha в разделе Графика
    Ответов: 25
    Последнее: 01.06.2012, 11:49
  3. про новый-старый спектрум
    от xailar в разделе ZX Концепции
    Ответов: 3
    Последнее: 06.12.2010, 10:42
  4. деление синхросигнала
    от Splinter в разделе Изображение
    Ответов: 3
    Последнее: 01.08.2005, 02:53

Ваши права

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