Забыл проверить решение "в лоб" на ассемблере. (=
Код:
; glyph expansion
ldi r1, 0b10101010 ; source byte 1
ldi r2, 0b00000000 ; L dest word 1
ldi r3, 0b00000000 ; H dest word 1
sbrс r1, 0 ; skip if bit 0 reset 1/2
ori r2, 0b00000011 1
sbrс r1, 1 ; skip if bit 1 reset 1/2
ori r2, 0b00001100 1
sbrс r1, 2 ; skip if bit 2 reset 1/2
ori r2, 0b00110000 1
sbrс r1, 3 ; skip if bit 3 reset 1/2
ori r2, 0b11000000 1
sbrс r1, 4 ; skip if bit 4 reset 1/2
ori r3, 0b00000011 1
sbrс r1, 5 ; skip if bit 5 reset 1/2
ori r3, 0b00001100 1
sbrс r1, 6 ; skip if bit 6 reset 1/2
ori r3, 0b00110000 1
sbrс r1, 7 ; skip if bit 7 reset 1/2
ori r3, 0b11000000 1
; result in r3:r2
; 19 commands (20-27 cycles)
Однако.