Primero deberias entender bien como es que funciona encender y apagar bits.
La operacion OR se usa generalmente para acumular unos, es decir para activar bits sin alterar los demas, por eso si queremos activar el bit 2 y tenemos que el registro contiene 11110000, haciendo 11110000 OR 00000100 nos daria 11110100 porque en cada bit donde haya 1 o 2 unos el resultado sera 1, solo sera 0 si el bit es 0 en ambos bytes.
Si el registro tuviera en su lugar el valor 11111111, haciendo OR 00000100 daria 11111111 porque en el bit 2 hay dos unos y por lo tanto no se altera.
Para apagar un bit lo que se usa es AND, que deja intacto todo lo que tenga un 1 en la mascara, si tenemos un valor en el registro y queremos poner a 0 los bits 0 a 3, hariamos registro AND 11110000, si registro contiene por ejemplo el valor 10101010, lo que quedaria es 10100000. Para apagar un bit determinado, entonces, harias una mascara con el bit correspondiente, por ejemplo si queremos apagar el bit 2 la mascara seria 00000100, si queremos activar el bit usariamos OR y esa mascara tal como esta, pero con AND debemos primero invertirla, quedando como 11111011, esto al aplicarle AND dejaria intactos todos los bits (porque AND de un valor X con 1 siempre da el mismo valor X) excepto el bit 2, que esta a 0.
Lo de comparar con 255 no sirve en todos los casos, porque no necesariamente vas a avanzar de a 1 pixel, podrias estar incrementando a distintas velocidades y darse el caso de que fuera 254 y luego avance 2 pixeles, en cuyo caso no detectarias que tiene que pasar a la otra zona. Si lo quieres simplificar, lo mejor va a ser que hagas 2 rutinas por sprite, una para avanzar un pixel, otra para retroceder un pixel, y asi por cada sprite. Te limitarias a moverte siempre de a un pixel a la vez, pero en la rutina ya te encargarias de incrementar o decrementar 1 en el registro correspondiente, si el incremento activa la bandera carry sabes que pasaste de 255 a 0, y entonces activas con OR el bit correspondiente. Lo mismo cuando pasas de 0 a 255 restando 1, creo que te tiene que activar la bandera de negativo (ahora no recuerdo cual se activa), y antes de hacer algo tendrias que chequear si el bit de ese sprite era 1 para saber si pasaste de la zona superior a la normal. De paso en esas rutinas agregas los chequeos para que el sprite se mantenga dentro de la pantalla, y en el juego seria facil de usar porque solo llamarias a dos rutinas por sprite.
Mas adelante una optimizacion podria ser meter todas las rutinas en una sola, y decirle a la rutina que es lo que quieres hacer cargando un valor en el acumulador, por ejemplo, cargando el numero de sprite en A, de 0 a 7, y usando por ejemplo el bit 7 para indicar si se quiere avanzar o retroceder un pixel.
La operacion OR exclusivo sirve generalmente para invertir el estado de bits especificos, o para hacer una comparacion de igualdad entre dos valores.