Извеняюсь, не досмотрел.до цикла while мыделаем так rab = 0b01111111;
Если Вы запишите 0b01111111, то будет заполнение нулями слева, а не бегущий нолик. Т.к. ">>" сдвинет регистр и обнулит старший бит. Если запишите 0b10000000, то будет бежать еденичка.
Для бегущего нуля нужно инвертировать регистр с бегущей еденичкой и выводить в порт, либо делать регистр с бегущим нулём и выводить его в порт.


