Departamento de Ciências Exatas e Aplicadas Campus João Monlevade
Por: Luisabelly Castro • 15/12/2019 • Trabalho acadêmico • 802 Palavras (4 Páginas) • 252 Visualizações
MINISTÉRIO DA EDUCAÇÃO[pic 1][pic 2]
Universidade Federal de Ouro Preto – UFOP Departamento de Ciências Exatas e Aplicadas Campus João Monlevade
[pic 3]
8085 – Laboratório 4
Alunos: Hiago Freitas Amaral - 12.2.8052 Fabiany Alves Dolabela – 16.1.8382 Luisabelly de Castro Oliveira – 16.1.8041
Professor: Marcelo
10/2019
[pic 4]
Departamento de Ciências Exatas e Aplicadas – DECEA
Exercício 1:
Para a primeira lista de instruções, temos o valor 6 carregado no acumulador, e os endereços 1509 e 2000 carregados respectivamente no par B e o outro no par H. Após feitas as alocações de memória, um CMP foi utilizado para comparar o valor contido no registrador C com o conteúdo do acumulador, como o conteúdo do acumulador é menor que o conteúdo do registrador C, o flag CY foi setado. JZ é utilizado para realizar um salto, caso o flag de Z estivesse setado, aconteceria um salto para o fim da lista de instruções. Através do mnemônico INR o acumulador é carregado, e então uma nova comparação é realizada utilizando JC, caso o flag CY seja igual a 1, o algoritmo retorna para o label setado, nesse caso (COMPARA), e assim o loop é realizado até que o conteúdo do acumulador seja igual ao conteúdo do registrador C, ou seja, até que o flag Z seja igual a 1. Utilizando PCHL o algoritmo executa indefinidamente.
Exercício 2:
#ORG 2050H
#DB AAH,23H, BCH #ORG 2000H #BEGIN 2000H
LHLD 2050 //carrega o conteúdo de 2050 e 2051 no par H e L(invertido)
XCHG //coloca os valores contidos nos registradores H e L nos registradores D e E MOV A,E //Copia o conteúdo de E para o acumulador
CMP D //Compara com o valor em D
JC CY1 // Se o flag de cy =1 significa que o conteúdo do acumulador é menor que do registrador D
MOV B,E // se cy=0 o conteúdo de E é movido pra B MOV C,D // e o conteúdo de D é movido pra C
JMP JUMP // Pula para JUMP
CY1: MOV B,D //Caso o flag seja 1, o conteúdo em D é carregado em B MOV C,E //O conteúdo de E é carregado em C
JMP JUMP
JUMP: LHLD 2052 // carrega o conteúdo de 2052 no par H e L XCHG // carrega o conteúdo de 2052 em E
MOV A,E // Move E, para o Acumulador
CMP B // Compara o valor do Acumulador com B JC CY12 // Se A
MOV D,C //Se não, C=D MOV C,B //B=C
MOV B,A //A=B
JMP JUMP1 //Pula para o endereçamento dos números ordenados a partir de 2070
CY12: CMP C //Compara se A
MOV D,C // Se não, D=C MOV C,A / e C=A
JMP JUMP1 //Pula para o endereçamento dos números ordenados a partir de 2070
CY3: MOV D,A //Caso A seja menor que todos, é inserido em D;
JUMP1:LXI H,2070 //carrega o endereço 2070 no par H e Ç MOV M,B // carrega o conteúdo de B na memoria INX H //Incrementa 2070 para 2071
MOV M,C//Carrega o conteúdo de C na memoria
INX H //Incrementa 2071 para 2072
MOV M,D //carrega o conteúdo de D na memória. HLT
Comparar os conteúdos de 2050 com 2051 #ORG 2050H
#DB AAH,23H,BCH #ORG 2000H #BEGIN 2000H
LHLD 2050 XCHG MOV A,E CMP D
SECY=0: MOV D,B
MOV B,A MOV A,D JC SECY=0 CMP C
1SECY=0: JC SEGUE
MOV D,C MOV C,A MOV A,D JC 1SECY=0
...