Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje...

36
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Computador Cleópatra Assembly Alexandre Amory Edson Moreno

Transcript of Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje...

Page 1: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

ORGANIZAÇÃO E ARQUITETURA DE

COMPUTADORES

Computador Cleópatra

Assembly

Alexandre Amory

Edson Moreno

Page 2: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

2 / 36

Na Aula Anterior …

• Vimos a máquina de estados da Cleo

Page 3: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

3 / 36

BLOCO

DE

CONTROLE

BLOCO

DE

DADOS

µinst IRn z c

n z c IRµinst

ck

ck

reset

ce

rw

dados

endereços MEMÓRIAdados e programa

CPU

ck

reset

PROGRAMA ARMAZENADO

- dados

- instruçõesv

v

Arquitetura Cleópatra - Von Neumann

Page 4: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

4 / 36

Bloco de Dados

MAR

MDR

IR

RS

PC

AC

ULA

BUS_B BUS_A0mux1

sel

escreve na memória

lê da

memória

ADDRESS

DATAMEM

Codificação

de escrita

Codificação de

leitura

w

r

ulnz

lcv

CERW

CE RW

NZCV

Bloco de

Dados

n z c IRµinst

ck

reset

v

Page 5: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

5 / 36

Bloco de Controle

CPU

BLOCO

DE

CONTROLE

BLOCO

DE

DADOS

µinst IRn z c

n z c IRµinst

ck

ck

reset

ce

rw

dados

endereços MEMÓRIAdados e programa

ck

reset

v

v

Page 6: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

6 / 36

Diagrama de Estados da Cleo

Page 7: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

7 / 36

Modo de Endereçamento

• Imediato

– Operando é o próprio dado

– Usado para representar constantes

• Ex.: Número 45 do trecho de código C

• Direto

– Operando é endereço do dado

– Usado para representar variáveis

• Ex. Variável entrada do trecho de código C

• Indireto

– Operando é endereço do endereço do dado

– Usado para representar ponteiros

• Ex. Ponteiro *p (que aponta para valor) do trecho de código C

int valor;

int *p = &valor;

int entrada = 8;

*p = entrada + 45;

Page 8: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

8 / 36

Descrição das Instruções

Mnemônico Operação

NOT Complementa (inverte) todos os bits de AC.

STA oper Armazena AC na memória dada por oper.

LDA oper Carrega AC com conteúdos de memória da posição dada por oper.

ADD oper Adiciona AC ao conteúdo da memória dada por oper.

OR oper Realiza OU lógico do AC com conteúdo da memória dada por oper.

AND oper Realiza E lógico do AC com conteúdo da memória dada por oper.

JMP oper PC recebe dado especificado por oper (desvio incondicional).

JC oper Se C=1, então PC recebe valor dado por oper (desvio condicional).

JV oper Se V=1, então PC recebe valor dado por oper (desvio condicional).

JN oper Se N=1 então PC recebe valor dado por oper (desvio condicional).

JZ oper Se Z=1, então PC recebe valor dado por oper (desvio condicional).

JSR oper RS recebe conteúdo de PC e PC recebe dado de oper (subrotina).

RTS PC recebe conteúdos de RS (retorno de subrotina).

HLT Suspende processo de busca e execução de instruções.

Page 9: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

9 / 36

Meu Primeiro Prog Assembly

• Linguagem alto nível (e.g. C, JAVA)

– *C = A+3

• Assembly da Cleo

– LDA A

– ADD #3

– STA C,I

Page 10: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

10 / 36

Na Aula de Hoje …

• Exemplos dos outros modos de endereçamento

• Exemplo de IF

• Exemplo de LAÇO

• Exemplo de programa completo

Page 11: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

11 / 36

Estrutura de um Programa Assembly Completo

Programa

Dados

CÓDIGO

Page 12: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

12 / 36

Estrutura de um Programa Assembly Completo

Programa

Dados

CÓDIGO

corpo do programa

variáveis

