Escolar Documentos
Profissional Documentos
Cultura Documentos
2 Experimento
Intrues Lgicas e Aritmticas
Grupo 7
Sumrio
1. Objetivos................................................................................................................. 3
2. Introduo Terica .................................................................................................. 3
3.
4.
5.
6.
1. Objetivos
Entender e utilizar as operaes lgicas e aritmticas realizadas pela ULA (Unidade
Logica Aritmtica) do 8085A.
2. Introduo Terica
Registrador de FLAGS:
tambm conhecido como registrador F, ou registrador PSW (Program Status
Word). um registrador de 8 bits (mas somente 5 bits so utilizados que armazena o
estado da ultima operao realizada na ULA. So as flags do 8085, conforme mostrado
a seguir:
MNEMONIC
MVI A, 00H
LXI H, 2070
MOV M, A
INR A
INX H
MOV M, A
STC
RAL
INX H
MOV M, A
STC
RAL
INX H
MOV M, A
STC
RAL
INX H
MOV M, A
STC
RAL
INX H
MOV M, A
STC
RAL
INX H
MOV M, A
HLT
Cdigo
3E 00
21 70 20
77
3C
23
77
37
17
3C
77
37
17
3C
77
37
17
3C
77
37
17
3C
77
37
17
3C
77
76
Comentrio
Carrega o registrador A com o valor 00H.
Carrega o registrador par HL com o valor 2070H.
Move o contedo do Reg. A para a posio de memria especificado pelo reg. par HL.
Incrementa o contedo do Acumulador.
Incrementa o registrador par HL.
Move o contedo do Reg. A para a posio de memria especificado pelo reg. par HL.
Seta o bit do Carry (
). Nenhuma outra flag afetada.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Incrementa o contedo do registrador par HL.
Move o contedo do Reg. A para a posio de memria especificado pelo reg. par HL.
Seta o bit do Carry (
). Nenhuma outra flag afetada.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Incrementa o contedo do registrador par HL.
Move o contedo do Reg. A para a posio de memria especificado pelo reg. par HL.
Seta o bit do Carry (
). Nenhuma outra flag afetada.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Incrementa o contedo do registrador par HL.
Move o contedo do Reg. A para a posio de memria especificado pelo reg. par HL.
Seta o bit do Carry (
). Nenhuma outra flag afetada.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Incrementa o contedo do registrador par HL.
Move o contedo do Reg. A para a posio de memria especificado pelo reg. par HL.
Seta o bit do Carry (
). Nenhuma outra flag afetada.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Incrementa o contedo do registrador par HL.
Move o contedo do Reg. A para a posio de memria especificado pelo reg. par HL.
Pausa a execuo do programa.
Cdigo
3E FF
21 70 20
77
B7
17
23
77
3E 00
17
3C
77
76
Comentrio
Carrega o registrador A com o valor FFH.
Carrega o registrador par HL com o valor 2070H.
Move o contedo do Reg. A para a posio de memria especificado pelo reg. par HL.
Foi usado para zerar o Carry (
.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Incrementa o contedo do registrador par HL.
Move o contedo do Reg. A para a posio de memria especificado pelo reg. par HL.
Carrega o registrador A com o valor 00H.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Incrementa o contedo do registrador par HL.
Move o contedo do Reg. A para a posio de memria especificado pelo reg. par HL.
Pausa a execuo do programa.
Cdigo
LXI B 2070H
LDAX B
MOV H, A
ORA A
RAL
MOV D, A
MVI A, 00H
ADC A
MOV E, A
MOV A, D
ORA A
RAL
MOV D, A
MVI A, 00H
ADC A
MOV L, A
MOV A, E
ORA A
RAL
ADD L
MOV E, A
MOV A, D
ORA A
RAL
MOV D, A
MVI L, 00H
MOV A, L
ADC A
MOV L, A
MOV A, E
ORA A
RAL
ADC L
MOV E, A
MOV A, D
SUB H
INR C
STAX B
INR C
MVI A, 00H
ADC A
MOV L, A
01 70 20
0A
67
B7
17
57
3E 00
8F
5F
7A
B7
17
57
3E 00
8F
6F
7B
B7
17
85
5F
7A
B7
17
57
2E 00
7D
8F
6F
7B
B7
17
8D
5F
7A
94
0C
02
0C
3E 00
8F
6F
Comentrio
Carrega o registrador par BC com o valor 2070H.
Carrega o reg. A com o valor presente no endereo especificado pelo reg. par BC.
Move o contedo do Acumulador para o registrador H.
Usado para zerar o carry.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Move o contedo do Acumulador para o registrador D.
Carrega o acumulador com o valor 00H.
Adiciona contedo do Acumulador ele mesmo. (Utilizado para pegar o carry.)
Move o contedo do Acumulador para o registrador E.
Move o contedo do registrador D para o Acumlador.
Usado para zerar o carry.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Move o contedo do Acumulador para o registrador D.
Carrega o acumulador com o valor 00H.
Adiciona contedo do Acumulador ele mesmo. (Utilizado para pegar o carry.)
Move o contedo do registrador A para o registrador L.
Move o contedo do registrador E para o registrador A.
Usado para zerar o carry.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
O contedo do registrador L adicionado ao contedo do Acumulador.
Move o contedo do Acumulador para o registrador E.
Move o contedo do registrador D para o Acumlador.
Usado para zerar o carry.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Move o contedo do Acumulador para o registrador D.
Carrega o registrador L com o valor 00H.
Move o contedo do registrador L para o Acumlador.
Adiciona contedo do Acumulador ele mesmo. (Utilizado para pegar o carry.)
Move o contedo do registrador A para o registrador L.
Move o contedo do registrador E para o registrador A.
Usado para zerar o carry.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Adiciona o contedo do reg. L ao contedo do Acumulador.
Move o contedo do Acumulador para o registrador E.
Move o contedo do registrador D para o Acumlador.
O contedo do registrador H subtrado do contedo do Acumulador.
Incrementa o reg. C. (Carry no afetado)
Move o contedo do Acumulador para o endereo especificado pelo reg. par BC.
Incrementa o reg. C. (Carry no afetado)
Carrega o acumulador com o valor 00H.
Adiciona contedo do Acumulador ele mesmo. (Utilizado para pegar o carry.)
Move o contedo do Acumulador para o registrador L.
7
MOV A, E
SUB L
STAX B
HLT
7B
95
02
76
Cdigo
01 70 20
0A
E6 01
32 70 20
0A
B7
1F
0C
02
76
Comentrio
Carrega o reg. Par BC com o valor 2070H.
Carrega o reg. A com o valor presente no endereo especificado pelo reg. par BC.
Foi usado para verificar se o nmero mpar, obtendo-se o resto da diviso por 2.
Move o contedo do Acumulador para o endereo especificado.
Carrega o Acumulador com o contedo do endereo especificado pelo reg. par BC.
Foi usado para zerar o Carry (
.
Rotaciona o contedo do Acumulador direita incluindo bit de Carry.
Incrementa o registrador C.
Move o contedo do reg. A para o endereo especificado pelo reg. par BC.
Pausa a execuo do programa.
Note que usamos a operao ANI 01H para verificar se o nmero mpar. Caso for,
teremos 01H de resto. Armazenamos o quociente no endereo 2071H e o resto no
endereo 2072H. A Figura 4.2.3 mostra a simulao do programa.
Tabela 3.3.1 Programa elaborado para fazer uma soma de nmeros de 16 bits.
MNEMONIC
LXI H,2060H
MOV B, M
INR L
MOV C, M
LDA 2062H
MOV L, A
LDA 2063H
MOV H, A
DAD B
MOV A, H
STA 2065
MOV A, L
STA 2064H
MVI A, 00H
ACI 00H
STA 2066H
HLT
Cdigo
21 60 20
46
2C
4E
3A 62 20
6F
3A 63 20
67
09
7C
32 65 20
7D
32 64 20
3E 00
CE 00
32 66 20
76
Comentrio
Carrega o registrador par HL com o valor 2060H.
Move para o reg. B o valor presente na posio de memria especificado pelo reg. par HL.
Incrementa o registrador L, sem afetar o carry ( ).
Move para o reg. C o valor presente na posio de memria especificado pelo reg. par HL.
Carrega o Acumulador com o valor presente na posio 2062H.
Move o contedo do Acumulador para o registrador L.
Carrega o Acumulador com o valor presente na posio 2063H.
Move o contedo do Acumulador para o registrador H.
O contedo do reg. Par BC adicionado ao contedo do reg. Par HL (Carry afetado).
Move o contedo do registrador H para o Acumulador.
Move o contedo do Acumulador para a posio de memria 2065H.
Move o contedo do registador L para o Acumulador.
Move o contedo do Acumulador para a posio de memria 2064H.
Carrega o Acumulador com o valor 00H.
Adiciona o valor especificado com carry ao contedo do acumulador.
Move o contedo do Acumulador para a posio de memria 2066H.
Pausa a execuo do programa.
A Figura 3.3.1 mostra a simulao do programa no Abacus. Note que foi feita a
operao FFDDH+5755H, resultando em 15754H.
10
11
3.4 Finalmente, devia-se fazer um programa que lesse uma temperatura em grau
Celsius ( ) no endereo de memria 2070H (em hexadecimal) e converta-a
em grau Fahrenheit
, armazenando este resultado no endereo de
memria seguinte.
Deviam ser anotados os valores de sada para os seguintes valores: 00, 10, 20,
30, ..., 80, 90 e 99.
MNEMONIC
LDA 2070H
MOV B, A
ORA A
RAR
MOV C, A
ADD B
MOV B, A
MVI A,00H
RAL
MOV E, A
MOV A, C
RAR
MOV C, A
ADD B
MOV B, A
MVI A,00H
RAL
ADD E
ADD B
ADI 20H
STA 2071H
HLT
Cdigo
3A 70 20
47
B7
1F
4F
80
47
3E 00H
17
5F
79
1F
4F
80
47
3E 00H
17
83
80
C6 20
32 71 20
76
Comentrio
Carrega o Acumulador com o valor presente na posio 2070H.
Move o dado do Acumulador para o reg. B.
Foi usado para zerar o Carry (
.
Rotaciona o contedo do Acumulador direita incluindo bit de Carry.
Move o dado do Acumulador para o reg. C.
O contedo do registrador B adicionado ao contedo do Acumulador.
Move o dado do Acumulador para o reg. B.
Carrega o registrador A com o valor 00H.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
Move o dado do Acumulador para o reg. E.
Move o dado do Acumulador para o reg. C.
Rotaciona o contedo do Acumulador direita incluindo bit de Carry.
Move o dado do Acumulador para o reg. C.
O contedo do registrador B adicionado ao contedo do Acumulador.
Move o dado do Acumulador para o reg. B.
Carrega o registrador A com o valor 00H.
Rotaciona o contedo do Acumulador esquerda incluindo bit de Carry.
O contedo do registrador E adicionado ao contedo do Acumulador.
O contedo do registrador B adicionado ao contedo do Acumulador.
Adiciona o valor especificado ao contedo do acumulador.
Move o contedo do acumulador para a posio de memria 2071H.
Pausa a execuo do programa.
12
13
14
5. Anexo 1
15
16
6. Referencias
http://www2.ufersa.edu.br/portal/view/uploads/setores/147/arquivos/MM/7047549Cpu-Process-Adores.pdf
17