Ir ao conteúdo

Duvida com os comandos RR e RL do 8051


paulo_alexandre

Posts recomendados

Postado

Senhores, preciso matar uma duvida:

Quando utilizados os comando RR e RL (comando similares) movimentam apenas um bit, ou os oito?

Ex:

byte original:

[bit1][bit2][bit3][bit4][bit5][bit6][bit7][bit8]

Ele fica de qual das duas seguintes maneiras?

1 - [bit8][bit1][bit2][bit3][bit4][bit5][bit6][bit7]

2 - [bit8][bit7][bit6][bit5][bit4][bit3][bit2][bit1]

E se ele ficar da maneira 1, tem algum comando que faça ficar direto da 2?

Agradeço ja agora a ajuda de quem souber responder!!! :D

Paulo

Postado

ele faz da forma qe disse em 1

agora, como fazer o que quer, não sei te dizer assim tão facilmente, hehe!

acho qe não tem nenhuma função não

tem a swap, qe faz assim

isso

[bit1][bit2][bit3][bit4][bit5][bit6][bit7][bit8]

vira isso

[bit5][bit6][bit7][bit8][bit1][bit2][bit3][bit4]

mas não sei se pode ajudar!

--

cara, eu fiz uma função aqui, muito porca! mas dá pra achar uma lógica nela e melhorar!

ela é funciona, mas é muito *****!

dá até pra trocar uns rl por uns rr e deixar ela beeeem menor, mas eu deixei tudo com rl pra tu entender a lógica qe eu fiz!

to meio com sono, alguém descansado talvez pense melhor qe eu, hehe!

X equ 40h
Y equ 41h
org 0
mov X,#01010011b
mov P1,X

;Primeiro bit
mov A,X
rl A
anl A,#00000001b
mov Y,A

;Segundo bit
mov A,X
rl A
rl A
anl A,#00000001b
rl A
orl Y,A

;Terceiro bit
mov A,X
rl A
rl A
rl A
anl A,#00000001b
rl A
rl A
orl Y,A

;Quarto bit
mov A,X
rl A
rl A
rl A
rl A
anl A,#00000001b
rl A
rl A
rl A
orl Y,A

;Quinto bit
mov A,X
rl A
rl A
rl A
rl A
rl A
anl A,#00000001b
rl A
rl A
rl A
rl A
orl Y,A

;Sexto bit
mov A,X
rl A
rl A
rl A
rl A
rl A
rl A
anl A,#00000001b
rl A
rl A
rl A
rl A
rl A
orl Y,A

;Sétimo bit
mov A,X
rl A
rl A
rl A
rl A
rl A
rl A
rl A
anl A,#00000001b
rl A
rl A
rl A
rl A
rl A
rl A
orl Y,A

;Oitavo bit
mov A,X
anl A,#00000001b
rl A
rl A
rl A
rl A
rl A
rl A
rl A
orl Y,A

  • Membro VIP
Postado
Senhores, preciso matar uma duvida:

Quando utilizados os comando RR e RL (comando similares) movimentam apenas um bit, ou os oito?

Ex:

byte original:

[bit1][bit2][bit3][bit4][bit5][bit6][bit7][bit8]

Ele fica de qual das duas seguintes maneiras?

1 - [bit8][bit1][bit2][bit3][bit4][bit5][bit6][bit7]

2 - [bit8][bit7][bit6][bit5][bit4][bit3][bit2][bit1]

E se ele ficar da maneira 1, tem algum comando que faça ficar direto da 2?

Agradeço ja agora a ajuda de quem souber responder!!! :D

Paulo

Não. O que você quer é trocar:

0<=>7 , 1<=>6 , 2<=>5 , 3<=>4

( Por favor acostume-se a usar de 0 a 7 e não de 1 a 8 )

Crie um subrotina para isto.

Exemplo:

endereço 20h contém o byte original ( 7 6 5 4 3 2 1 0 )

endereço 21h terá o byte invertido ( 0 1 2 3 4 5 6 7 )

----

forma direta bit-a-bit.

; só pode usar os endereços de 20h a 2Fh, que são os endereços dos bits endereçáveis de 00h a 7Fh.

rotina_troca_bits:

mov c,00h ; 00h é o bit0 do endereço 20h

mov 15h,c ; 15h é o bit7 do endereço 21h

mov c,01h ; 01h é o bit1 do endereço 20h

mov 14h,c ; 14h é o bit6 do endereço 21h

.

fazer isto com todos os bits

.

Return

----------------------------------------------------------

Pode-se usar RRC e RLC, mas terá que ficar trocando o Acc com os endereços fonte e destino 8 vezes cada

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!