User Tag List

Страница 28 из 30 ПерваяПервая ... 24252627282930 ПоследняяПоследняя
Показано с 271 по 280 из 298

Тема: Библиотека нужных процедур для написания демо

  1. #271

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GM BIT Посмотреть сообщение
    Сейчас, я тестю

    ---------- Post added at 16:54 ---------- Previous post was at 16:34 ----------

    jerri, Все допер почему не получается, мне это условие нужно впихнуть в ту прогу которую ты раньше давал, без INC L: INC L

    ---------- Post added at 17:18 ---------- Previous post was at 16:54 ----------

    jerri, помоги
    это сложнее
    разложи на 2 этапа
    прибавление смещения вниз
    прибавление смещения вправо
    иначе будут проблемы с третями
    С уважением,
    Jerri / Red Triangle.

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

  3. #272

    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    ddd1    ld a,e
            add a,96
            ld e,a
            jr nc,ddd2
            ld a,d
            add a,8
            ld d,a
    ddd2
            ld a,e
            and 224
            ld ixl,a
            inc e
            inc e
            ld a,e
            and 31
            or ixl
            ld e,a
            ret
    Спасибо!!!!! Вот что вышло и работает, переделал на ixl все регистры заняты

  4. #273

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GM BIT Посмотреть сообщение
    Код:
    ddd1    ld a,e
            add a,96
            ld e,a
            jr nc,ddd2
            ld a,d
            add a,8
            ld d,a
    ddd2
            ld a,e
            and 224
            ld ixl,a
            inc e
            inc e
            ld a,e
            and 31
            or ixl
            ld e,a
            ret
    Спасибо!!!!! Вот что вышло и работает, переделал на ixl все регистры заняты
    Код:
    ddd1    ld a,e
            add a,96
            ld e,a
            jr nc,ddd2
            ld a,d
            add a,8
            ld d,a
    ddd2
            ld a,e
            inc e
            inc e
             
            xor e
            and #e0
            xor e
    
            ld e,a
            ret
    вот так побыстрее будет
    С уважением,
    Jerri / Red Triangle.

  5. #274

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,080
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    А вот такой вариант:

    LD A,L
    ADD 0xFF
    SBC A,A
    AND H
    JR Z, ...
    Волшебный флаг C ? Шикарно!

  6. #275

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,822
    Спасибо Благодарностей отдано 
    274
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нужна процедура деления.
    Вида: (+-)16/16=16.16
    Кучу разных перебрал, но всё равно лажают, ибо заточены и подрезаны под конкретные задачи.
    А нужно просто деление регистровой пары на пару с учётом знаков.
    (ну или на крайняк - без знаков, но чтоб не лажала)
    Есть у кого варианты?
    Последний раз редактировалось Destr; 10.02.2014 в 21:58.

  7. #276

    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    ;HL/DE=BC,HL-ОСТАТОК
    DIVW    LD A,E:OR D
            RET Z
            XOR A
            LD C,A,B,A
            EX DE,HL
    DIVW1   INC B
            BIT 7,H
            JR NZ,DIVW2
            ADD HL,HL
            JP DIVW1
    DIVW2   EX DE,HL
    DIVW3   OR A
            SBC HL,DE
            JR NC,DIVW4
            ADD HL,DE
    DIVW4   CCF
            RL C:RL A
            RR D,E
            DJNZ DIVW3
            LD B,A
            RET

  8. #277

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,822
    Спасибо Благодарностей отдано 
    274
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    GM BIT, что-то не работает как надо.
    Пробую делить 1234 на 5678.
    Должно получится: #000037A2 а получается #000004D2 (т.е. HL остаётся как был)

  9. #278

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот такая у меня в Эйфории пашет безотказно:
    Код:
    ; функция 16-разрядного беззнакового деления
    ; (C) Aleksey Malov aka Vivid
    ;     little optimized by Vitaly Vidmirov
    ; hl = de/bc  de = de%bc  ~840 takts.
    ; hl = 65535, de = de(dividend) if bc(divisor) == 0.
    div	ld hl,65535
    	ld a,b
    	or c
    	ret z	; если bс=0
    
    
           xor a     ;меняем знак
           sub c     ; у делителя
           ld c, a 
           sbc a, b 
           sub c 
           ld b, a 
           ld hl,0   ;обнулили новое делимое
           ld a,d    ;сначала двигаем
           rla       ;старший байт делимого
                     ;t=18
      ;  REPEAT 8
           rl l      ;
           add hl,bc ;
           jr c,$+4  ;8 раз
           sbc hl,bc ;
           rla       ; t=8*45=360
               rl l 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             rl l 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               rl l 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             rl l 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               rl l 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             rl l 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               rl l 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
      ; ENDR 
    
           ld d,a    ;ст. байт результата
           ld a,e    ;теперь двигаем
           rla       ;младший байт  t=12
    
      ; REPEAT 8
           adc hl,hl ;
           add hl,bc ;
           jr c,$+4  ;8 раз
           sbc hl,bc ;
           rla       ; t=8*52=416
               adc hl,hl 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             adc hl,hl 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               adc hl,hl 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             adc hl,hl 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               adc hl,hl 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             adc hl,hl 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               adc hl,hl 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
      ; ENDR 
    
           ld e,a    ;мл. байт результата
                     ;hl-остаток от деления
                     ;t=4
           ex de, hl 
           ret

  10. #279

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,822
    Спасибо Благодарностей отдано 
    274
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Вот такая у меня в Эйфории пашет безотказно:
    Тоже врёт.
    Или я что-то не так делаю?
    Код:
    	DEVICE ZXSPECTRUM128
    STARTFORSNA EQU #8C22
    	ORG STARTFORSNA
    	LD SP,#5C00
    
    	LD DE,1234
    	LD BC,5678
    	CALL div	; должно быть #37A2
    	JR $
    	
    ; Andrew771
    ; функция 16-разрядного беззнакового деления
    ; (C) Aleksey Malov aka Vivid
    ;     little optimized by Vitaly Vidmirov
    ; hl = de/bc  de = de%bc  ~840 takts.
    ; hl = 65535, de = de(dividend) if bc(divisor) == 0.
    div	ld hl,65535
    	ld a,b
    	or c
    	ret z	; если bс=0
    
    
           xor a     ;меняем знак
           sub c     ; у делителя
           ld c, a 
           sbc a, b 
           sub c 
           ld b, a 
           ld hl,0   ;обнулили новое делимое
           ld a,d    ;сначала двигаем
           rla       ;старший байт делимого
                     ;t=18
      ;  REPEAT 8
           rl l      ;
           add hl,bc ;
           jr c,$+4  ;8 раз
           sbc hl,bc ;
           rla       ; t=8*45=360
               rl l 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             rl l 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               rl l 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             rl l 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               rl l 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             rl l 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               rl l 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
      ; ENDR 
    
           ld d,a    ;ст. байт результата
           ld a,e    ;теперь двигаем
           rla       ;младший байт  t=12
    
      ; REPEAT 8
           adc hl,hl ;
           add hl,bc ;
           jr c,$+4  ;8 раз
           sbc hl,bc ;
           rla       ; t=8*52=416
               adc hl,hl 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             adc hl,hl 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               adc hl,hl 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             adc hl,hl 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               adc hl,hl 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
             adc hl,hl 
             add hl,bc 
             jr c,$+4
             sbc hl,bc 
             rla 
               adc hl,hl 
               add hl,bc 
               jr c,$+4
               sbc hl,bc 
               rla 
      ; ENDR 
    
           ld e,a    ;мл. байт результата
                     ;hl-остаток от деления
                     ;t=4
           ex de, hl 
           ret
    
    
    ; GM BIT
    ; HL/DE=BC,HL-ОСТАТОК
    DIVW    LD A,E:OR D
            RET Z
            XOR A
            LD C,A,B,A
            EX DE,HL
    DIVW1   INC B
            BIT 7,H
            JR NZ,DIVW2
            ADD HL,HL
            JP DIVW1
    DIVW2   EX DE,HL
    DIVW3   OR A
            SBC HL,DE
            JR NC,DIVW4
            ADD HL,DE
    DIVW4   CCF
            RL C:RL A
            RR D,E
            DJNZ DIVW3
            LD B,A
            RET
    
    	SAVESNA "test.sna",STARTFORSNA

  11. #280

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Тоже врёт.
    Или я что-то не так делаю?
    1234 / 5678 = 0

    ---------- Post added at 09:49 ---------- Previous post was at 09:48 ----------

    Цитата Сообщение от Destr Посмотреть сообщение
    должно быть #37A2
    это как?

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

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

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

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

Похожие темы

  1. Графическая библиотека
    от alone в разделе Программирование
    Ответов: 81
    Последнее: 31.01.2016, 20:37
  2. Что нужно для написания игр ?
    от zx-kit в разделе Игры
    Ответов: 316
    Последнее: 25.02.2014, 22:25
  3. библиотека на форум
    от sevol в разделе Форум
    Ответов: 4
    Последнее: 26.06.2010, 09:06
  4. простой скрипт для написания хелпов
    от jim в разделе Программирование
    Ответов: 2
    Последнее: 09.04.2007, 14:33
  5. Ответов: 3
    Последнее: 08.02.2007, 19:38

Ваши права

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