Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Tema 9: El processador. EduP12, Apuntes de Ingeniería de Telecomunicaciones

Asignatura: Fonaments d'Informàtica, Profesor: , Carrera: Enginyeria Electrònica de Telecomunicació, Universidad: UAB

Tipo: Apuntes

2015/2016

Subido el 22/01/2016

theraulin12
theraulin12 🇪🇸

2.3

(3)

36 documentos

1 / 17

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
ComputerComputerFoundationsFoundations
onEduP12onEduP12
JoanOliver
Dept.deMicroelectrònicsiSistemesElectrònics
UniversitatAutònomadeBarcelona
Novembre’15
1VonNeumannArchitecture
2HarvardArchitecture
3EduP12processor
OutlineOutline
4EduP12CPU
5CPUoperations:ADD,BRMI,INC,LDI,CPI,RJMP
6Operationsexamples
7EduP12instructionsetreview
8Whatinstructions?Whatdotheydo?Instructionset
9AsmEduP12
10Instructioncycleor,howEduP12works?
11
The complete EduP12 processor
Joan Oliver 2
11
The
complete
EduP12
processor
12Work ing withdata
13Addressingmodes
14Subroutines
15Input/outputinEduP12
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Vista previa parcial del texto

¡Descarga Tema 9: El processador. EduP12 y más Apuntes en PDF de Ingeniería de Telecomunicaciones solo en Docsity!

ComputerComputer FoundationsFoundations

onon EduP12EduP

Joan Oliver

Dept. de Microelectrònics i Sistemes Electrònics

Universitat Autònoma de Barcelona

Novembre’

1 ‐ Von Neumann Architecture

2 ‐ Harvard Architecture

3 ‐ EduP12 processor

OutlineOutline

4 ‐ EduP12 CPU

5 ‐ CPU operations: ADD, BRMI, INC, LDI, CPI, RJMP

6 ‐ Operations examples

7 ‐ EduP12 instruction set review

8 ‐ What instructions? What do they do?  Instruction set

9 ‐ AsmEduP

10 ‐ Instruction cycle or, how EduP12 works?

11 ‐ The complete EduP12 processor

Joan Oliver 2

11 The complete EduP12 processor

12 ‐ Working with data

13 ‐ Addressing modes

14 ‐ Subroutines

15 ‐ Input/output in EduP

  • L’ arquitectura del computador en defineix el seu comportament funcional
  • El model bàsic el va establir l’any 1945 von Neumann, arquitectura que encara avui en dia

és vàlida en molts computadors

  • La màquina von Neumann és capaç d’executar un conjunt d’instruccions elementals

VonVon NeumannNeumann ArchitectureArchitecture (I)(I)

a àqu a vo eu a és capaç e ecuta u co ju t st ucc o s e e e ta s

(instruccions màquina) que s’han de guardar en la memòria principal i que poden ser

llegides i executades.

  • Consta de les unitats funcionals
    • Memòria principal
    • Unitat Central de Procés (CPU)
      • Datapath: unitat aritmètico lògica i regsitres
      • Unitat de control
    • Unitat d’entrada/sortida (perifèrics)

CPU

Joan Oliver 3

Registres

UAL

Unitat de control

Memòria principal

CP

Stack

RI

Status

Unitat d’E/S

Perifèric

Perifèric

Perifèric

Data

Path

VonVon NeumannNeumann ArchitectureArchitecture (II)(II)

  • Memòria principal constituïda per un conjunt de cel·les idèntiques (nombre fix de bits) organitzades de forma consecutiva i amb adreça específica. Instruccions i dades s’obtenen de la memòria a través del procés de lectura i s’hi guarden amb el procés d’escriptura. L’arquitectura von Neumann es caracteritza per compartir en el mateix espai de memòria programes i dades
  • UALUAL  U iUnitat que permet realitzar operacions concretes sobre dades. Les dades (operands) li i b d d L d d ( d ) provenen de la memòria principal o de registres que guarden dades de forma temporal
  • Unitat de control  Encarregada de controlar (a través dels senyals de control) les accions que es realitzen en el processador: lectura de les instruccions de memòria, execució de les instruccions i control del seqüenciament
  • El conjunt unitat aritmètico/lògica, registres i unitat de control forma la Unitat Central de Procés (CPU).
  • La comunicació amb el computador es realitza a través dels perifèrics.
    • Els perifèrics són dispositius físics que permeten la comunicació amb el computador

