Как выгоднее всего получать в 8-ми и 16-ти битных регистрах значения массива(смещение 8 бит)?
Как выгоднее всего получать в 8-ми и 16-ти битных регистрах значения массива(смещение 8 бит)?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
разместить массив по адресу #xx00
для 8-битных данных:Для 16-битных будет 2 таких массива один за другим, в одном - младший байт, в другом - старшийКод:LD H,xx LD L,index LD A,(HL)Код: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 ----------
Опередил...
Все любят гипножабу
А ежели массивов много, но по несколько элементов, и памяти на кратное 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
В твоём варианте 63, в моём для 16-бит - 57 тактов =)
И 12 против 11 байт соответственно.
Ладно, спасибо, видать мой вариант не самый плохой, да и одним регистром меньше задействуется.
NovaStorm, а со стэком не пробовал? популярный EI вариант.
Не пробовал, но так ли сильно он будет отличаться от этих? Да и загружать/восстанавливать SP тоже придётся.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)