Buscar

Sistemas a Microprocessadores - Projeto3 - UNESA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

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.

Outros materiais