... comunicació home-màquina, en les que les persones interaccionen amb el computador

Joan Oliver 4

q , q p p

... comunicació màquina-màquina, en les que els computadors interaccionen entre ells

... comunicació màquina-home, en les que el computador interacciona amb les persones

  • Cada perifèric imposa els seus propis requisits. Per exemple, la comunicació del computador amb l’home

es sol fer mitjançant terminals i impressores, fet que obliga a fer operacions de traducció donat que els

llenguatges emprats són totalment divergents (el computador treballa a nivell digital).

  • Un altre aspecte a tenir en compta és la velocitat de transferència de dades que sol tenir un impacte gran

en el funcionament del computador que normalment és molt més ràpid que no pas, per exemple, una

impressora.

  • El maneig de la informació entre computador i perifèric pot ser feta pel mateix processador o per

dispositius específics d’entrada/sortida que alleugereixen al processador d’aquestes tasques.

 Processor structure: ◦ CPU (Data Path + Control Unit), with a finite state machine control unit

◦ Read/write program memory. During the program running, the l b d

EduP12EduP12 processorprocessor (II)(II)

memory can only be read.

◦ Read/write data memory. The stack starts at the end of the memory, and grows towards the beginning. ◦ Input/output registers. Each peripheral communicates with the CPU using registers. Each input/output register is accessed using a specific address.

*Note: original pictures are written in Catalan!^ Joan Oliver^7

EduP12EduP12 CPUCPU

Joan Oliver 8

CPUCPU operation:operation: ADD:ADD: RdRd  RdRd ++ RsRs

ADD instruction code: 0000 10sd dddd ssss

Operands

Arithmetic 2 op’s format Opcode Destination Source

p

Joan Oliver 9

CPUCPU operation:operation: BRMI:BRMI: PCPC  PC+1+kPC+1+k

 Next instruction is a conditional branch.  In fact, stored program corresponds to:

loop: ADD R17, R

BRMI loop

BRMIBRMI instructioninstruction

Branch format Opcode Address (value k) Cond

Operands C

Z

N

Joan Oliver 10

 As the instruction has the relative 9 ‐bit k address jump, the program can jump to a

position that is from +2^8 ‐ 1 to ‐ 28 away from the actual memory position.

 From the figure, we can see that the jump is relative to ‐ 2 position.

 In this instruction the activity of the processor unit is as follows:

Branch format Opcode Address (value k) Cond. N

V

I

Arithmetic‐logical instructions ◦ Double register: MOV, ADD, ADC, SUB, SBC, CP, CPC, AND, OR, EOR, TST ◦ Simple register: INC, DEC, COM, NEG, CLR, ASR, LSR, LSL, ROR, ROL, SWAP ◦ Immediate: LDI, ADDI, ANDI, ORI, SUBI, SBCI, CPI, TSTI

EduP12EduP12 InstructionInstruction setset reviewreview

Data transfer instructions ◦ Program memory:  Load instructions: LPM, LPM+ ◦ Data memory:  Load instructions: LDS, LD, LD+, LD‐, LDD  Store instructions: STS, ST, ST+, ST‐, STD  Jump instructions ◦ Unconditional: RJMP, RCALL, RET, RETI. ◦ Indirect conditional: IJMP, ICALL.

Joan Oliver 13

◦ Conditional. BRBC, BRBS, BRCC , BRCS, BRSH, BRLO, BRZE, BRNZ, BRNE, BREQ, BRMI, BRPL, BRVC, BRVS, BRIE, BRID.  Input/output instructions: IN, OUT  Status register instructions: BSET, BCLR, SEI, CLI  Other instructions ◦ Stack: POP, PUSH, SAVE, RESTORE. ◦ Do nothing: NOP.

WhatWhat instructions?instructions? WhatWhat dodo theythey do?do?  InstructionInstruction setset

Instruction State Code Words Cycles

Double register arithmetic‐logic instructions

MOV Rd, Rs AND Rd, Rs ADC Rd, Rs ADD Rd, Rs

