
Сообщение от
Oleg N. Cher
Регистров хватит для чего? А если в линии экрана, допустим, 20 слов (20*8 пикселей)?
Длина строки как раз не важна. Идея в том, что два бита сдвигами запихиваем в два регистра, а на следующем слове их опять тасуем обратно. Примерно так:
Код:
mov @r1, r0
asr r4
ror r0
ror r4
asr r5
ror r0
ror r5
; мы провернули r0 на два бита и держим их в r4/r5
mov r0, (r1)+
mov @r1, r0
asl r4
ror r0 ; запихали запасённый бит, и взяли новый в флаг C
rol r5 ; сохранили C в r5 и выдали обратно сохранённый
ror r0
rol r4 ; почти та же петрушка со вторым битом
mov r0, (r1)+
; теперь r4/r5 поменялись чётностью, надо писать код с переставленными регистрами ...
Вот как-то так. Почти все команды -- регистровые, поэтому на БК это будет побыстрее, чем два (а то и три) раза память вращать да копировать.