aula 5 conjunto de instruções do microprocessador 8085 ... · conjunto de instruÇÕes lÓgicas...
TRANSCRIPT
ELE 1078 - Microprocessadores I
Aula 5
Conjunto de Instruções do Microprocessador
8085
Instruções Lógicas
1
5.1 - Grupos de Instruções 8085
As instruções no 8085 são distribuídas em 5 grupos:
1. Grupo de transferência da dados: Move dados entre registradores
ou posição de memória e registradores;
2. Grupo Aritmético: Adição, subtração, Incrementos, decremento;
3. Grupo Lógico: AND, OR, XOR, Comparação, Rotação,
Complemento;
4. Grupo de Desvio: Condicionais, Incondicionais, Subrotinas;
5. Grupo de Controle, Pilha, Entrada e Saída.
2
5.2 - Instruções Lógicas
A maioria das operações lógicas afetam todos os Flags.
FLAGS AC e CY têm valores pré-estalecidos
3
5.3 - Registradores de FLAGS
FLAGS
CY = Carry
P = Parity
AC = Auxiliar Carry
Z = Zero
S = Signal
Esses bits podem ser utilizados para o controle e desvio de programas através de determinadas instruções. 4
5.4 - Instruções Lógicas do 8085
5
5.4 - Instruções Lógicas - continuação
6
5.5 - Flags Z e CY na instrução CMP r
7
CONJUNTO DE INSTRUÇÕES LÓGICAS
• Operações AND () - O flag CY é desativado (=0) e o flag AC é
ativado (AC=1).
8
14 - ANA rAnd Accumulator with Register
(A) = (A) (r)
Z, S, P, AC, CY
1010 0 FFF T= 4
F
Instrução Código (Binário) Código (Hexa)
ANA B 1010 0 000 A0
ANTES: (A) = 3CH (B) = 21H APÓS: (A) = 20H (B) = 21H (F)=12H
É realizada uma operação AND entre o conteúdo do registrador r e o
conteúdo do Acumulador e o resultado é transferido ao acumulador.
CONJUNTO DE INSTRUÇÕES LÓGICAS
• Operações AND () - O flag CY é desativado (=0) e o flag AC é
ativado (AC=1).
9
15 - ANA MAnd Accumulator with Register
(A) = (A) ((H)(L))Z, S, P, AC, CY
1010 0110 T = 7
F R
Instrução Código (Binário) Código (Hexa)
ANA M 1010 0110 A6
ANTES: (H) = 20H (L) = 31H
(2031H) = 7FH (A) = 37H
APÓS: (2031H) = 7FH
(A) = 37H (F) = 12H
É realizada uma operação AND entre o conteúdo da memória endereçado
pelo par HL e o conteúdo do Acumulador e o resultado é transferido ao
Acumulador.
CONJUNTO DE INSTRUÇÕES LÓGICAS
• Operações AND () - O flag CY é desativado (=0) e o flag AC é
ativado (AC=1).
10
16 - ANI Data8And Immediate with Accumulator
(A) = (A) Data8
Z, S, P, AC, CY1110 0110
Data8
T = 7
F R
Instrução Código (Binário) Código (Hexa)
ANI F0 1110 0110
1111 0000
E6
F0
ANTES: (A) = 37H APÓS: (A) = 30H (F)=16H
É realizada uma operação AND entre o dado Data8 e o conteúdo do
Acumulador e o resultado é transferido ao Acumulador.
CONJUNTO DE INSTRUÇÕES LÓGICAS
• Operações OR (+L) Os flags CY e AC são desativados (=0).
11
17 - ORA rInclusive OR Register with Accumulator
(A) = (A) +L (r)
Z, S, P, AC, CY
1011 0FFF T = 4
F
Instrução Código (Binário) Código (Hexa)
ORA B 1011 0 000 B0
ANTES: (A) = 3CH (B) = 21H APÓS: (A) = 3EH (B) = 21H (F)=06H
É realizada uma operação OR entre o conteúdo do registrador r e o conteúdo
do Acumulador e o resultado é transferido ao acumulador.
CONJUNTO DE INSTRUÇÕES LÓGICAS
• Operações OR (+L) Os flags CY e AC são desativados (=0).
12
18 - ORA MInclusive OR Memory with Accumulator
(A) = (A) +L ((H)(L))
Z, S, P, AC, CY
1011 0110
B6H
T = 7
F R
Instrução Código (Binário) Código (Hexa)
ORA M 1011 0110 B6
ANTES: (H) = 20H (L) = 31H
(2031H) = 7FH (A) = 37H
APÓS: (H) = 20H (L) = 31H
(2031H) = 7FH (A) = 7FH (F)=02H
É realizada uma operação OR entre o conteúdo da memória endereçado pelo
par HL e o conteúdo do Acumulador e o resultado é transferido ao Acumulador.
CONJUNTO DE INSTRUÇÕES LÓGICAS
• Operações OR (+L) Os flags CY e AC são desativados (=0).
13
19 - ORI Data8Inclusive Or Immediate with Accumulator
(A) = (A) +L Data8
Z, S, P, AC, CY
1111 0110Data8
T = 7
F R
Instrução Código
(Binário)
Código (Hexa)
ORI F1 1111 0110
1111 0001
F6
F1
ANTES : (A) = 37H APÓS: (A) = F7H (F) = 82H
É realizada uma operação OR entre o dado Data8 e o conteúdo do Acumulador
e o resultado é transferido ao Acumulador.
CONJUNTO DE INSTRUÇÕES LÓGICAS
• Operação OR Exclusivo ( ) - Os flags CY e AC são zerados.
14
20 - XRA rExclusive OR Register with Accumulator
(A) = (A) (r)
Z, S, P, AC, CY1010 1FFF T = 4
F
Instrução Código (Binário) Código (Hexa)
XRA B 1010 1 000 A8
ANTES: (A) = 3CH (B) = 21H APÓS: (A) = 1DH (F) = 06H
É realizada uma operação Exclusive OR entre o conteúdo do registrador r e o
conteúdo do Acumulador e o resultado é transferido ao acumulador.
CONJUNTO DE INSTRUÇÕES LÓGICAS
• Operação OR Exclusivo ( ) - Os flags CY e AC são zerados.
15
21 - XRA MExclusive OR Memory with Accumulator
(A) = (A) ((H)(L))
Z, S, P, AC, CY
1010 1110 T = 7
F R
Instrução Código (Binário) Código (Hexa)
XRA M 1010 1110 AE
ANTES: (H) = 20H (L) = 31H
(2031H) = 7FH (A) = 37H
APÓS: (2031H) = 7FH (A) = 48H
(F) = 06H
É realizada uma operação XOR entre o conteúdo da memória endereçado pelo
par HL e o conteúdo do Acumulador e o resultado é transferido ao Acumulador.
CONJUNTO DE INSTRUÇÕES LÓGICAS
• Operação OR Exclusivo ( ) - Os flags CY e AC são zerados.
16
22 - XRI Data8Exclusive Or Immediate with Accumulator
(A) = (A) Data8
Z, S, P, AC, CY
1110 1110Data8
T = 7
F R
Instrução Código
(Binário)
Código (Hexa)
XRI F1 1110 1110
1111 0001
EE
F1
ANTES: (A) = FCH APÓS: (A) = 0DH (F) = 02H
É realizada uma operação XOR entre o dado Data8 e o conteúdo do
Acumulador e o resultado é transferido ao Acumulador.
CONJUNTO DE INSTRUÇÕES LÓGICAS
• Operações de Complemento
17
23 - CMAComplement Accumulator
(A) = (/A ) 0010 1111 T = 4
F
Instrução Código (Binário) Código (Hexa)
CMA 0010 1111 2F
ANTES: (A) = 3CH APÓS: (A) = 16H (F) = C3H
Complementa o conteúdo do Acumulador e transfere o resultado ao Acumulador.
Nenhum flag é afetado.
24 - CMCComplement Carry
CY = /CY 0011 11113FH
T= 4
F
O flag CY é complementado. Nenhum outro flag é afetado
25 - STCSet Carry
CY = 1 0011 011137H
T = 4
F
5.6 - Código de Operação para as Instruções Lógicas
18
5.7 - Exemplos de Instruções Lógicas
1. (A) = 3CH, (B) = 21H
ANA B
2. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ANA M
3. (A) = 37H
ANI FOH
4. (A) = 3CH, (B) = 21H
ORA B
5. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ORA M
19
5.7 - Exemplos de Instruções Lógicas
1. (A) = 3CH, (B) = 21H
ANA B => (A) = 20H, (B) = 21H, (F) = 12H
2. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ANA M
3. (A) = 37H
ANI FOH
4. (A) = 3CH, (B) = 21H
ORA B
5. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ORA M
20
5.7 - Exemplos de Instruções Lógicas
1. (A) = 3CH, (B) = 21H
ANA B => (A) = 20H, (B) = 21H, (F) = 12H
2. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ANA M => (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH, (F) = 12H
3. (A) = 37H
ANI FOH
4. (A) = 3CH, (B) = 21H
ORA B
5. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ORA M
21
5.7 - Exemplos de Instruções Lógicas
1. (A) = 3CH, (B) = 21H
ANA B => (A) = 20H, (B) = 21H, (F) = 12H
2. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ANA M => (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH, (F) = 12H
3. (A) = 37H
ANI FOH => (A) = 30H, (F) = 16H
4. (A) = 3CH, (B) = 21H
ORA B
5. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ORA M
22
5.7 - Exemplos de Instruções Lógicas
1. (A) = 3CH, (B) = 21H
ANA B => (A) = 20H, (B) = 21H, (F) = 12H
2. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ANA M => (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH, (F) = 12H
3. (A) = 37H
ANI FOH => (A) = 30H, (F) = 16H
4. (A) = 3CH, (B) = 21H
ORA B => (A) = 3DH, (F) = 02H
5. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ORA M
23
5.7 - Exemplos de Instruções Lógicas
1. (A) = 3CH, (B) = 21H
ANA B => (A) = 20H, (B) = 21H, (F) = 12H
2. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ANA M => (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH, (F) = 12H
3. (A) = 37H
ANI FOH => (A) = 30H, (F) = 16H
4. (A) = 3CH, (B) = 21H
ORA B => (A) = 3DH, (F) = 02H
5. (A) = 37H, (H) = 20H, (L) = 31H, (2031H) = 7FH
ORA M => (A) = 7FH, (H) = 20H, (L) = 31H, (2031H) = 7F, (F) = 02H
24
5.8 - Exemplos de Instruções Lógicas
6. (A) = 37H
ORI F1H
7. (A) = 3CH, (B) = 21H
XRA B
8. (A) = FCH
XRI F1
9. (A) = 3CH
CMA
10. (A) = 20H, CY = 1
RAL
25
5.9 - Exemplo Instruções Lógicas - ABACUS
11. (A)= 37H
ORI F1H => (A) = F7H, (F) = 82H
26
5.10 - Exemplo de Instruções Lógicas - ABACUS
12. (A) = 3CH
CMA => (A) = C3H, (F) = 02H
27
5.11 - Exemplo de Instruções Lógicas
28
• Obtenha o código de máquina de todas as
instruções
• Indique a representação simbólica de cada
instrução.
• Obtenha o conteudo de todos os registradores
e memória envolvida nas operações.
5.11 - Exemplo de Instruções Lógicas
29
5.12 - Exercício
1. Liste as instruções que executa as seguintes instruções:
A. Carrega o registrador B com D5H e o registrador C com D8H;
B. Carregar os registradores B e C com os mesmos valores do item
anterior utilizando uma única instrução;
C. Carregar o par de registradores DE com 3800H.
30
5.12 - Exercício
1. Liste as instruções que executa as seguintes instruções:
A. Carrega o registrador B com D5H e o registrador C com D8H;
B. Carregar os registradores B e C com os mesmos valores do item
anterior utilizando uma única instrução;
C. Carregar o par de registradores DE com 3800H.
A.
MVI B, D5H
MVI D, D8H
31
5.12 - Exercício
1. Liste as instruções que executa as seguintes instruções:
A. Carrega o registrador B com D5H e o registrador C com D8H;
B. Carregar os registradores B e C com os mesmos valores do item
anterior utilizando uma única instrução;
C. Carregar o par de registradores DE com 3800H.
A. B.
MVI B, D5H LXI B, D5D8H
MVI D, D8H
32
5.12 - Exercício
1. Liste as instruções que executa as seguintes instruções:
A. Carrega o registrador B com D5H e o registrador C com D8H;
B. Carregar os registradores B e C com os mesmos valores do item
anterior utilizando uma única instrução;
C. Carregar o par de registradores DE com 3800H.
A. B. C.
MVI B, D5H LXI B, D5D8H LXI D, 3800H
MVI C, D8H
33
5.13 - Exercício
2. Determine o conteúdo dos registradores B e C após a execução de
cada um dos seguintes programas.
A. LXI B, 24FFH
INX B
B. LXI B, 46FFH
INR C
C. LXI B, 4F88H
DCR B
D. MVI B, C7H
MVI C, 00H
DCX B
34
5.13 - Exercício
2. Determine o conteúdo dos registradores B e C após a execução de
cada um dos seguintes programas.
A. LXI B, 24FFH (B) = 25H e (C) = 00H
INX B INX B incrementa os 16 bits do par de reg BC.
B. LXI B, 46FFH
INR C
C. LXI B, 4F88H
DCR B
D. MVI B, C7H
MVI C, 00H
DCX B
35
5.13 - Exercício
2. Determine o conteúdo dos registradores B e C após a execução de
cada um dos seguintes programas.
A. LXI B, 24FFH
INX B
B. LXI B, 46FFH (B) = 46H e (C) = 00H
INR C INR C incrementa somente os 8 bits do reg C
sem afetar o registrador B.
C. LXI B, 4F88H
DCR B
D. MVI B, C7H
MVI C, 00H
DCX B
36
5.13 - Exercício
2. Determine o conteúdo dos registradores B e C após a execução de
cada um dos seguintes programas.
A. LXI B, 24FFH
INX B
B. LXI B, 46FFH
INR C
C. LXI B, 4F88H (B) = 4EH e (C) = 88H. DCR B decrementa
DCR B somente o reg B sem afetar o reg C.
D. MVI B, C7H
MVI C, 00H
DCX B
37
5.13 - Exercício
2. Determine o conteúdo dos registradores B e C após a execução de
cada um dos seguintes programas.
A. LXI B, 24FFH
INX B
B. LXI B, 46FFH
INR C
C. LXI B, 4F88H
DCR B
D. MVI B, C7H (B) = C6H e (C) = FFH. DCX B usa reg. de 16 bits.
MVI C, 00H O reg. C empresta (borrows) 1 do reg. B.
DCX B
38
5.14 - Exercício
3. Determine o conteúdo do acumulador após completar as seguintes
instruções de programa.
A. MVI A,52H
MVI B, 28H
ADD B
B. MVI A, 74H
MVI D, 6BH
SUB D
C. LXI H, 20C0H
MVI M, 20H
MVI A, 2AH
ADD M
39
5.14 - Exercício
3. Determine o conteúdo do acumulador após completar as seguintes
instruções de programa.
A. MVI A,52H
MVI B, 28H
ADD B => (A) = 7AH
B. MVI A, 6DH
SUI 1FH => (A) = 4EH
C. LXI H, 20C0H
MVI M, 20H
MVI A, 2AH
ADD M => (A) = 4AH
40
5.15 - Exercício
4. Determine o conteúdo do acumulador após completar as seguintes
instruções de programa.
A. MVI A, 42H
MVI D, 15H
ORA D
B. MVI A, 5CH
XRI FEH
C. MVI A, F0H
XRA A
41
5.15 - Exercício
4. Determine o conteúdo do acumulador após completar as seguintes
instruções de programa.
A. MVI A, 42H (A) = 0100 0010
MVI D, 15H (D) = 0001 0101
ORA D (A) OR (D) = 0101 0111 => (A) = 57H
B. MVI A, 5CH (A) = 0101 1100
XRI FEH D8 = 1111 1110
(A) XOR D8 = 1010 0010 => (A) = A2H
C. MVI A, F0H (A) = 1111 0000
XRA A (A) XOR (A) = 0000 0000 => (A) = 00H
42
5.16 - Exercício
5. Elabore um programa que a partir do endereço de memória 2070,
preencha cada posição de memória com o bit a partir de D0 setado.
Inicie com o valor 00H até atingir o valor FFH.
(2070H) = 00H
(2071H) = 01H
(2072H) = 03H
. . .
(2078H) = FFH
43
5.16 - Exercício
5. Elabore um programa que a partir do endereço de memória 2070, preencha cada
posição de memória com o bit a partir de D0 setado. Inicie com o valor 00H até atingir
o valor FFH.
44
5.17 - Exercício
6. Elabore um programa para somar dois números de 16 bits armazenados como segue:
Número 1. MSB (2060H) e LSB (2061H)
Número 2. MSB (2062H) e LSB (2063H).
Armazene o resultado a partir do endereço 2064 H.
45