22
MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 Organização Básica de Computadores e Linguagem de Montagem MC404 – 2s2009 MONTAGEM 2010 Prof. Paulo Cesar Centoducatte Prof. Mario Lúcio Côrtes Prof. Ricardo Pannain

mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Page 1: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

MC404

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE

MONTAGEM

5 - 1Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

MONTAGEM

2010

Prof. Paulo Cesar CentoducatteProf. Mario Lúcio Côrtes

Prof. Ricardo Pannain

Page 2: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

MC404

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

5 - 2Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

“Macros,Montagem Condicional de Código

e Uso da EEPROM”

Page 3: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

MacrosSumário

• Macros

• Montagem Condicional de Código

• Uso da EEPROM

5 - 3Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

Page 4: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Macro

Código que é replicado a cada chamada, com parâmetros substituídos

Exemplo de definição de macro

.MACRO ADDI ;(Rd, k)subi @0, -(@1)

5 - 4Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

subi @0, -(@1).ENDMACRO

Exemplo de chamada

addi r16, 0xA0addi r20, 0x77

Page 5: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Macros

; Troca o conteúdo de dois registradores sem usar variável auxiliar!:

.MACRO SWAP ;(Rd, Rs)eor @0, @1eor @1, @0

R0 R1

------------------------------------

R0 R1

R0⊕R1 R1

R0⊕R1 (R0⊕R1) ⊕R1

R0⊕R1 R0

(R0⊕R1) ⊕R0 R0

5 - 5Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

eor @1, @0eor @0, @1

.ENDMACRO

(R0⊕R1) ⊕R0 R0

R0 ⊕(R0⊕R1) R0

R1 R0

OBS: propriedades do XOR

R0⊕(R1⊕R2) = (R0⊕R1)⊕R2

R0 ⊕0=R1

R0 ⊕R1 = R1 ⊕R0

Page 6: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Macro

;Soma uma constante de 8 bits a um registrador

.MACRO ADDI ;(Rd, k)subi @0, -(@1)

.ENDMACRO

5 - 6Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

; Soma uma constante de 16 bits a um par de ;registradores (X, Y ou Z)

.MACRO ADDIW ;(RdL:RdH, k)subi @0L, LOW(-@1) sbci @0H, HIGH(-@1)

.ENDMACRO

Page 7: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Macro – Montagem Condicional

; I/O.macro input.if @1 < 0x40

in @0, @1.else

5 - 7Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

.elselds @0, @1

.endif.endmacro

Page 8: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Macro – Montagem Condicional

; I/O

.macro output.if @0 < 0x40

out @0, @1.else

5 - 8Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

.elsests @0, @1

.endif.endmacro

Page 9: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Macro – Montagem Condicional

; Branch if Bit in I/O-Register is Set.macro bbis ;port,bit,target.if @0 < 0x20

sbic @0, @1rjmp @2

.elif @0 < 0x40in zl, @0

5 - 9Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

in zl, @0sbrc zl, @1rjmp @2

.elselds zl, @0sbrc zl, @1rjmp @2

.endif.endmacro

Page 10: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Macro e Montagem Condicional

Branch if Bit in I/O-Register is Cleared.macro bbic ;port,bit,target.if @0 < 0x20

sbis @0, @1rjmp @2

.elif @0 < 0x40in zl, @0

5 - 10Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

in zl, @0sbrs zl, @1rjmp @2

.elselds zl, @0sbrs zl, @1rjmp @2

.endif.endmacro

Page 11: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Montagem Condicional

.EQU clock=40000000

.IF clock>4000000.EQU divider=4

.ELSE .EQU divider=2

.ENDIF

5 - 11Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

.ENDIF

Mais exemplos de uso de IF e ENDIF

Page 12: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Macros Aninhadas

.macro mult8 ; macro para multiplica dois números ; de 8 bits sem sinal

; Parâmetros de entrada: ; @0 e @1: dois registradores quaisquer ; (números para multiplcar)

; destroi: r0, r1, @2

5 - 12Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

; destroi: r0, r1, @2

mul @0,@1.endmacro

Page 13: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Macros Aninhadas

.macro callmult8 ; macro para multiplicar dois números ; de 8 bits sem sinal

; Parâmetros de entrada: ; @0 e @1: dois registradores quaisquer ; (números para multiplcar); @2 um dos pares X, Y ou Z: endereço na RAM ; para colocar o produto no formato little endian

5 - 13Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

; para colocar o produto no formato little endian; destroi: r0, r1, @2

mult8 @0,@1 ; invoca a macro mult8 repassando os ; parametros @0 e @1

st @2+,r0st @2, r1

.endmacro

Page 14: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Uso de Macro

RESET: ; início do programaldi r16,low(RAMEND) ; fim da RAM: definido em

; m88def.incout SPL,r16 ; inicializa Stack Pointerldi r16,high(RAMEND)out SPH, r16ldi yh, high(SRAM_START) ; Área de RAM onde será

5 - 14Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

ldi yh, high(SRAM_START) ; Área de RAM onde será ; colocado o resultado

ldi yl, low(SRAM_START)ldi r16,2ldi r17,5callmult8 r16,r17, y ; Expande as duas macros

rjmp PC

Page 15: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Uso da EEPROM

• EEPROM Data Memory

• The ATmega48/88/168 contains 256/512/512 bytes of data EEPROM memory.

• It is organized as a separate data space, in which single bytes can be read and written.

• The EEPROM has an endurance of at least 100,000 write/erase cycles.

5 - 15Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

write/erase cycles.• The access between the EEPROM and the CPU is

described in the following, specifying the:

• EEPROM Address Registers ���� EEAR• EEPROM Data Register ���� EEDR• EEPROM Control Register ���� EECR

Page 16: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

EEPROM

5 - 16Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

Page 17: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

EEPROM

5 - 17Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

Page 18: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

EEPROM

5 - 18Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

Page 19: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

EEPROM

5 - 19Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

Page 20: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

EEPROM

5 - 20Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

Page 21: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

EEPROM

5 - 21Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009

Page 22: mc404 05 2s10ducatte/mc404/2010/Slides/mc404_05_2… · MC404 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 5 - 1 MC404 – 2s2009 Organização Básica de Computadores

Uso da EEPROM

e2prom-rotinas.asm

5 - 22Organização Básica de Computadores e Linguagem de MontagemMC404 – 2s2009