Вход

Просмотр полной версии : Этюды: как бы написать поизящнее.



AndTorp
16.03.2008, 21:31
Вопрос для ассов программирования.

Нужна такая процедурка:
на входе в регистре A 0, 1 или 2;
на выходе в регистре C (можно в A), соответственно, 8, 16 или 32.

То есть

0 -> 8
1 -> 16
2 -> 32

Кроме как с циклом ничего не могу придумать. :frown:

savelij
16.03.2008, 21:56
Вопрос для ассов программирования.

Нужна такая процедурка:
на входе в регистре A 0, 1 или 2;
на выходе в регистре C (можно в A), соответственно, 8, 16 или 32.

Кроме как с циклом ничего не могу придумать. :frown:

Ну примерно так:
PROG LD C,8
AND A
RET Z
LD C,16
DEC A
RET Z
LD C,32
RET

boo_boo
16.03.2008, 23:13
на входе в регистре A 0, 1 или 2;
на выходе в регистре C (можно в A), соответственно, 8, 16 или 32.

;вход - A, выход - тоже A
CP 1
RLA
RLA
RLA
RLA

moroz1999
16.03.2008, 23:24
Если критичен размер, а не скорость, то 2 байта сэкономить можно, если заменить ld c,16 (32) на ротацию.


LD C,8
AND A
RET Z
RL C
DEC A
RET Z
RL C
RET

Добавлено через 1 минуту

;вход - A, выход - тоже A
CP 1
RLA
RLA
RLA
RLAчерт, как всё просто-то :D

savelij
16.03.2008, 23:36
черт, как всё просто-то :D

Дествительно просто, а сразу и не придумаешь.

AndTorp
17.03.2008, 00:43
Сообщение от boo_boo
;вход - A, выход - тоже A
CP 1
RLA
RLA
RLA
RLA

Большое СПАСИБО! Я чувствовал, что изящное решение есть, но, к сожалению "зациклился" на процедуре с циклом. :smile: