ajuda para um iniciante também no Z80...

olá pessoal to fazendo um seguinte programa, na qual ele sequencia oito leds para a direita, e quando chega no ultimo, ele inverte e sequencia para a esquerda.
só que não estou sabendo como chamar a rotina para inverte-los, já que se eu colocar a instrução CPL dentro das labels "esquerda" e "direita" ele irá inverter os bits do acumulador direto, em vez de inverter só quando for acabar de sequenciar pra direita, e desinverter quando sequenciar para a esquerda.
será que tenho q setar outra flag para chamar a label para inverter os leds? não posso usar a mesma flag para chamar duas labels(direita e inv)
asm code
esse é o código.
como podem ver no video, ele vai pra direita, não inverte e fica o tempo todo pra esquerda.
só que não estou sabendo como chamar a rotina para inverte-los, já que se eu colocar a instrução CPL dentro das labels "esquerda" e "direita" ele irá inverter os bits do acumulador direto, em vez de inverter só quando for acabar de sequenciar pra direita, e desinverter quando sequenciar para a esquerda.
será que tenho q setar outra flag para chamar a label para inverter os leds? não posso usar a mesma flag para chamar duas labels(direita e inv)
asm code
.org 00h
ld a,1
direita:
out (255),a
rrca
cp 1
jr z,esquerda
jr z,inv
jr direita
esquerda:
out (255),a
rlca
cp 254
jr z,direita
jr z,inv
jr esquerda
inv:
cpl
jr direita
.end
esse é o código.
como podem ver no video, ele vai pra direita, não inverte e fica o tempo todo pra esquerda.