Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Programa para rotação dos bits de entrada
- SW DSIN 53 ; SWITCHES = 01h
- LED DSOUT 02 ; led = 02h
- input_process:
- IN s0, SW ; s0 recebe as chaves
- LOAD s1, s0 ; s1 recebe s0
- LOAD s6, 00 ; s6 recebe 00
- LOAD s7, 01 ; mascara1
- LOAD s8, 128 ; mascara2
- JUMP loop ; retorno para o inicio da rotina
- loop:
- COMP s6, 04 ; comparação para saber se as iterações do loop terminaram
- ; vai até quatro porque senao ele nao lê o terceiro bit
- JUMP Z, saida;
- LOAD s3, s1 ; transfere para outro endereço para a comparação
- LOAD s4, s1 ; transfere para outro endereço para a comparação
- AND s3, s7 ; mascara a primeira parcela da string na iteração
- AND s4, s8 ; mascara a segunda parcela da string na iteração
- comparator:
- COMP s3, s4 ; compara ambas as strings mascaradas, se forem diferentes, elas trocam de posição
- JUMP Z, equal ; pula pra instrução caso seja igual
- XOR s3, s7 ; Caso ambas as posições sejam '1', faz-se o xor novamente
- XOR s4, s8 ; para que vire 0 e passe na condição acima
- COMP s3, s4
- JUMP Z, comparator
- XOR s1, s7 ; inverte os valores da mascara
- XOR s1, s8 ; inverte os valores da mascara
- SL0 s7 ; muda de, e.g., 0001 p/ 0010
- SR0 s8 ; muda de, e.g., 1000 p/ 0100
- ADD s6, 01 ; adiciona 1 para incremetar no loop while
- JUMP loop
- equal:
- SL0 s7 ; muda de, e.g., 0001 p/ 0010
- SR0 s8 ; muda de, e.g., 1000 p/ 0100
- ADD s6, 01 ; adiciona 1 para incremetar no loop while
- JUMP loop
- saida:
- OUT s1, LED
- JUMP input_process
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement