Просмотр полной версии : Этюды: как бы написать поизящнее.
Вопрос для ассов программирования.
Нужна такая процедурка:
на входе в регистре A 0, 1 или 2;
на выходе в регистре C (можно в A), соответственно, 8, 16 или 32.
То есть
0 -> 8
1 -> 16
2 -> 32
Кроме как с циклом ничего не могу придумать. :frown:
Вопрос для ассов программирования.
Нужна такая процедурка:
на входе в регистре 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
на входе в регистре 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
черт, как всё просто-то :D
Дествительно просто, а сразу и не придумаешь.
Сообщение от boo_boo
;вход - A, выход - тоже A
CP 1
RLA
RLA
RLA
RLA
Большое СПАСИБО! Я чувствовал, что изящное решение есть, но, к сожалению "зациклился" на процедуре с циклом. :smile:
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot