Você está na página 1de 55

Microprocessadores

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.

Qual o modo de endereamento utilizado na instruo branch? Endereamento relativo

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

Instrues de Salto condicional


INSTRUO
Branch If Carry Clear Branch If Carry Set Branch If Not Equal Zero Branch If Equal Zero Branch If Plus Branch If Minus

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

Branch If Overflow Clear


Branch If Overflow Set
Microprocessadores

BVC
BVS
cmbr@ismai.pt

28
29

V=0
V=1
7

Autoavaliao 4
10.

11. 12. 13. 14. 15.

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

Multiplicao por adio sucessiva


Instrues a utilizar Fluxograma Programa

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 -

Menemnica / Contedo Hex.


CLRA STA 13 LDA 12 BEQ 09 DECA STA 12 LDA 13 ADD 11 BRA F1 HLT 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

Diviso por subtraco sucessiva

Exemplo: dividir 47 por 15.

47 -15 32 47 15 2 3
Microprocessadores

32 -15 17

17 -15 2

Dividendo Divisor Resto Quociente


cmbr@ismai.pt 18

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 -

Menemnica / Contedo Hex.


CLRA STA 13 LDA 11 SUB 12 BMI 07 STA 11 LDA 13 INCA BRA F1 HLT 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

Converso de BCD para binrio


Numrico Caracter ASCII Digito BCD

2 100 310 7 1
Duzentos

0011 0010

Centenas

0011 0011

Dezenas

Trinta

0011 0111

Unidades

Sete

11001002 11001002 10102 10102 10102 01112 111011012

10010 10010 1010 1010 1010 710 23710


23

Microprocessadores

cmbr@ismai.pt

INICIO

Fluxograma

Limpar o Resultado Binrio

Carregar o Dgito das Centenas

Zero?

Carregar Dgito das Dezenas

Decrementar Dgito das Centenas

Zero?

Carregar Dgito das Unidades

Armazenar Dgito das Centenas

Decrementar Dgito das Dezenas

Adicionar o Dgito das Unidades

Carregar Resultado Binrio

Armazenar Dgito das Dezenas

Armazenar o Resultado Binrio

Somar 100

Carregar Resultado Binrio

Fim

Armazenar o Resultado Binrio

Somar 10

Microprocessadores

cmbr@ismai.pt

Armazenar o Resultado Binrio

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

Menemnica / Contedo Hex.


CLRA STA 2B LDA 28 BEQ 0B DECA STA 28 LDA 2B ADD 64 STA 2B BRA 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

Menemnica / Contedo Hex.


LDA 29 BEQ 0B DECA STA 29 LDA 2B ADD 0A STA 2B BRA 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 -

Menemnica / Contedo Hex.


LDA 2B ADD 2A STA 2B HLT 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

Converso de Binrio para BCD


1110 1101

237
- 100 137 - 100 37 - 10 27

Converso do nmero 1110 11012 (23710).

- 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

Menemnica / Contedo Hex.


CLRA STA 2B STA 2C STA 2D LDA 2A SUB 64 BCS 09 STA 2A LDA 2B INCA STA 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

Menemnica / Contedo Hex.


BRA F1 LDA 2A SUB 0A BCS 09 STA 2A LDA 2C INCA STA 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 -

Menemnica / Contedo Hex.


BRA F1 LDA 2A STA 2D HLT -

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 -

Menemnica / Contedo Hex.


01 09 08 -

Comentrios
Digito BCD das centenas Digito BCD das dezenas Digito BCD das unidades Posio do resultado binrio

8.

Uma vez Quantas vezes ser adicionado 1010? Nove vezes


cmbr@ismai.pt 43

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

Menemnica / Contedo Hex.


CLRA STA 2B STA 2C STA 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

OPCODE HEX Directo 99 92 48 19 Inerente

ADC SBC ASLA DAA

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

Add With Carry (ADC)


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

Adio em Preciso mltipla


Endereo Hexadecimal
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12
Microprocessadores

Contedo Hexadecimal
96 13 9B 16 97 19 96 14 99 17 97 1A 96 15 99 18 97 1B 3E

Menemnica / Contedo Hex.


LDA 13 ADD 16 STA 19 LDA 14 ADC 17 STA 1A LDA 15 ADC 18 STA 1B HLT

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

Adio em Preciso mltipla (cont.)


Endereo Hexadecimal
13 14 15 16 17 18 19 1A 1B

Contedo Hexadecimal
EA C0 4A 93 1B 66 -

Menemnica / Contedo Hex.


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

Subtraco em Preciso mltipla


Endereo Hexadecimal
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12
Microprocessadores

Contedo Hexadecimal
96 0D 90 0F 97 11 96 0E 92 10 97 12 3E 21 97 81 75 -

Menemnica / Contedo Hex.


LDA 0D SUB 0F STA 11 LDA 0E SBC 10 STA 12 HLT 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

Arithmetic Shift Accumulator Left (ASLA)

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

Compactao de dois BCDs num nico byte


Endereo Hexadecimal
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D

Contedo Hexadecimal
96 0C 48 48 48 48 9B 0D 97 0B 3E -

Menemnica / Contedo Hex.


LDA 0C ASLA ASLA ASLA ASLA ADD 0D STA 0B HLT -

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

Decimal Adjust Accumulator


710 = 0111BCD + 510 = 0101BCD
1210 = 1100BCD

12101100BCD 1210=0001 0010BCD

Para produzir o resultado adequado em BCD, ao adicionar dois valores: Se a soma for 10012 ou inferior

Microprocessadores

cmbr@ismai.pt

55

Você também pode gostar