início do corpo do programa (0)

início da área de dados (90H)

Page 13: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

13 / 36

Estrutura de um Programa Assembly Completo

Programa

Dados

CÓDIGO MEMÓRIA

Montador

Page 14: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

14 / 36

Estrutura de um Programa Assembly Completo

• .CODE

– ORG #00H início do código na posição 0 de memória

– ...

• .ENDCODE:

– fim da área de código

• .DATA

– ORG #90H início das variáveis na posição 90H de memória

– END1 : DB #30H inicialização de variáveis

– END2 : DB #END4 inicialização de variáveis

– END3 : DB #00H inicialização de variáveis

– END4 : DB #5BH inicialização de variáveis

• .ENDDATA

– fim da área de dados

Page 15: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

15 / 36

Programa Subtração

Linguagem de alto nível

C = A - B

ASSEMBLY DA CLEÓPATRA

.code

lda B

not

add #01h

add A

sta C

hlt

.endcode

.data

A: db #04h

B: db #01h

C: db #00h

.enddata

AC

Page 16: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

16 / 36

Programa Subtração

Linguagem de alto nível

C = A - B

ASSEMBLY DA CLEÓPATRA

.code

lda B

not

add #01h

add A

sta C

hlt

.endcode

.data

A: db #04h

B: db #01h

C: db #00h

.enddata

01h

AC

Page 17: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

17 / 36

Programa Subtração

Linguagem de alto nível

C = A - B

ASSEMBLY DA CLEÓPATRA

.code

lda B

not

add #01h

add A

sta C

hlt

.endcode

.data

A: db #04h

B: db #01h

C: db #00h

.enddata

FEh

AC

Page 18: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

18 / 36

Programa Subtração

Linguagem de alto nível

C = A - B

ASSEMBLY DA CLEÓPATRA

.code

lda B

not

add #01h

add A

sta C

hlt

.endcode

.data

A: db #04h

B: db #01h

C: db #00h

.enddata

FFh

AC

Page 19: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

19 / 36

Programa Subtração

Linguagem de alto nível

C = A - B

ASSEMBLY DA CLEÓPATRA

.code

lda B

not

add #01h

add A

sta C

hlt

.endcode

.data

A: db #04h

B: db #01h

C: db #00h

.enddata

03h

AC

Page 20: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

20 / 36

Programa Subtração

Linguagem de alto nível

C = A - B

ASSEMBLY DA CLEÓPATRA

.code

lda B

not

add #01h

add A

sta C

hlt

.endcode

.data

A: db #04h

B: db #01h

C: db #03h

.enddata

03h

AC

Page 21: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

21 / 36

Programa Subtração

Linguagem de alto nível

C = A - B

ASSEMBLY DA CLEÓPATRA

.code

lda B

not

add #01h

add A

sta C

hlt

.endcode

.data

A: db #04h

B: db #01h

C: db #03h

.enddata

03h

AC

Page 22: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

22 / 36

Programa XOR

• Tabela Verdade• Representação gráfica

.code

lda A

not

and B

sta Y

lda B

not

and A

or Y

sta Y

hlt

.endcode

.data

A: db #33h

B: db #91h

Y: db #00h

.enddata

Page 23: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

23 / 36

Programa XOR

Y=A BY=33h 91hY=00110011 10010001Y= ?????

.code

lda A

not

and B

sta Y

lda B

not

and A

or Y

sta Y

hlt

.endcode

.data

A: db #33h

B: db #91h

Y: db #00h

.enddata

Page 24: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

24 / 36

Programa XOR

Y=A BY=33h 91hY=00110011 10010001Y= 10100010 = A2h

.code

lda A

not

and B

sta Y

lda B

not

and A

or Y

sta Y

hlt

.endcode

.data

A: db #33h

B: db #91h

Y: db #00h

.enddata

Page 25: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

25 / 36

Programa XOR

!A

.code

lda A

not

and B

sta Y

lda B

not

and A