Rd  Rs Rd  RdRs Rd  Rd+Rs+C Rd  Rd+Rs

Move Logic and Add with carry Add

C, Z, N, V

C, Z, N, V

C, Z, N, V

0000 01sd dddd ssss 0010 00sd dddd ssss 0000 11sd dddd ssss 0000 10sd dddd ssss

ADD Rd, Rs 3 CP Rd, Rs CPC Rd, Rs EOR Rd, Rs OR Rd, Rs SBC Rd, Rs SUB Rd, Rs TST Rd, Rs

Rd  Rd+Rs ‐ Rd‐Rs ‐ Rd‐(Rs+C) Rd  RdRs Rd  RdRs Rd  Rd‐(Rs+C) Rd  Rd‐Rs ‐  RdRs

Add Compare Compare with carry Logic or‐exclusive Logic or Subtract with carry Subtract Bit to bit test

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

0000 10sd dddd ssss 0001 10sd dddd ssss 0001 11sd dddd ssss 0010 10sd dddd ssss 0010 01sd dddd ssss 0001 01sd dddd ssss 0001 00sd dddd ssss 0010 11sd dddd ssss

Simple register arithmetic‐logic instructions

ASR Rd CLR Rd COM Rd DEC Rd

Rd  Rd(11)&Rd(11...1), CRd(0) Rd  0 (EOR Rd, Rd) Rd  (2 n‐1)‐Rd Rd  Rd 1

Arithmetic right shift Clear Complement (C1) Decrement

C, Z, N, V

C, Z, N, V

C, Z, N, V

C Z N V

0011 ‐‐0d dddd 1100 EOR Rd, Rd 0011 ‐‐0d dddd 1010 0011 0d dddd 1001

Joan Oliver 14

DEC Rd INC Rd LSL Rd LSR Rd NEG Rd ROL Rd ROR Rd SWAP Rd

Rd  Rd‐ 1 Rd  Rd+ Rd  Rd(10...0) & 0, CRd(11) Rd  0&Rd(11...1), CRd(0) Rd  2 n‐Rd RdRd(10...0) & C, CRd(11) Rd  C & Rd(11...1), C Rd(0) Rd  Rd(3...0) & Rd(11...4)

Decrement Increment Left shift Right shift Negation(C2) Left rotation Right rotation 4 ‐bit right rotation without carry

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

Z, N, V

0011 ‐‐0d dddd 1001 0011 ‐‐0d dddd 1000 ADD Rd, Rd 0011 ‐‐0d dddd 1101 0011 ‐‐0d dddd 1011 0011 ‐‐0d dddd 1111 0011 ‐‐0d dddd 1110 0011 –1 d dddd ‐‐‐‐

Instruction Status Code Words Cycles

Immediate instructions (double word)

LDI Rd, k ADDI Rd, k ANDI Rd, k

Rd  k Rd  Rd+k Rd  Rdk

Load with immediate Add with immediate Logical and with immediate

C, Z, N, V

C, Z, N, V

0011 ‐‐‐d dddd 0000 0011 ‐‐‐d dddd 0001 0011 ‐‐‐d dddd 0010

WhatWhat instructions?instructions? WhatWhat dodo theythey do?do?  InstructionInstruction setset (II)(II)

ANDI Rd, k CPI Rd, k ORI Rd, k SBCI Rd, k SUBI Rd, k TSTI Rd, k

Rd  Rdk ‐  Rd‐k Rd  Rdk Rd  Rd‐(k+C) Rd  Rd‐k ‐  Rdk

Logical and with immediate Compare with immediate Logical or with immediate Subtract with carry with immediate Subtract with immediate And test with immediate

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

C, Z, N, V

0011 d dddd 0010 0011 ‐‐‐d dddd 0110 0011 ‐‐‐d dddd 0011 0011 ‐‐‐d dddd 0101 0011 ‐‐‐d dddd 0100 0011 ‐‐‐d dddd 0111

Conditional jump instructions

BRBC b, k BRBS b, k BRCC k BRCS k ...BRSH k

Si SR(s)=0 aleshores PC  PC+k+ Si SR(s)=1 aleshores PC  PC+k+ Si C=0 aleshores PC  PC+k+ Si C=1 aleshores PC  PC+k+ Si C=0 aleshores PC  PC+k+

