Baixe o app para aproveitar ainda mais
Prévia do material em texto
SISTEMAS A MICROPROCESSADORES ________________________________________________ Eduardo Antonio de Lima – 201102120596 ________________________________________________ Raphael Cardoso de Siqueira – 201201278491 ________________________________________________ Marco Antonio do Nascimento Pereira - 201403243931 Rio de Janeiro, 06/06/2014. Projeto 3: Desenvolver um programa em Assembly do 8051 para analisar 3 números quaisquer armazenados nos endereços de RAM 47H, 48H e 49H. Estes números devem ser ordenados em ordem decrescente e armazenados nos registros R2 (menor), R1, e R0 (maior). INICIO: MOV A, 47H MOV B, 48H SUBB A,B JC MENOR0 MOV R2,48H JMP PASSO1 MENOR0: MOV R2,47H CLR C PASSO1: MOV A, 49H SUBB A, R2 JC MENOR1 JMP PASSO2 MENOR1: MOV R2, 49H CLR C PASSO2: MOV A, 47H MOV B, 48H SUBB A, B JC MAIOR0 MOV R0, 47H JMP PASSO3 MAIOR0: MOV R0, 48H CLR C PASSO3: MOV A, 49H SUBB A, R2 JNZ MAIOR1 JMP PASSO4 MAIOR1: MOV R0, 49H CLR C PASSO4: MOV A, 47H SUBB A, R0 ; MOVER O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 47H PARA O ACC. ; MOVER O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 48H PARA O B. ; SUBTRAI A-B ; PULAR SE HOUVER CARRY, SE NÃO HOUVER CARRY CONTINUE. ; MOVER PARA R2 O VALOR INSERIDO NO ENDEREÇO DE MEMÓRIA 48H ; PULAR PARA O PASSO1 ; MOVER O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 47H PARA O REGISTRADOR R2 ; TORNA ZERO O CARRY DA FLAG. ; MOVER O ENDEREÇO 49H PARA O ACC. ; SUBTRAI A-R2 ; PULAR SE HOUVER CARRY, SE NÃO HOUVER CARRY CONTINUE. ; PULAR PARA PASSO2 ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 49H PARA O REGISTRADOR R2 ; TORNA ZERO O CARRY DA FLAG. ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 47H PARA O ACC. ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 48H PARA O B. ; SUBTRAI A-B ; PULAR SE HOUVER CARRY, SE NÃO HOUVER CARRY CONTINUE. ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 47H PARA O REGISTRADOR R0. ; PULAR PARA PASSO 3 ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA PARA O REGISTRADOR R0 ; TORNA ZERO O CARRY DA FLAG. ; MOVA O QUE ESTÁ NO ENDEREÇO 49H PARA O ACC ; SUBTRAI A-R2 ; PULAR SE HOUVER CARRY, SE NÃO HOUVER CARRY CONTINUE. ; PULAR PARA O PASSO4. ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 49H PARA O REGISTRADOR R0. ; TORNA ZERO O CARRY DA FLAG. ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 47H PARA O ACC. ; SUBTRAI A-R0 JC MEIO0 JMP PASSO5 MEIO0: CLR C MOV A, 47H SUBB A, R2 JNZ MEIO1 JMP PASSO5 MEIO1: MOV R1, 47H JMP FIM PASSO5: MOV A, 48H SUBB A, R0 JC MEIO2 JMP PASSO6 MEIO2: CLR C MOV A, 48H SUBB A, R2 JNZ MEIO3 JMP PASSO6 MEIO3: MOV R1, 48H JMP FIM PASSO6: MOV R1, 49H FIM: JMP FIM ; PULAR SE HOUVER CARRY, SE NÃO HOUVER CARRY CONTINUE. ; PULAR PARA O PASSO5. ; TORNA ZERO O CARRY DA FLAG. ; MOVA O QUE ESTÁ NO REGISTRADOR R2 PARA O ACC. ; SUBTRAI R2-A ; SALTA SE O CONTEÚDO DO ACUMULADOR NÃO É ZERO. ; PULAR PARA O PASSO5. ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 47H PARA O REGISTRADOR R1. ; PULAR PARA FIM. ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 48H PARA O ACC. SUBTRAI A-R0 ; PULAR SE HOUVER CARRY, SE NÃO HOUVER CARRY CONTINUE. ; PULAR PARA O PASSO6. ; TORNA ZERO O CARRY DA FLAG. ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 48H PARA O ACC. ; SUBTRAI A-R2 ; SALTA SE O CONTEÚDO DO ACUMULADOR NÃO É ZERO. ; PULAR PARA O PASSO6. ; MOVA O QUE ESTÁ NO ENDEREÇO DE MEMÓRIA 48H PARA O REGISTRADOR R1. ; PULAR PARA FIM. ; MOVA O QUE ESTÁ NO ENDEREÇO 49H PARA O REGISTRADOR R1. ; PULAR PARA FIM.
Compartilhar