or Y

sta Y

hlt

.endcode

.data

A: db #33h

B: db #91h

Y: db #00h

.enddata

Page 26: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

26 / 36

Programa XOR

.code

lda A

not

and B

sta Y

lda B

not

and A

or Y

sta Y

hlt

.endcode

.data

A: db #33h

B: db #91h

Y: db #00h

.enddata

!AY=!AB

Page 27: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

27 / 36

Programa XOR

.code

lda A

not

and B

sta Y

lda B

not

and A

or Y

sta Y

hlt

.endcode

.data

A: db #33h

B: db #91h

Y: db #00h

.enddata

!AY=!AB

!B

Page 28: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

28 / 36

Programa XOR

.code

lda A

not

and B

sta Y

lda B

not

and A

or Y

sta Y

hlt

.endcode

.data

A: db #33h

B: db #91h

Y: db #00h

.enddata

!AY=!AB

!B AC=A!B

Page 29: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

29 / 36

Programa XOR

.code

lda A

not

and B

sta Y

lda B

not

and A

or Y

sta Y

hlt

.endcode

.data

A: db #33h

B: db #91h

Y: db #00h

.enddata

!AY=!AB

!B AC=A!BAC=AC+Y

Page 30: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

30 / 36

Programa XOR

.code

lda A

not

and B

sta Y

lda B

not

and A

or Y

sta Y

hlt

.endcode

.data

A: db #33h

B: db #91h

Y: db #00h

.enddata

!AY=!AB

!B AC=A!B

Y = AC

Y=A BY=00110011 10010001Y=10100010 = A2h

AC=AC+Y

Page 31: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

31 / 36

IF-THEN-ELSE em Assembly

.code

lda in

jz jp_then

lda #01h

jmp end_if

jp_then:

lda #02h

end_if:

sta s

hlt

.endcode

.data

in: db #01h

s: db #00h

.enddata

-O que faz esse programa ?-Qual é o valor de ‘s’ ao final do programa ?

Page 32: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

32 / 36

IF-THEN-ELSE em Assembly

.code

lda in

jz jp_then

lda #01h

jmp end_if

jp_then:

lda #02h

end_if:

sta s

hlt

.endcode

.data

in: db #01h

s: db #00h

.enddata

if in == 0 thens = 2

elses = 1

Page 33: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

33 / 36

LAÇO em Assembly

.code

lda cnt

inicio_laco:

jz fim_laco

lda s

add s

sta s

lda cnt

add #0ffh

sta cnt

jmp inicio_laco

fim_laco:

hlt

.endcode

.data

cnt: db #05h

s: db #01h

.enddata

-O que faz esse programa ?-Qual é o valor de ‘s’ ao final do programa ?

Page 34: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

34 / 36

LAÇO em Assembly

.code

lda cnt

inicio_laco:

jz fim_laco

lda s

add s

sta s

lda cnt

add #0ffh

sta cnt

jmp inicio_laco

fim_laco:

hlt

.endcode

.data

cnt: db #05h

s: db #01h

.enddata

int cnt = 5;int s = 1;while(cnt!=0){

s = s + scnt--;

}

s == 32

Page 35: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

35 / 36

Exercício em Sala de Aula

• Traduza os seguinte trechos de código C em Assembly (Cleo):

1. if (a<b) then

s--;

else

s++;

2. for(i=0;i<5;i++)

s = s + 3;

3. for(i=0;i<=5;i++)

s = s + 3;

4. for(i=5;i>=0;i--)

s = s + 3;

Page 36: Assembly - Escola Politécnicaemoreno/undergraduate/SI/orgarq/class_files/Aula09.pdfNa Aula de Hoje … • Exemplos dos ... Estrutura de um Programa Assembly Completo ... –fim da

36 / 36

Resumo

• Descrever em Assembly estruturas tais como

– If-then-else, laço, programa completo

O trabalho sobre assembly terá exercícios

semelhantes aos desta aula !!!