Jump if Status Register bit b is 0 Jump if Status Register bit b is 1 Jump if carry is 0 Jump if carry is 1 Jump if equal or greater

1111 kkkk kkkk kbbb 1110 kkkk kkkk kbbb 1111 kkkk kkkk k 1110 kkkk kkkk k 1111 kkkk kkkk k

Joan Oliver 15

...BRLO k ...BRNZ k, BRNE k ...BRZE k, BREQ k ...BRPL k ...BRMI k BRVC k BRVS k BRID k BRIE k

Si C=1 aleshores PC  PC+k+ Si Z=0 aleshores PC  PC+k+ Si Z=1 aleshores PC  PC+k+ Si N=0 aleshores PC  PC+k+ Si N=1 aleshores PC  PC+k+ Si V=0 aleshores PC  PC+k+ Si V=1 aleshores PC  PC+k+ Si I=0 aleshores PC  PC+k+ Si I=1 aleshores PC  PC+k+

Jump if minor Jump if different Jump if equal Jump if positive Jump if negative Jump if overflow cleared Jump if overflow set Jump If interruption disabled Jump if interruption enabled

1110 kkkk kkkk k 1111 kkkk kkkk k 1110 kkkk kkkk k 1111 kkkk kkkk k 1110 kkkk kkkk k 1111 kkkk kkkk k 1110 kkkk kkkk k 1111 kkkk kkkk k 1110 kkkk kkkk k

WhatWhat instructions?instructions? WhatWhat dodo theythey do?do?  InstructionInstruction setset (III)(III)

Instruction Code Words Cycles

Unconditional jump instructions

ICALL z (o y o x ) IJMP z (o y o x ) RCALL k RJMP k

Pila PC, PC  Z, SP  SP + PC  Z Pila PC, PC  PC + k+1, SP  SP + PC  PC + k+

Indirect jump to subroutine Indirect jump Indirect call to subroutine Relative jump

0110 zyx‐ ‐‐‐‐ 0011 0110 zyx‐ ‐‐‐‐ 0010 0101 kkkk kkkk kkkk 0100 kkkk kkkk kkkk

RJMP k 3 RET RETI

PC  PC + k+ SP  SP‐1, PC  pila SP  SP‐1, PC  pila

Relative jump Return from subroutine Return from ISR

0100 kkkk kkkk kkkk 0110 000 ‐ ‐‐‐‐ 0100 0110 000 ‐ ‐‐‐‐ 0101

Load instructions (with memory) LPM Rd, Z (o Y o X) LPM Rd, +Z (o Y o X) LPM Rd, ‐Z (o Y o X)

Rd  mem(Z), (o Y o X) Z  Z+1, Rd  mem(Z), (o Y o X) Z  Z‐1, Rd  mem(Z), (o Y o X)

Immediate load Indirect load with pre‐increment Indirect load with pre‐decrement

1100 zyxd dddd 1100 1100 zyxd dddd 1101 1100 zyxd dddd 1111

Load/store instructions (data memory)

LDS Rd, K LD Rd, Z (o Y o X) LD Rd, +Z (o Y o X) LD Rd, ‐Z (o Y o X) LDD Rd Z

Rd  (K) Rd  mem(Z), (o Y o X) Z  Z+1, Rd  mem(Z), (o Y o X) Z  Z‐1, Rd  mem(Z), (o Y o X) Rd  (Z )

Direct load (double word) Indirect load Indirect load with pre‐increment Indirect load with pre‐decrement I di l d i h di l i Z

1100 ‐‐‐d dddd 0100 1100 zyxd dddd 0000 1100 zyxd dddd 0001 1100 zyxd dddd 0011 1000 d dddd

Joan Oliver 16

LDD Rd, Z+q LDD Rd, Y+q STS K, Rs ST Z (o Y o X) , Rs ST +Z (o Y o X), Rs ST ‐Z (o Y o X), Rs STD Z+q, Rs STD Y+q, Rs

Rd  mem(Z+q) Rd  mem(Y+q) mem(K)  Rs mem(Z)  Rs, (o Y o X) Z  Z+1, mem(Z)  Rs, (o Y o X) Z  Z‐1, mem(Z)  Rs, (o Y o X) (Z+q)  Rs (Y+q)  Rs

