Escolar Documentos
Profissional Documentos
Cultura Documentos
cmbr@ismai.pt
Autoavaliao 4
1.
2.
3.
4.
5.
Qual o modo de endereamento utilizado na instruo branch? O que indica o segundo byte da instruo branch? O que acontece no MPU durante a execuo da instruo branch? Qual o tipo de endereamento que provoca um salto para diante? Qual o tipo de endereamento que provoca um salto para trs?
cmbr@ismai.pt 2
Microprocessadores
Autoavaliao 4
6. 7. 8.
9.
Qual o maior nmero de posies de memria que podem ser avanadas para diante? Qual o maior nmero de posies de memria que podem ser avanadas para trs? O opcode da instruo branch 2016. O endereo relativo 0616. Depois da instruo branch ser executada, a partir de endereo ser executado o prximo opcode? O opcode da instruo branch 2016. O endereo relativo F116. Depois da instruo branch ser executada, a partir de endereo ser executado o prximo opcode?
cmbr@ismai.pt 3
Microprocessadores
Autoavaliao 4
1.
2.
O que indica o segundo byte da instruo branch? Indica o endereamento relativo, que consiste no valor adicionado ao program counter para obter o endereamento absoluto.
O que acontece no MPU durante a execuo da instruo branch? O endereo relativo obtido a partir da memria e adicionado ao program counter. A execuo do programa prossegue a partir do novo program counter
3.
Microprocessadores
cmbr@ismai.pt
Autoavaliao 4
4. 5. 6. 7.
Qual o tipo de endereamento que provoca um salto para diante? Um valor positivo em complemento para 2 Qual o tipo de endereamento que provoca um salto para trs? Um valor negativo em complemento para 2 Qual o maior nmero de posies de memria que podem ser avanadas para diante? 0111 11112 ou +12710 Qual o maior nmero de posies de memria que podem ser avanadas para trs? 1000 00002 ou -12810
cmbr@ismai.pt 5
Microprocessadores
Autoavaliao 4
8.
9.
O opcode da instruo branch 2016. O endereo relativo 0616. Depois da instruo branch ser executada, a partir de endereo ser executado o prximo opcode? 2816
O opcode da instruo branch 2016. O endereo relativo F116. Depois da instruo branch ser executada, a partir de endereo ser executado o prximo opcode? 1316
cmbr@ismai.pt 6
Microprocessadores
MENEMNICA
BCC BCS BNE BEQ BPL BMI
OPCODE
24 25 26 27 2A 2B
BRANCH IF
C=0 C=1 Z=0 Z=1 N=0 N=1
BVC
BVS
cmbr@ismai.pt
28
29
V=0
V=1
7
Autoavaliao 4
10.
Qual a diferena entre uma instruo de salto incondicional e uma instruo de salto condicional? Qual condio testada pela instruo branch if minus (BMI)? Quando que a flag N activada. Quando que a flag Z activada. Durante uma operao de adio, a flag C activada. O que indica isso? Durante uma operao de subtraco, a flag C activada. O que indica isso?
cmbr@ismai.pt 8
Microprocessadores
Autoavaliao 4
10. R.
Qual a diferena entre uma instruo de salto incondicional e uma instruo de salto condicional? Uma instruo de salto incondicional provoca sempre um salto. Uma instruo de salto condicional implementa um operao de salto apenas se um condio especificada for verificada. Qual condio testada pela instruo branch if minus (BMI)? A instruo BMI testa o registo N (Negative) para verificar se est activo. Quando que a flag N activada. Genericamente a flag N activada se a instruo anterior deixar 1 no MSB do acumulador.
cmbr@ismai.pt 9
11.
R.
12. R.
Microprocessadores
Autoavaliao 4
13. R.
Quando que a flag Z activada. Genericamente a flag Z activada se a instruo anterior deixar tudo a zeros no acumulador. Durante uma operao de adio, a flag C activada. O que indica isso? Genericamente o carry bit activado se existe um carry do bit 7 do acumulador. Durante uma operao de subtraco, a flag C activada. O que indica isso? Durante uma operao de subtraco o bit de carry activado se for necessrio pedir emprestado (borrow) um bit para completar a sutraco.
cmbr@ismai.pt 10
14. R.
15. R.
Microprocessadores
Autoavaliao 4
16.
R.
Frequentemente, ao adicionar dois nmeros positivos em complemento para 2, o bit de sinal ir indicar uma soma negativa. Qual a flag que permite detectar este erro? Esta condio resulta de um overflow no complemento para 2, por isso a flag V ser activada se esta condio ocorrer. Em que condies a instruo BEQ causa a ocorrncia de um salto? A instruo BEQ provoca um salto se o registo Z (zero) est activado. Em que condies a instruo BPL causa a ocorrncia de um salto? A instruo BPL provoca um salto se o registo N (negative) est activado.
cmbr@ismai.pt 11
17.
R.
18.
19.
Microprocessadores
Autoavaliao 4
16.
R.
Frequentemente, ao adicionar dois nmeros positivos em complemento para 2, o bit de sinal ir indicar uma soma negativa. Qual a flag que permite detectar este erro? Esta condio resulta de um overflow no complemento para 2, por isso a flag V ser activada se esta condio ocorrer. Em que condies a instruo BEQ causa a ocorrncia de um salto? A instruo BEQ provoca um salto se o registo Z (zero) est activado. Em que condies a instruo BPL causa a ocorrncia de um salto? A instruo BPL provoca um salto se o registo N (negative) est activado.
cmbr@ismai.pt 12
17.
R.
18.
R.
Microprocessadores
Autoavaliao 4
19.
R.
Ao subtrair nmeros binrios sem sinal, quais as flags que indicam se a diferena um nmero negativo? Atravs da carry flag.
Microprocessadores
cmbr@ismai.pt
13
Algoritmos
Microprocessadores
cmbr@ismai.pt
15
Instrues a utilizar
Instruo
Load Accumulator Clear Accumulator Decrement Accumulator Increment Accumulator Store Accumulator Add Subtract Branch Always Branch If Carry Set Branch If Equal Zero Branch If Minus Halt
Menemnica
Modo de Endereamento
Imediato
LDA CLRA DECA INCA STA ADD SUB BRA BCS BEQ BMI HLT 86
Directo
96
Relativo
Inerente
4F 4A 4C
8B 80
97 9B 90 20 25 27 2B 3E
Microprocessadores
cmbr@ismai.pt
16
Programa
Endereo Hexadecimal
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13
Microprocessadores
Contedo Hexadecimal
4F 97 13 96 12 27 09 4A 97 12 96 13 9B 11 20 F1 3E 05 03 -
Comentrios
Limpa o acumulador Armazena o acumulador na posio 1316 (Produto) Carrega o acumulador com o multiplicador (posio 1216) Se o multiplicador for igual a zero salta para a instruo Halt Caso contrrio, decrementa o acumulador Armazena o novo valor do acumulador (multiplicador) na posio 1216 Carrega o acumulador com o produto a partir da posio 1316 Adiciona ao produto (acumulador) o multiplicando (posio 1116) Salta de novo para a instruo na posio 01. Pra Multiplicando Multiplicador Produto
cmbr@ismai.pt
17
47 -15 32 47 15 2 3
Microprocessadores
32 -15 17
17 -15 2
Inicio
Fluxograma
Limpar Acumulador
Armazenar Quociente
Carregar o Acumulador
Subtrair Divisor
Resultado Negativo ?
Armazena Dividendo
Fim
Carrega Quociente
Incrementa Quociente
Microprocessadores
cmbr@ismai.pt
19
Programa
Endereo Hexadecimal
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13
Microprocessadores
Contedo Hexadecimal
4F 97 13 96 11 90 12 2B 07 97 11 96 13 4C 20 F1 3E 2F 0F -
Comentrios
Limpa o acumulador Armazena o acumulador no quociente que se encontra na posio 1316. Carrega o acumulador com o dividendo a partir da posio 1116. Subtrai o divisor ao dividendo. Se a diferena for negativa salta para a instruo Halt. Caso contrrio armazena a diferena novamente na posio 1116. Carrega o acumulador com o quociente a partir da posio 1316 Incrementa o acumulador (quociente) uma unidade Salta de novo para a instruo na posio 01. Pra Dividendo (4710). Divisor (1510). Quociente
cmbr@ismai.pt
20
Traagem
Endereo Hexadecimal
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
2F
12
0F
13
-
Endereo Hexadecimal
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
12
13
1 20
2F
2F-0F=20
20-0F=11
11 1 2
20 0 1
Microprocessadores
cmbr@ismai.pt
21
Traagem
Endereo Hexadecimal
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
12
13
Endereo Hexadecimal
01 02 03 04 05 06 10
11
12
13
2 11 11-0F=2
3 2 2-0F<0 2 0F 3
2 2 3
Microprocessadores
cmbr@ismai.pt
22
2 100 310 7 1
Duzentos
0011 0010
Centenas
0011 0011
Dezenas
Trinta
0011 0111
Unidades
Sete
Microprocessadores
cmbr@ismai.pt
INICIO
Fluxograma
Zero?
Zero?
Somar 100
Fim
Somar 10
Microprocessadores
cmbr@ismai.pt
24
Programa
Endereo Hexadecimal
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11
Contedo Hexadecimal
4F 97 2B 96 28 27 08 4A 97 28 96 2B 8B 64 97 2B 20 F1
Comentrios
Limpa o acumulador Armazena 00 na posio 2B. Limpando o resultado em binrio Carrega directo o digito BCD das centenas Se o digito das centenas for zero salta Para diante para a posio 1216 Caso contrrio decrementa o acumulador Armazena o resultado como o Novo digito BCD das centenas Carrega directo o resultado binrio Adiciona imediato 10010 ao resultado em binrio. Armazena o novo resultado binrio Salta Para trs, para a posio 0316
Microprocessadores
cmbr@ismai.pt
25
Programa (cont.)
Endereo Hexadecimal
12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
Contedo Hexadecimal
96 29 27 0B 4A 97 29 96 2B 8B 0A 97 2B 20 F1
Comentrios
Carrega directo o digito BCD das dezenas Se o digito BCD das dezenas for zero salta Para diante, para a posio 2116. Caso contrrio decrementa o acumulador. Armazena o resultado como o novo digito BCD das dezenas Carrega directo o resultado binrio Adiciona imediato 1010 ao resultado binrio Armazena o novo resultado binrio na posio 2B Salta para trs, para a instruo na posio 1216.
Microprocessadores
cmbr@ismai.pt
26
Programa (cont.2)
Endereo Hexadecimal
21 22 23 24 25 26 27 28 29 2A 2B
Contedo Hexadecimal
96 2B 9B 2A 97 2B 3E 02 03 07 -
Comentrios
Carrega directo o resultado binrio. Adiciona directo o digito BCD das unidades Armazena o novo resultado binrio na posio 2B. Pra. Digito BCD das centenas Digito BCD das dezenas Digito BCD das unidades Posio do resultado binrio
Microprocessadores
cmbr@ismai.pt
27
Traagem
Microprocessadores
cmbr@ismai.pt
28
237
- 100 137 - 100 37 - 10 27
- 0110 0100 1000 1001 - 0110 0100 0010 0101 - 0000 1010 0001 1011
- 0000 1010
0001 0001 - 0000 1010
- 10
17 - 10
0000 0111
Microprocessadores cmbr@ismai.pt
7
29
Fluxograma
Microprocessadores
cmbr@ismai.pt
30
Programa
Endereo Hexadecimal
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13
Microprocessadores
Contedo Hexadecimal
4F 97 2B 97 2C 97 2D 96 2A 80 64 25 09 97 2A 96 2B 4C 97 2B
Comentrios
Limpa o acumulador Armazena 00 na posio 2B, limpando o digito das centenas. Armazena 00 na posio 2C, limpando o digito das dezenas. Armazena 00 na posio 2D, limpando o digito das unidades. Carrega directo o nmero binrio a ser convertido. Subtrai imediato 10010. Se ocorrer um borrow salta Para diante para a instruo na posio 1616. Caso contrrio, armazena o resultado da subtraco como o novo nmero binrio. Carrega directo o digito binrio do resultado BCD. Incrementa o digito das centenas. Armazena o digito das centenas novamente na posio de onde veio.
cmbr@ismai.pt
31
Programa (cont.2)
Endereo Hexadecimal
14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22
Contedo Hexadecimal
20 F1 96 2A 80 0A 25 09 97 2A 96 2C 4C 97 2C
Comentrios
Salta de novo para a instruo na posio 0716. Carrega directo o nmero binrio. Subtrai imediato 1010. Se ocorrer um borrow, salta Para diante para a instruo na posio 2516. Caso contrrio, armazena o resultado da subtraco como o novo nmero binrio. Carrega directo o digito das dezenas. Incrementa o digito das dezenas. Armazena o digito das dezenas novamente na posio de onde veio.
Microprocessadores
cmbr@ismai.pt
32
Programa (cont.2)
Endereo Hexadecimal
23 24 25 26 27 28 29 2A 2B 2C 2D
Contedo Hexadecimal
20 F1 96 2A 97 2D 3E -
Comentrios
Salta novamente para a instruo na posio 1616. Carrega directo o nmero binrio. Armazena a o digito das unidades. Pra. Posio do nmero binrio a ser convertido. Digito das centenas reservado ao resultado BCD. Digito das dezenas reservado ao resultado BCD. Digito das unidades reservado ao resultado BCD.
Microprocessadores
cmbr@ismai.pt
33
Autoavaliao 4
1. 2.
3.
4.
5.
O que um algoritmo? Que tipo de instruo utilizado para tomar uma deciso? Considere o programa da multiplicao por adio sucessiva. Se o multiplicador for 816 e o multiplicando for 1516 quantas vezes executada a instruo BEQ? Considere o programa da diviso por subtraco sucessiva. Qual o maior nmero que pode ser utilizado como dividendo? Como pode o programa anterior ser alterado de modo a tratar dividendos inteiros sem sinal at 25510?
cmbr@ismai.pt 34
Microprocessadores
Autoavaliao 4
6. 7.
8.
9.
10.
Quando o programa para, onde fica o resto armazenado? Considere o programa de converso de BCD para binrio. Suponha que os endereos 2816, 2916 e 2A16 contm respectivamente 01, 09 e 08. Quantas vezes ser adicionado 10010 ao endereo 2B16? Quantas vezes ser adicionado 1010? Considere o programa da converso de Binrio para BCD. Qual o objectivo das primeiras quatro instrues? Qual o maior nmero binrio que este programa consegue converter para BCD?
cmbr@ismai.pt 35
Microprocessadores
Autoavaliao 4
1.
O que um algoritmo? um conjunto de procedimentos passo a passo para realizar uma tarefa concreta. Que tipo de instruo utilizado para tomar uma deciso? Instrues condicionais de salto. Considere o programa da multiplicao por adio sucessiva. Se o multiplicador for 816 e o multiplicando for 1516 quantas vezes executada a instruo BEQ? Nove vezes (traagem a seguir)
cmbr@ismai.pt 36
2.
3.
Microprocessadores
Traagem
Endereo Hexadecimal
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
15
12
08
13
-
Endereo Hexadecimal
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
12
13
15
07
08
07-1=06 06 15 15+15=2A
08-01=07 07 0+15=15
Microprocessadores
cmbr@ismai.pt
37
Traagem (Cont.)
Endereo Hexadecimal
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
12
13
Endereo Hexadecimal
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
12
13
3F
2A
06
05
06-1=05 05 2A 2A+15=3F
05-1=04 04 3F 3F+15=54
Microprocessadores
cmbr@ismai.pt
38
Traagem (Cont.2)
Endereo Hexadecimal
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
12
13
Endereo Hexadecimal
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
12
13
69
54
04
03
04-1=03 03 54 54+15=69
03-1=02 02 69 69+15=7E
Microprocessadores
cmbr@ismai.pt
39
Traagem (Cont.3)
Endereo Hexadecimal
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
12
13
Endereo Hexadecimal
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
11
12
13
93
7E
02
01
02-1=01 01 7E 7E+15=93
01-1=00 00 93 93+15=A8
Microprocessadores
cmbr@ismai.pt
40
Traagem (Cont.4)
Endereo Hexadecimal
01 02 03 04 05 06 10
11
12
13
A8
00
Microprocessadores
cmbr@ismai.pt
41
Autoavaliao 4
4.
5.
6.
Considere o programa da diviso por subtraco sucessiva. Qual o maior nmero que pode ser utilizado como dividendo? +12710=0111 11112 Como pode o programa anterior ser alterado de modo a tratar dividendos inteiros sem sinal at 25510? Alterar a instruo BMI para BCS. Quando o programa pra, onde fica o resto armazenado? O resto fica no dividendo, posio 1116.
cmbr@ismai.pt 42
Microprocessadores
Autoavaliao 4
7.
Considere o programa de converso de BCD para binrio. Suponha que os endereos 2816, 2916 e 2A16 contm respectivamente 01, 09 e 08. Quantas vezes ser adicionado 10010 ao endereo 2B16?
Endereo Hexadecimal
28 29 2A 2B
Contedo Hexadecimal
01 09 08 -
Comentrios
Digito BCD das centenas Digito BCD das dezenas Digito BCD das unidades Posio do resultado binrio
8.
Microprocessadores
Autoavaliao 4
9.
Considere o programa da converso de Binrio para BCD. Qual o objectivo das primeiras quatro instrues?
Endereo Hexadecimal
00 01 02 03 04 05 06
Contedo Hexadecimal
4F 97 2B 97 2C 97 2D
Comentrios
Limpa o acumulador Armazena 00 na posio 2B, limpando o digito das centenas. Armazena 00 na posio 2C, limpando o digito das dezenas. Armazena 00 na posio 2D, limpando o digito das unidades.
Limpam as posies onde os dgitos das centenas, dezenas e unidades do equivalente BCD sero armazenados
cmbr@ismai.pt 44
Microprocessadores
Autoavaliao 4
10.
Qual o maior nmero binrio que este programa consegue converter para BCD? 1111 11112 ou 25510
Microprocessadores
cmbr@ismai.pt
45
Instrues adicionais
Instruo Menemnica Imediato Add With Carry Subtract With Carry Arithmetic Shift Accumulator Left Decimal Adjust Accumulator
89 82
A ALU adiciona sempre os nmeros como se fossem binrios sem sinal. Ao adicionar nmeros com 8 bits frequente ocorrer um carry a partir do MSB, activando a carry flag Por isso podemos pensar na carry flag como uma extenso do acumulador
cmbr@ismai.pt 46
Microprocessadores
Semelhante ADD Se o bit de carry estiver a 1 antes da instruo ser executada adicionado 1 ao LSB. Se o biy de carry estiver a 0 no adicionado qualquer carry. Tal como a instruo ADD, tem dois modos de enderamento. Uma primeira utilizao desta instruo consiste na aritmtica de preciso mltipla. Preciso mltipla significa que so usados 2 ou mais bytes para representar os nmeros. Enquanto com um byte podemos representar nmeros at 25510. Com 2 bytes podemos representar nmeros sem sinal at 2161=65.53510, e assim sucessivamente. Assim o MPU consegue tratar nmeros virtualmente de qualquer tamanho utilizando em conjunto o nmero de bytes adequado.
cmbr@ismai.pt 47
Microprocessadores
ADC (Exemplo)
1 1 11 111 1100 0000 0001 1011 1101 1100 1 1110 1010 1001 0011 0111 1101 Carries Somando Somador Soma 0100 1010 +0110 0110 1011 0000
Byte 3
Microprocessadores
Byte 2
cmbr@ismai.pt
Byte 1
48
ADC Cont.
O MPU s opera com 8 bits de cada vez. Por isso qualquer valor superior deve ser representado por sequncias de 8 bits. Neste caso 3 Bytes. O MPU deve somar o 1 byte do somando ao 1 do somador resultando o 1 da soma. A seguir deve somar o 2 byte do somando ao 2 byte do somador. Como resultou um carry da soma do 1 byte para o 2 byte Deve considerar-se esse carry na soma do 2 byte. A instruo ADC faz isso automaticamente.
Microprocessadores
cmbr@ismai.pt
49
Contedo Hexadecimal
96 13 9B 16 97 19 96 14 99 17 97 1A 96 15 99 18 97 1B 3E
Comentrios
Carrega no acumulador directo o byte menos significativo do somando. Adiciona directo o byte menos significativo do somador. Armazena o resultado do byte menos significativo da soma. Carrega o acumulador directo com o prximo byte do somando. Adiciona directo com carry O prximo byte do somador. Armazena o resultado no prximo byte da soma. Carrega no acumulador directo o byte mais significativo do somando. Adiciona directo com carry o byte mais significativo do somador. Armazena o resultado No byte mais significativo da soma. Pra.
cmbr@ismai.pt
50
Contedo Hexadecimal
EA C0 4A 93 1B 66 -
Comentrios
Byte menos significativo do somando Byte intermdio do somando. Byte mais significativo do somando. Byte menos significativo do somador. Byte intermdio do somador. Byte mais significativo do somador. Byte menos significativo da soma. Byte intermdio da soma. Byte mais significativo da soma.
Microprocessadores
cmbr@ismai.pt
51
Contedo Hexadecimal
96 0D 90 0F 97 11 96 0E 92 10 97 12 3E 21 97 81 75 -
Comentrios
Carrega o acumulador directo com o byte menos significativo do diminuendo. Subtrai directo o byte menos significativo do diminuidor. Armazena o resultado no byte menos significativo da diferena. Carrega o acumulador directo com o byte mais significativo do diminuendo. Subtrai com carry o byte mais significativo do diminuidor. Armazena o resultado no byte mais significativo da diferena. Pra. Byte menos significativo do diminuendo. Byte mais significativo do diminuendo. Byte menos significativo do diminuidor. Byte mais significativo do diminuidor. Byte menos significativo da diferena. Byte mais significativo da diferena.
cmbr@ismai.pt
52
Multiplica por 2
Carry Register 0 0 0 0 0 1 0 Acumulador 0000 1010 0001 0100 0010 1000 0101 0000 1010 0000 0100 0000 1000 0000 Situao Antes do shift Aps 1 shift Aps 2 shift Aps 3 shift Aps 4 shift Aps 5 shift Aps 6 shift
Microprocessadores
cmbr@ismai.pt
53
Contedo Hexadecimal
96 0C 48 48 48 48 9B 0D 97 0B 3E -
Comentrios
Carrega no acumulador directo os dgitos mais significativos do BCD descompactado. Shift para a esquerda. Shift para a esquerda. Shift para a esquerda. Shift para a esquerda. Soma os dgitos menos significativos do BCD descompactado. Armazena o resultado dos dois BCD compactados. Pra. Dgitos do BCD compactados. Dgitos mais significativos do BCD descompactado. Dgitos menos significativos do BCD descompactado.
Microprocessadores
cmbr@ismai.pt
54
Para produzir o resultado adequado em BCD, ao adicionar dois valores: Se a soma for 10012 ou inferior
Microprocessadores
cmbr@ismai.pt
55