Вход

Просмотр полной версии : ATTR-->Y



drbars
08.08.2013, 21:25
Ломаю вот мозг на процедуркой:

на входе HL--> адрес атрибутов экрана, на выходе координата Y --> A.

Как сделать не используя регистр C ?



LD A,L
AND %11100000
LD C,A
LD A,H
AND %00000011
OR C
RLCA
RLCA
RLCA

Blade
08.08.2013, 21:31
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD A,H
AND #1F

drbars
08.08.2013, 21:36
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD A,H
AND #1F


Запарывает собвстенно регистр HL, его менять нельзя.

В рабочей процедуре у меня входной регистр DE.

Alex Rider
08.08.2013, 21:38
Пральна думаю?



ld a,l
rr h
rra
rr h
rra
rra
rra
rra
and #1f


---------- Post added at 21:38 ---------- Previous post was at 21:38 ----------

Опоздал :)

drbars
08.08.2013, 21:46
Пральна думаю?



ld a,l
rr h
rra
rr h
rra
rra
rra
rra
and #1f


---------- Post added at 21:38 ---------- Previous post was at 21:38 ----------

Опоздал :)

Интересный вариант :) Но проблему пока не решил.. запарывает H :)

---------- Post added at 00:46 ---------- Previous post was at 00:40 ----------

Пока результат такой:

Моя - 42 такта... запарывает C
Blade -44 такта.. запарывает HL
Rider - 39 тактов (!) запарывает H

Titus
08.08.2013, 21:55
Че-нить типа:

LD A,L
AND 0xE0
ADD A,H
SUB 0x58
RLCA
RLCA
RLCA

Проверить не могу, под рукой нет ни эмуля, ни справочника)

drbars
08.08.2013, 21:59
Че-нить типа:

LD A,L
AND 0xE0
ADD A,H
SUB 0x58
RLCA
RLCA
RLCA

Проверить не могу, под рукой нет ни эмуля, ни справочника)
И... Titus получает пирожок с полки!!! :v2_dizzy_roll:

---------- Post added at 00:59 ---------- Previous post was at 00:57 ----------

Моя - 42 такта... запарывает C
Blade -44 такта.. запарывает HL
Rider - 39 тактов (!) запарывает H
Titus - 34 такта (!!!) не запарывает ничего!