Indirect load with displacement in Z Indirect load with displacement in Y Direct store (double word) Indirect store Indirect store with pre‐increment Indirect store with pre‐decrement Indirect store with displacement in Z Indirect store with displacement in Y

1000 qqqd dddd qqqq 1010 qqqd dddd qqqq 1101 ‐‐‐d dddd 0100 1101 zyxd dddd 0000 1101 zyxd dddd 0001 1101 zyxd dddd 0011 1001 qqqd dddd qqqq 1011 qqqd dddd qqqq

asmEDUp12:asmEDUp12: ExampleExample

PORTE

PORTA PORTB

‐‐ SWITCHES IN LEDS

.DEF tmp = R16; begin: RCALL wait; IN tmp, PORTE; ANDI tmp, 0x002;

BRZE begin;

( 0, "0101000000000111"), ‐‐ 0x5007 ‐ rcall 7 ( 1, "0111000100000010"), ‐‐ 0x7102 ‐ in r16 000010 ( 2, "0011000100000010"), ‐‐ 0x3102 ‐ andi r16 0x ( 3, "0000000000000010"), ‐‐ 0x ( 4, "1110111111011001"), ‐‐ 0 xEFD9 ‐ brze ‐ 5

Joan Oliver 19

R begin; IN tmp, PORTA; OUT PORTB, tmp; RJMP begin; ‐‐Bucle d'espera wait: LDI tmp, 0xFFF;

loop: DEC tmp; BRNZ loop; RET;

( 4, 0 0 00 ), 0x F 9 br e 5 ( 5, "0111000100000000"), ‐‐ 0x7100 ‐ in r16 000000 ( 6, "0111100100000001"), ‐‐ 0x7901 ‐ out 000001 r ( 7, "0100111111111000"), ‐‐ 0x4FF8 ‐ rjmp ‐ 8

( 8, "0011000100000000"), ‐‐ 0x3100 ‐ ldi r16 0xfff ( 9, "0000111111111111"), ‐‐ 0xFFF (10, "0011000100001001"), ‐‐ 0x3109 ‐ dec r (11, "1111111111110001"), ‐‐ 0xFFF1 ‐ brnz ‐ 2 (12, "0110000000000100"), ‐‐ 0x6004 – ret

InstructionInstruction cyclecycle or,or, howhow EduP12EduP12 works?works?

Joan Oliver 20

InstructionInstruction cyclecycle or,or, howhow EduP12EduP12 works?works?  ADDADD Rd,Rd, RsRs

ADD instruction code: R17  R17+ R 0000 10sd dddd ssss0000 1011 0001 0000

Cicle PC MAR IR R17 R16 State OpA OpB OpCod

Joan Oliver 21

Cicle PC MAR IR R17 R16 State OpA OpB OpCod

Starting 100 ‐ ‐ 0x300 0x500 0b00000 ‐ ‐ ‐

Cycle 1 100 100 ‐ 0x300 0x500 0b00000 ‐ ‐ ‐

Cycle 2 101 100 0x0B10 0x300 0x500 0b00000 PC ‐ INC

Cycle 3 101 100 0x0B10 0x800 0x500 0b01100 Rd Rs ADD

InstructionInstruction cyclecycle or,or, howhow EduP12EduP12 works?works?  BRMIBRMI

 Next instruction is a conditional branch.

 In fact, stored program corresponds to:

loop: ADD R17, R16 0x

BRMI loop

 BRMI instruction format:

Joan Oliver 22

Cicle PC MAR IR R17 R16 Estat OpA OpB CodOp Inicial 101 100 0x0B10 800 500 0b01100 ‐ ‐ ‐ Cicle 1 101 101 0x0B10 800 500 0b01100 ‐ ‐ ‐ Cicle 2 102 101 0xEFF2 800 500 0b01100 PC ‐ INC Cicle 3()* 100 101 0xEFF2 800 500 0b01100 PC k ADD

 Implicit.: RET, RETI; …

AddressingAddressing modesmodes

 Immediate: ADDI, LDI, …

 Direct:

◦ In register: ADD, …

◦ Input/output memory:

