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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: rr=Array[offset]

  1. #1
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Благодарностей: 192
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию rr=Array[offset]

    Как выгоднее всего получать в 8-ми и 16-ти битных регистрах значения массива(смещение 8 бит)?

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

  3. #2
    goblinish
    Гость

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Как выгоднее всего получать в 8-ми и 16-ти битных регистрах значения массива(смещение 8 бит)?
    зависит от цели.
    можешь по 8-битному регистру брать по табличному принципу. например:
    array=#6000

    ld h,#60
    ld l,a;a=индекс
    ld a,(hl); тут и значение.

    ну и 16-битное аналогично по #61,#60

    другие подскажут..

  4. #3
    CraZZZy CodEr Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    1,552
    Благодарностей: 739
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    разместить массив по адресу #xx00
    для 8-битных данных:
    Код:
    LD H,xx
    LD L,index
    LD A,(HL)
    Для 16-битных будет 2 таких массива один за другим, в одном - младший байт, в другом - старший
    Код:
    LD H,xx
    LD L,index
    LD E,(HL)
    INC H
    LD D,(HL)


    ---------- Post added at 21:51 ---------- Previous post was at 21:50 ----------

    Опередил...
    Все любят гипножабу

  5. #4
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Благодарностей: 192
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А ежели массивов много, но по несколько элементов, и памяти на кратное 256 расположение не напасёшься?
    Я сейчас делаю так(для 16-бит - inc ix или +1 для второй половинки регистра назначения):
    Код:
        macro ld_ixa_r label,r
            ld ixh,label/256+1*((label%256)/128)
            ld ixl,a
            ld r,(ix+label%256-256*((label%256)/128))
        endm
    Можно ли как-то ещё более удобно?

  6. #5
    goblinish
    Гость

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Можно ли как-то ещё более удобно?
    ld l,index
    ld h,0
    ld de,array
    ;теперь двухбитное
    add hl,hl
    add hl,de
    ld r1,(hl)
    inc hl;inc l
    ld r2,(hl)

    не помогает?
    IX просто, конечно, но прожорлив в памяти, да и с тактами, наверное.

  7. #6
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Благодарностей: 192
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В твоём варианте 63, в моём для 16-бит - 57 тактов =)
    И 12 против 11 байт соответственно.
    Ладно, спасибо, видать мой вариант не самый плохой, да и одним регистром меньше задействуется.

  8. #7
    goblinish
    Гость

    По умолчанию

    NovaStorm, а со стэком не пробовал? популярный EI вариант.

  9. #8
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Благодарностей: 192
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не пробовал, но так ли сильно он будет отличаться от этих? Да и загружать/восстанавливать SP тоже придётся.

  10. #9
    goblinish
    Гость

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Не пробовал, но так ли сильно он будет отличаться от этих? Да и загружать/восстанавливать SP тоже придётся.
    смотря то, что ты мучаешь.

  11. #10
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    ld a,high addr
    adc 0
    ld h,a
    Обычно меняется на
    Код:
    adc a,high addr
    sub l
    ld h,a
    -1 байт, -3 такта.

  12. Этот пользователь поблагодарил Vitamin за это полезное сообщение:
    NovaStorm (30.09.2012)

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Gate Array 40077
    от Addison в разделе Unsorted
    Ответов: 2
    Последнее: 06.09.2007, 03:54

Ваши права

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