IN Rd, PORT

◦ In data memory:

LDS Rd, 0x

 0x123 = effective address

 Indirect:

Joan Oliver 25

◦ to data memory using register

LD Rd, ‐Y  two actions

i) Y  Y‐ 1

ii) Rd  dRAM

◦ to program memory using Z register

LPM Rd, Z

AddressingAddressing modesmodes (II)(II)

 Relative: Indirect with displacement

 Exemple: LDD Rd,Y+q

 Relative: Indirect with displacement

to program counter.

 Example: RJMP disp

Joan Oliver 26

EduP12:EduP12: WorkingWorking withwith datadata  InstructionsInstructions LD/STLD/ST

Direct (double word)

Direct load Direct store

LDS Rd, K STS K, Rs

Rd  (K) mem(K)  Rs

1100 ---d dddd 0100 1101 ---d dddd 0100

Indirect

Indirect load I di t t

LD Rd, Z (o Y o X) ST Z ( Y X) R

Rd  mem(Z), (o Y o X) (Z)  R ( Y X)

1100 zyxd dddd 0000 1101 d dddd 0000

Direct format Opcode Source/Destination

Operands

K

Joan Oliver 27

Indirect format Opcode Destination / [ ] Source / [ ]

Operands

Indirect store ST Z (o Y o X) , Rs mem(Z)  Rs, (o Y o X) 1101 zyxd dddd 0000

SubroutinesSubroutines

RET: 0110 0000 ---- 0100

RCALL K: 0101 KKKKKKKKKKKK

Joan Oliver 28

Call subroutine Opcode Address

Operands

Return from subroutine Opcode

Input/outputInput/output inin EduP12:EduP12: PeripheralsPeripherals

 Input port  Output port

Let’s be the program…

( 0, "0111 0001 1101 0000"), ‐‐ 0x71D0 ‐ IN X, PORTA

Joan Oliver 31

( 1, "0111 1001 1101 0001"), ‐‐ 0x79D1 ‐ OUT PORTB, X

( 2, "0100 1111 1111 1101"), ‐‐ 0x4FF9 ‐ RJMP inp (‐3)

( 3, "0000 0000 0000 0000"), ‐‐ 0x0000 ‐ NOP

What does it do?

What are the addresses of the ports?

ExamplesExamples

 Es dóna un determinat tros de programa que realitza una rutina de retard (entre parèntesis hi ha la posició

de memòria on s’inicia cada tros de programa). Es demana:

◦ Donar un diagrama de flux (en format RTL) del programa.

◦ Trobar el codi màquina del programa.

◦ TTrobar els cicles de rellotge en els que es descompon la instrucció CPI. b l i l d ll t l d l i t ió CPI

◦ Calcular el retard (nombre de cicles de rellotge) de la subrutina de retard suposant que cada cicle dura

exactament un cicle del rellotge base i que la freqüència del rellotge és de 20 MHz.

Programa Format instrucció Codi màquina

(0) RJMP main

(32)main: LDI R31, 0

bucle: INC R

CPI R31, 200

0100 kkkkkkkkk

0011 ‐‐‐ ddddd 0000

0011 ‐‐‐ ddddd 1000

0011 ‐‐‐ ddddd 0100

Joan Oliver 32

BRMI bucle

1110 kkkkkkkkk 010

Cicles CPI Transferència de dades (en RTL)

Cicle 1 MAR  PC

Cicle 2 IR  mem, PC  PC + 1

(Descodificació)

Cicle 3 MAR  PC, PC  PC + 1

Cicle 4 R31  R31 – mem

Instrucció #cicles #cops execució Total (cicles)

INC 3 200 600

CPI 4 200 800

BRMI 3 200 600

Total 2000

ExamplesExamples

 Treure pel PORTB el resultat de sumar tots els nombres senars entre el 0 i el 100

◦ Donar diagrama de flux

◦ Donar programa en assemblador

.DEF sum = R10;

.DEF a = R11;

inici: LDI sum, 0;

LDI a, 1;

proper: CPI a, 100;

BRPL fi;

ADD sum, a;

ADDI a, 2;

RJMP proper;

Joan Oliver 33

p p ;

fi: OUT PORTB, sum;

RJMP fi;