Sistemi a Microcontrollore. 2. Microcontrollori Atmel AVR

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Sistemi a Microcontrollore. 2. Microcontrollori Atmel AVR"

Transcript

1 Sistemi a Microcontrollore 2. Microcontrollori Atmel AVR Anno Accademico 2018/2019

2 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

3 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

4 Il Microcontrollore AVR Architettura RISC a 8 bit la maggior parte delle istruzioni è a 16 bit la maggior parte delle istruzioni viene eseguita in 1 ciclo di clock Architettura di tipo load/store: gli operandi aritmetico/logici devono essere nei registri Pipelining delle istruzioni a 2 stadi (fetch, execute) Diverse periferiche on-chip: memoria dati e istruzioni, I/O digitali, ADC, EEPROM, UART, PWM, etc.)

5 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

6 Registri dell AVR General Purpose Registers (GPRs) 32 registri a 8 bit (r0-r31) divisibili in due gruppi (r0-r15 e r16-r31) in quanto alcune istruzioni accedono solamente al secondo gruppo a causa di alcune restrizioni nella codifica delle istruzioni alcune coppie di registri possono essere usati come indice per indirizzi di memoria (bus indirizzi a 16 bit) X (R26-R27), Y (R28-R29) e Z (R31-R32) alcuni registri possono essere dedicati ad usi speciali R1-R0 per memorizzare il risultato delle moltiplicazioni R0 per memorizzare dati caricati dalla memoria istruzioni

7 Registri dell AVR Registri di I/O 64 registri a 8 bit utilizzati per istruzioni di input/output per lo più per memorizzare dati, indirizzi e bit di controllo alcune istruzioni sono valide solamente per registri di I/O, altre solo con i GPR lo status register (SREG) è un registro di I/O speciale

8 Registri dell AVR address I/O mem name address I/O mem name address I/O mem name address I/O mem name 0x00 0x20 TWBR 0x10 0x30 PIND 0x20 0x40 UBRRC/H 0x30 0x50 SFIOR 0x01 0x21 TWSR 0x11 0x31 DDRD 0x21 0x41 WDTCR 0x31 0x51 OCDR/OSCAL 0x02 0x22 TWAR 0x12 0x32 PORTD 0x22 0x42 ASSR 0x32 0x52 TCNT0 0x03 0x23 TWDR 0x13 0x33 PINC 0x23 0x43 OCR2 0x33 0x53 TCCR0 0x04 0x24 ADCL 0x14 0x34 DDRC 0x24 0x44 TCNT2 0x34 0x54 MCUCSR 0x05 0x25 ADCH 0x15 0x35 PORTC 0x25 0x45 TCCR2 0x35 0x55 MCUCR 0x06 0x26 ADCSRA 0x16 0x36 PINB 0x26 0x46 ICR1L 0x36 0x56 TWCR 0x07 0x27 ADMUX 0x17 0x37 DDRB 0x27 0x47 ICR1H 0x37 0x57 SPMCR 0x08 0x28 ACSR 0x18 0x38 PORTB 0x28 0x48 OCR1BL 0x38 0x58 TIFR 0x09 0x29 UBRRL 0x19 0x39 PINA 0x29 0x49 OCR1BH 0x39 0x59 TIMSK 0x0A 0x2A UCSRB 0x1A 0x3A DDRA 0x2A 0x4A OCR1AL 0x3A 0x5A GIFR 0x0B 0x2B UCSRA 0x1B 0x3B PORTA 0x2B 0x4B OCR1AH 0x3B 0x5B GICR 0x0C 0x2C UDR 0x1C 0x3C EECR 0x2C 0x4C TCNT1L 0x3C 0x5C OCR0 0x0D 0x2D SPOR 0x1D 0x3D EEDR 0x2D 0x4D TCNT1H 0x3D 0x5D SPL 0x0E 0x2E SPSR 0x1E 0x3E EEARL 0x2E 0x4E TCCR1B 0x3E 0x5E SPH 0x0F 0x2F SPDR 0x1F 0x3F EEARH 0x2F 0x4F TCCR1A 0x3F 0x5F SREG

9 Registri dell AVR address I/O mem name 0x00 0x20 TWBR 0x01 0x21 TWSR 0x02 0x22 TWAR 0x03 0x23 TWDR 0x04 0x24 ADCL 0x05 0x25 ADCH 0x06 0x26 ADCSRA 0x07 0x27 ADMUX 0x08 0x28 ACSR 0x09 0x29 UBRRL 0x0A 0x2A UCSRB 0x0B 0x2B UCSRA 0x0C 0x2C UDR 0x0D 0x2D SPOR 0x0E 0x2E SPSR 0x0F 0x2F SPDR address address name I/O mem I/O mem name 0x10 0x30 PIND 0x20 0x40 UBRRC/H 0x11 0x31 DDRD 0x21 0x41 WDTCR 0x12 0x32 PORTD 0x22 0x42 ASSR 0x13 0x33 PINC 0x23 0x43 OCR2 0x14 0x34 DDRC 0x24 0x44 TCNT2 0x15 0x35 PORTC 0x25 0x45 TCCR2 0x16 0x36 PINB 0x26 0x46 ICR1L 0x17 0x37 DDRB 0x27 0x47 ICR1H 0x18 0x38 PORTB 0x28 0x48 OCR1BL 0x19 0x39 PINA 0x29 0x49 OCR1BH 0x1A 0x3A DDRA 0x2A 0x4A OCR1AL 0x1B 0x3B PORTA 0x2B 0x4B OCR1AH Analog-to-Digital converter 0x1C 0x3C EECR 0x1D 0x3D EEDR 0x1E 0x3E EEARL 0x2C 0x4C TCNT1L 0x2D 0x4D TCNT1H 0x2E 0x4E TCCR1B 0x1F 0x3F EEARH 0x2F 0x4F TCCR1A address I/O mem name 0x30 0x50 SFIOR 0x31 0x51 OCDR/OSCAL 0x32 0x52 TCNT0 0x33 0x53 TCCR0 0x34 0x54 MCUCSR 0x35 0x55 MCUCR 0x36 0x56 TWCR 0x37 0x57 SPMCR 0x38 0x58 TIFR 0x39 0x59 TIMSK 0x3A 0x5A GIFR 0x3B 0x5B GICR 0x3C 0x5C OCR0 0x3D 0x5D SPL 0x3E 0x5E SPH 0x3F 0x5F SREG

10 Registri dell AVR address I/O mem name 0x00 0x20 TWBR 0x01 0x21 TWSR 0x02 0x22 TWAR 0x03 0x23 TWDR 0x04 0x24 ADCL 0x05 0x25 ADCH 0x06 0x26 ADCSRA 0x07 0x27 ADMUX 0x08 0x28 ACSR 0x09 0x29 UBRRL 0x0A 0x2A UCSRB 0x0B 0x2B UCSRA 0x0C 0x2C UDR 0x0D 0x2D SPOR 0x0E 0x2E SPSR 0x0F 0x2F SPDR address I/O mem name 0x10 0x30 PIND 0x11 0x31 DDRD 0x12 0x32 PORTD 0x13 0x33 PINC 0x14 0x34 DDRC 0x15 0x35 PORTC 0x16 0x36 PINB 0x17 0x37 DDRB 0x18 0x38 PORTB 0x19 0x39 PINA 0x1A 0x3A DDRA 0x1B 0x3B PORTA 0x1C 0x3C EECR 0x1D 0x3D EEDR 0x1E 0x3E EEARL 0x1F 0x3F EEARH address address name I/O mem I/O mem name 0x20 0x40 UBRRC/H 0x30 0x50 SFIOR 0x21 0x41 WDTCR 0x31 0x51 OCDR/OSCAL 0x22 0x42 ASSR 0x32 0x52 TCNT0 0x23 0x43 OCR2 0x33 0x53 TCCR0 0x24 0x44 TCNT2 0x25 0x45 TCCR2 0x26 0x46 ICR1L 0x27 0x47 ICR1H 0x28 0x48 OCR1BL 0x29 0x49 OCR1BH 0x2A 0x4A OCR1AL 0x2B 0x4B OCR1AH 0x2C 0x4C TCNT1L 0x2D 0x4D TCNT1H 0x2E 0x4E TCCR1B 0x2F 0x4F TCCR1A 0x34 0x54 MCUCSR General Purpose I/O GPIO 0x35 0x55 MCUCR 0x36 0x56 TWCR 0x37 0x57 SPMCR 0x38 0x58 TIFR 0x39 0x59 TIMSK 0x3A 0x5A GIFR 0x3B 0x5B GICR 0x3C 0x5C OCR0 0x3D 0x5D SPL 0x3E 0x5E SPH 0x3F 0x5F SREG

11 Registri dell AVR address I/O mem name address I/O mem name address I/O mem name address I/O mem name 0x00 0x20 TWBR 0x10 0x30 PIND 0x20 0x40 UBRRC/H 0x30 0x50 SFIOR 0x01 0x21 TWSR 0x11 0x31 DDRD 0x21 0x41 WDTCR 0x31 0x51 OCDR/OSCAL 0x02 0x22 TWAR 0x12 0x32 PORTD 0x22 0x42 ASSR 0x32 0x52 TCNT0 0x03 0x23 TWDR 0x04 0x24 ADCL 0x05 0x25 ADCH timer 0x13 0x33 PINC 0x14 0x34 DDRC 0x15 0x35 PORTC 0x23 0x43 OCR2 0x24 0x44 TCNT2 0x25 0x45 TCCR2 0x33 0x53 TCCR0 0x34 0x54 MCUCSR 0x35 0x55 MCUCR 0x06 0x26 ADCSRA 0x16 0x36 PINB 0x26 0x46 ICR1L 0x36 0x56 TWCR 0x07 0x27 ADMUX 0x17 0x37 DDRB 0x27 0x47 ICR1H 0x37 0x57 SPMCR 0x08 0x28 ACSR 0x18 0x38 PORTB 0x28 0x48 OCR1BL 0x38 0x58 TIFR 0x09 0x29 UBRRL 0x19 0x39 PINA 0x29 0x49 OCR1BH 0x39 0x59 TIMSK 0x0A 0x2A UCSRB 0x1A 0x3A DDRA 0x2A 0x4A OCR1AL 0x3A 0x5A GIFR 0x0B 0x2B UCSRA 0x1B 0x3B PORTA 0x2B 0x4B OCR1AH 0x3B 0x5B GICR 0x0C 0x2C UDR 0x1C 0x3C EECR 0x2C 0x4C TCNT1L 0x3C 0x5C OCR0 0x0D 0x2D SPOR 0x1D 0x3D EEDR 0x2D 0x4D TCNT1H 0x3D 0x5D SPL 0x0E 0x2E SPSR 0x1E 0x3E EEARL 0x2E 0x4E TCCR1B 0x3E 0x5E SPH 0x0F 0x2F SPDR 0x1F 0x3F EEARH 0x2F 0x4F TCCR1A 0x3F 0x5F SREG

12 Registri dell AVR address I/O mem name 0x00 0x20 TWBR 0x01 0x21 TWSR 0x02 0x22 TWAR 0x03 0x23 TWDR 0x04 0x24 ADCL 0x05 0x25 ADCH 0x06 0x26 ADCSRA 0x07 0x27 ADMUX 0x08 0x28 ACSR 0x09 0x29 UBRRL 0x0A 0x2A UCSRB 0x0B 0x2B UCSRA 0x0C 0x2C UDR 0x0D 0x2D SPOR 0x0E 0x2E SPSR 0x0F 0x2F SPDR address I/O mem name 0x10 0x30 PIND 0x11 0x31 DDRD 0x12 0x32 PORTD 0x13 0x33 PINC 0x14 0x34 DDRC 0x15 0x35 PORTC 0x16 0x36 PINB 0x17 0x37 DDRB 0x18 0x38 PORTB 0x19 0x39 PINA 0x1A 0x3A DDRA 0x1B 0x3B PORTA 0x1C 0x3C EECR 0x1D 0x3D EEDR 0x1E 0x3E EEARL 0x1F 0x3F EEARH address address name I/O mem I/O mem name 0x20 0x40 UBRRC/H 0x30 0x50 SFIOR 0x21 0x41 WDTCR 0x31 0x51 OCDR/OSCAL 0x22 0x42 ASSR 0x32 0x52 TCNT0 0x23 0x43 OCR2 0x33 0x53 TCCR0 0x24 0x44 TCNT2 0x34 0x54 MCUCSR 0x25 0x45 TCCR2 0x35 0x55 MCUCR 0x26 0x46 ICR1L 0x36 0x56 TWCR 0x27 0x47 ICR1H 0x37 0x57 SPMCR 0x28 0x48 OCR1BL 0x29 0x49 OCR1BH 0x2A 0x4A OCR1AL 0x2B 0x4B OCR1AH 0x2C 0x4C TCNT1L 0x2D 0x4D TCNT1H 0x2E 0x4E TCCR1B 0x2F 0x4F TCCR1A stack pointer (16 bit) 0x38 0x58 TIFR 0x39 0x59 TIMSK 0x3A 0x5A GIFR 0x3B 0x5B GICR 0x3C 0x5C OCR0 0x3D 0x5D SPL 0x3E 0x5E SPH 0x3F 0x5F SREG

13 Registri dell AVR address I/O mem name 0x00 0x20 TWBR 0x01 0x21 TWSR 0x02 0x22 TWAR 0x03 0x23 TWDR 0x04 0x24 ADCL 0x05 0x25 ADCH 0x06 0x26 ADCSRA 0x07 0x27 ADMUX 0x08 0x28 ACSR 0x09 0x29 UBRRL 0x0A 0x2A UCSRB 0x0B 0x2B UCSRA 0x0C 0x2C UDR 0x0D 0x2D SPOR 0x0E 0x2E SPSR 0x0F 0x2F SPDR address I/O mem name 0x10 0x30 PIND 0x11 0x31 DDRD 0x12 0x32 PORTD 0x13 0x33 PINC 0x14 0x34 DDRC 0x15 0x35 PORTC 0x16 0x36 PINB 0x17 0x37 DDRB 0x18 0x38 PORTB 0x19 0x39 PINA 0x1A 0x3A DDRA 0x1B 0x3B PORTA 0x1C 0x3C EECR 0x1D 0x3D EEDR 0x1E 0x3E EEARL 0x1F 0x3F EEARH address address name I/O mem I/O mem name 0x20 0x40 UBRRC/H 0x30 0x50 SFIOR 0x21 0x41 WDTCR 0x31 0x51 OCDR/OSCAL 0x22 0x42 ASSR 0x32 0x52 TCNT0 0x23 0x43 OCR2 0x33 0x53 TCCR0 0x24 0x44 TCNT2 0x34 0x54 MCUCSR 0x25 0x45 TCCR2 0x35 0x55 MCUCR 0x26 0x46 ICR1L 0x36 0x56 TWCR 0x27 0x47 ICR1H 0x37 0x57 SPMCR 0x28 0x48 OCR1BL 0x38 0x58 TIFR 0x29 0x49 OCR1BH 0x39 0x59 TIMSK 0x2A 0x4A OCR1AL 0x3A 0x5A GIFR 0x2B 0x4B OCR1AH 0x2C 0x4C TCNT1L status register 0x3B 0x5B GICR 0x3C 0x5C OCR0 0x2D 0x4D TCNT1H 0x3D 0x5D SPL 0x2E 0x4E TCCR1B 0x3E 0x5E SPH 0x2F 0x4F TCCR1A 0x3F 0x5F SREG

14 Lo Status Register nell AVR Lo Status Register (SREG) contiene informazioni sul risultato dell esecuzione dell ultima istruzione aritmetica eseguita. Tale informazione può essere utilizzata per cambiare il flusso di esecuzione del programma SREG viene aggiornato dopo l esecuzione di ogni operazione aritmetico/logica SREG non viene automaticamente salvato e ripristinato rispettivamente all entrata e al ritorno da una routine di interrupt

15 Lo Status Register nell AVR I T H S V N Z C Bit 7 I: Global Interrupt Enable utilizzato per abilitare e disabilitare gli interrupt viene resettato (I=0) automaticamente quando si verifica un interrupt e viene settato (I=1) attraverso l istruzione RETI per abilitare interrupt in cascata

16 Lo Status Register nell AVR I T H S V N Z C Bit 6 T: Bit Copy Storage le istruzioni di Bit Copy (Bit LoaD, BLD, e Bit STore, BST) utilizzano tale bit come sorgente o destinazione del bit copiato. Un bit da uno dei GPR può essere copiato in T e viceversa un bit in T può essere copiato in uno dei GPR

17 Lo Status Register nell AVR I T H S V N Z C Bit 5 H: Half Carry Flag indica se vi è un Half Carry (riporto nel bit 4) in alcune operazioni aritmetiche Bit 4 S: Sign Bit utilizzato per testare operazioni tra numeri con segno, OR esclusivo tra il Negative Flag (N) e il Two s Complement Overflow Flag (V), N V

18 Lo Status Register nell AVR I T H S V N Z C Bit 3 V: Two s Complement Overflow Flag overflow per operazioni aritmetiche in complemento a 2 Bit 2 N: Negative Flag bit più significativo del risultato (se è a 1 e l operazione è in complemento a 2, indica un risultato negativo)

19 Lo Status Register nell AVR I T H S V N Z C Bit 1 Z: Zero Flag indica se il risultato è a 0 o meno (1 zero, 0 nonzero) Bit 0 C: Carry Flag per le addizioni è il riporto del bit più significativo per le sottrazioni x-y è a 1 quando x<y, è a 0 altrimenti

20 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

21 Spazi di Indirizzo nell AVR Nell AVR vi sono 3 diversi spazi di indirizzo memoria dati: memorizza i dati da elaborare memoria istruzioni: memorizza il programma e, talvolta, le costanti memoria EEPROM: memoria dati grande e non-volatile

22 Spazio di Indirizzo Data Memory Contiene il banco di registri GPR (i registri GPR hanno anche un indirizzo di memoria) registri di I/O (i registri di I/O hanno due versioni degli indirizzi: indirizzo di I/O e indirizzo di memoria) memoria dati SRAM (l indirizzo di memoria massimo è indicato come RAMEND) 32 GPR 64 I/O registers Internal SRAM (128 4k byte) External SRAM 8 bit 0x00 0x1F 0x20 0x5F 0x60 RAMEND

23 Spazio di Indirizzo Program Memory Contiene memoria Flash a 16 bit è consentita solo la lettura è non volatile vi si può accedere attraverso istruzioni speciali (LPM, SPM) Program Flash Memory (1k ~ 128k byte) 0x00 External SRAM 16 bit end

24 Spazio di Indirizzo EEPROM Memory Contiene memoria EEPROM a 8 bit dove è possibile memorizzare permanentemente grandi quantità di dati vi si può accedere attraverso istruzioni di load e store con speciali bit di controllo EEPROM Memory (64 ~ 4k byte) External SRAM 8bit 0x00 end

25 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

26 Modalità di Indrizzamento dell AVR Immediate Registro Diretto Memoria Dati diretto indiretto indiretto con offset indiretto con pre-decremento indiretto con post-incremento Memoria Istruzioni Memoria EEPROM

27 Indirizzamento Immediate L operando è contenuto nell istruzione stessa (è immediatamente disponibile) es. AND logico bit a bit immediate andi r16, $0F # r16 r16 & 0x0F write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data 2 ALU ALU result instr

28 Indirizzamento di Registro Diretto L operando è un registro GPR il cui identificativo è direttamente specificato nell istruzione es. AND logico bit a bit and r16, r0 # r16 r16 & r0 write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data 2 ALU ALU result instr

29 Indirizzamento di Registro Diretto L operando è un registro di I/O il cui identificativo è direttamente specificato nell istruzione es. lettura da un registro di I/O in r25, PINA # r25 PIN A write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data 2 I/O memory instr

30 Indirizzamento di Memoria Dati Diretto L operando è un dato nella memoria il cui indirizzo (16 bit) è direttamente specificato nell istruzione (a 32 bit) es. lettura da un registro di I/O lds r5, $F123 # r5 dmem[$f123] write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data 2 addr data memory ALU ALU result instr addr 16 /

31 Indirizzamento di Memoria Dati Indiretto (Registro) L operando è un registro di I/O il cui identificativo è direttamente specificato nell istruzione es. lettura da un registro di I/O ld r11, X # r11 dmem[x] X,Y,Z write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data 2 16 / addr data memory ALU ALU result instr

32 Indirizzamento di Memoria Dati Indiretto (Registro e Offset) L operando è un registro di I/O il cui identificativo è direttamente specificato nell istruzione es. lettura da un registro di I/O std Y+10, r14 # dmem[y+10] r14 Y,Z write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data 2 16 / + addr data memory instr

33 Indirizzamento di Memoria Dati Indiretto (Registro e Pre-Decremento) L operando è un registro di I/O il cui identificativo è direttamente specificato nell istruzione es. lettura da un registro di I/O std -Y, r14 # Y = Y-1, r14 dmem[y] Y,Z write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data 2 16 / + addr data memory instr -1

34 Indirizzamento di Memoria Dati Indiretto (Registro e Post-Incremento) L operando è un dato in memoria il cui indirizzo è direttamente specificato nell istruzione es. lettura da un registro di I/O std Y+, r14 # r14 dmem[y], Y Y+1 Y,Z write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data 2 16 / + addr data memory instr +1

35 Indirizzamento di Memoria Istruzioni Diretto L indirizzo dell istruzione successiva è direttamente specificato nell istruzione corrente es. salto incondizionato con indirizzamento assoluto diretto jmp k # PC k write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data 2 addr PC program memory instr addr

36 Indirizzamento di Memoria Istruzioni Relativo L indirizzo dell istruzione successiva è ottenibile dall istruzione corrente, sommando k al PC e a 1 es. salto incondizionato con indirizzamento relativo rjmp k # PC PC+k+1 write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data addr PC program memory instr

37 Indirizzamento di Memoria Istruzioni Indiretto L indirizzo della nuova istruzione è direttamente specificato nell istruzione es. salto incondizionato con indirizzamento assoluto indiretto icall # PC {6 b000000,z} Z write data write reg read reg 1 read reg 2 GPR write X,Y,Z read data 1 read data 2 16 / addr PC program memory instr

38 Indirizzamento di una Costante nella Memoria Istruzioni L indirizzo della costante è specificato in uno o più registri referenziati nell istruzione es. caricamento di un dato dalla memoria istruzioni lpm r16, Z+ # r16 imem[z[0]*8] Z write data write reg read reg 1 read reg 2 GPR instr write X,Y,Z read data 1 read data 2 16 / addr program memory 8 /

39 Indirizzamento con Post-Incremento di una Costante nella Memoria Istruzioni L indirizzo della costante è specificato in uno o più registri referenziati nell istruzione es. caricamento di un dato dalla memoria istruzioni con post-incremento lpm r0, Z # r0 imem[z[0]*8], Z Z+1 Z write data write reg read reg 1 read reg 2 GPR instr write X,Y,Z read data 1 read data 2 16 / + +1 addr program memory 8 /

40 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

41 Stack nell AVR Nell AVR lo stack è implementato come un blocco di byte consecutivi nell SRAM Lo stack pointer (SP) indica la cima dello stack, ovvero l indirizzo più basso, dove andranno inseriti nuovi dati Nell AVR lo SP: è nei registri di I/O (SPL, SPH) va inizializzato (default 0x000) SP punta alla prima locazione libera SRAM stack 0x60 RAMEND

42 Convenzioni di Chiamata per l AVR i registri r23:r0 sono utilizzati per memorizzare i parametri di una funzione il valore di ritorno è memorizzato nei registri r25:r24 il registro Y (r29:r28) memorizza lo stack frame pointer (FP)

43 Convenzioni di Chiamata per l AVR Chiamante prima di chiamare il chiamato deve memorizzare i parametri da passare in appositi registri (r0:r23) chiama il chiamato attraverso apposite istruzioni (rcall) Chiamato prologo memorizza i registri in conflitto, compreso il FP (Y), nello stack (push) riserva spazio per i parametri e per le variabili locali nello stack aggiorna opportunamente lo SP e il FP (Y) in base al nuovo frame passa i parametri nelle apposite locazioni dello stack

44 Convenzioni di Chiamata Chiamato corpo della funzione effettua normalmente l operazione della funzione sullo stack frame e sui registri general purpose epilogo memorizza il valore di ritorno nei registri dedicati (r25:r24) dealloca lo stack frame dealloca lo spazio occupato da variabili locali e parametri aggiornando opportunamente lo SP e il FP (Y) in base alla dimensione del frame ripristina i registri in conflitto dallo stack (pop) ritorna al chiamante attraverso opportune istruzioni (ret)

45 Stack nell AVR i registri r23:r0 sono utilizzati per memorizzare i parametri di una funzione il valore di ritorno è memorizzato nei registri r25:r24 il registro Y (r29:r28) è il frame pointer (FP) int main(){... foo(arg1,...,argm); } void foo(arg1,...,argm){ int var1,...,varn; } stack frame for foo() parameter1 parameter M local variable 1 local variable N conflict registers return address main() stack frame RAMEND Y

46 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

47 Istruzioni dell AVR Non tutte le istruzioni sono implementate nei microcontrollori della famiglia AVR Nel datasheet di ogni microcontrollore sono specificate le istruzioni supportate Occorre far riferimento al manuale dell instruction set della famiglia AVR ( atmel-0856-avr-instruction-set-manual.pdf) per la descrizione dettagliata di ciascuna istruzione

48 Formati di Istruzione dell AVR La maggior parte delle istruzioni dell AVR sono a 16 bit, ma alcune sono a 32 bit es. add Rd, Rr è a 16 bit es. jmp k è a 32 bit La maggior parte delle istruzioni dell AVR richiede 1 ciclo di clock per essere eseguita, ma alcune istruzioni richiedono più cicli o hanno un numero di cicli variabile es. add Rd, Rr richiede 1 ciclo di clock es. jmp k richiede 3 cicli di clock es. breq k richiede 1 o 2 cicli di clock

49 Istruzioni dell AVR L AVR ha diverse classi di istruzioni aritmetico-logiche trasferimento di dati controllo di flusso altre istruzioni relative ai singoli bit controllo del microcontrollore

50 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

51 Istruzioni Artimetico-Logiche dell AVR Aritmetiche addizione: add, adc sottrazione: sub, sbc comparazione: cp, cpi incremento/decremento: inc, dec Logiche AND logico: and, andi

52 Somma Senza Riporto r d d d d d r r r r ADD ADD WITHOUT CARRY sintassi add Rd, Rr operazione Rd Rd + Rr operandi 0 d,r 31 flag interessati H, S, V, N, Z, C cicli esecuzione 1 lunghezza istruzione 16 bit

53 Somma Con Riporto r d d d d d r r r r ADC ADD WITH CARRY sintassi adc Rd, Rr operazione Rd Rd + Rr + C operandi 0 d,r 31 flag interessati H, S, V, N, Z, C cicli esecuzione 1 lunghezza istruzione 16 bit

54 Sottrazione Senza Riporto r d d d d d r r r r SUB SUBTRACT WITHOUT CARRY sintassi sub Rd, Rr operazione Rd Rd - Rr operandi 0 d,r 31 flag interessati H, S, V, N, Z, C cicli esecuzione 1 lunghezza istruzione 16 bit

55 Sottrazione Con Riporto r d d d d d r r r r SBC SUBTRACT WITH CARRY sintassi sub Rd, Rr operazione Rd Rd - Rr - C operandi 0 d,r 31 flag interessati H, S, V, N, Z, C cicli esecuzione 1 lunghezza istruzione 16 bit

56 Comparazione r d d d d d r r r r CP COMPARE sintassi cp Rd, Rr operazione Rd Rr operandi 0 d,r 31 flag interessati H, S, V, N, Z, C cicli esecuzione 1 lunghezza istruzione 16 bit

57 Comparazione con Immediate k k k k d d d d k k k k CPI COMPARE WITH IMMEDIATE sintassi cpi Rd, k operazione Rd - k operandi 16 d 31, 0 d 255 flag interessati H, S, V, N, Z, C cicli esecuzione 1 lunghezza istruzione 16 bit

58 Incremento d d d d d INC INCREMENT sintassi inc Rd operazione Rd Rd + 1 operandi 0 d 31 flag interessati S, V, N, Z cicli esecuzione 1 lunghezza istruzione 16 bit

59 Decremento d d d d d DEC DECREMENT sintassi dec Rd operazione Rd Rd - 1 operandi 0 d 31 flag interessati S, V, N, Z cicli esecuzione 1 lunghezza istruzione 16 bit

60 AND Logico r d d d d d r r r r AND LOGICAL AND sintassi and Rd, Rr operazione Rd Rd & Rr operandi 0 d,r 31 flag interessati S, V, N, Z cicli esecuzione 1 lunghezza istruzione 16 bit

61 AND Logico con Immediate K K K K d d d d K K K K ANDI LOGICAL AND WITH IMMEDIATE sintassi andi Rd, K operazione Rd Rd & K operandi 16 d 31, 0 K 255 flag interessati S, V, N, Z cicli esecuzione 1 lunghezza istruzione 16 bit

62 Esempio: Calcolo Aritmetico su Char // r2 a, r3 b, r4 c, r5 d char a, b, c, d; // 8 bit a = b + c - d; C

63 4 cicli Esempio: Calcolo Aritmetico su Char // r2 a, r3 b, r4 c, r5 d char a, b, c, d; // 8 bit a = b + c - d; C add r3, r4 sub r3, r5 andi r2, 0x00 add r2, r3 ; r3 b + c ; r3 b + c - d ; r2 0x00 ; r2 b + c - d assembly

64 4 cicli 4 cicli Esempio: Calcolo Aritmetico su Char // r2 a, r3 b, r4 c, r5 d char a, b, c, d; // 8 bit a = b + c - d; C add r3, r4 sub r3, r5 andi r2, X 0x00 add r2, solo r16-r31! r3 ; r3 b + c ; r3 b + c - d ; r2 0x00 ; r2 b + c - d assembly add r3, r4 ; r3 b + c sub r3, r5 ; r3 b + c - d sub r2, r2 ; r2 r2-r2 = 0 add r2, r3 ; r2 b + c - d assembly

65 Esempio: Calcolo Aritmetico su Int // r3:r2 a, r5:r4 b, r7:r6 c, // r9:r8 d int a, b, c, d; // 16 bit a = b + c - d; C

66 8 cicli Esempio: Calcolo Aritmetico su Int // r3:r2 a, r5:r4 b, r7:r6 c, // r9:r8 d int a, b, c, d; // 16 bit a = b + c - d; C assembly add r4, r6 ; r4 low(b) + low(c) adc r5, r7 ; r5 high(b) + high(c) sub r4, r8 ; r4 low(b+c) - low(d) sbc r5, r9 ; r5 high(b+c) - high(d) sub r2, r2 ; r2 0 sub r3, r3 ; r3 0 add r2, r4 ; r2 low(b + c d) add r3, r5 ; r3 high(b + c d)

67 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

68 Istruzioni di Trasferimento Dati dell AVR relative ai registri general purpose copia: mov relative ai registri di I/O lettura e scrittura (indirizzo I/O): in, out relative alla memoria dati lettura e scrittura: lds, sts relative agli immediate caricamento di un immediate: ldi

69 Copia di Registro r d d d d d r r r r MOV COPY REGISTER sintassi mov Rd, Rr operazione Rd Rr operandi 0 d,r 31 flag interessati - cicli esecuzione 1 lunghezza istruzione 16 bit

70 Caricamento di un I/O in un Registro A A d d d d d A A A A IN LOAD AN I/O LOCATION TO REGISTER sintassi in Rd, A operazione Rd I/O(A) operandi 0 d 31, 0 A 63 flag interessati - cicli esecuzione 1 lunghezza istruzione 16 bit

71 Memorizzazione di un Registro in un I/O A A r r r r r A A A A OUT STORE REGISTER TO I/O LOCATION sintassi out A, Rr operazione I/O(A) Rr operandi 0 r 31, 0 A 63 flag interessati - cicli esecuzione 1 lunghezza istruzione 16 bit

72 Caricamento Indiretto da Memoria a Registro (Y) q 0 q q 0 d d d d d 1 q q q LDD LOAD INDIRECT FROM DATA SPACE TO REGISTER (Y) sintassi ldd Rd, Y+q operazione Rd dmem(y+q) operandi 0 d 31, 0 q 63 flag interessati - cicli esecuzione 2 lunghezza istruzione 16 bit

73 Salvataggio Indiretto da Registro a Memoria (Y) q 0 q q 1 r r r r r 1 q q q STD STORE INDIRECT FROM REGISTER TO DATA SPACE (Y) sintassi std Y+q, Rr operazione dmem(y+q) Rr operandi 0 r 31, 0 q 63 flag interessati - cicli esecuzione 2 lunghezza istruzione 16 bit

74 Caricamento Diretto dallo Spazio Dati 31/15 16/ d d d d d k k k k k k k k k k k k k k k k LDS LOAD DIRECT FROM DATA SPACE sintassi lds Rd, k operazione Rd dmem(k) operandi 0 d 31, 0 k flag interessati - cicli esecuzione 2 lunghezza istruzione 32 bit

75 Memorizzazione Diretta nello Spazio Dati 31/15 16/ r r r r r k k k k k k k k k k k k k k k k STS STORE DIRECT TO DATA SPACE sintassi sts k, Rr operazione dmem(k) Rr operandi 0 r 31, 0 k flag interessati - cicli esecuzione 2 lunghezza istruzione 32 bit

76 Caricamento di Immediate K K K K d d d d K K K K LDI LOAD IMMEDIATE sintassi ldi Rd, K operazione Rd K operandi 16 d 31, 0 K 255 flag interessati - cicli esecuzione 1 lunghezza istruzione 16 bit

77 Esempio: Trasferimento Dati // r2 a, r3 b, addr(d) = 0x1000 char a, b; char[64] d; // 8 bit a = b + 40 d[2]; C

78 6 cicli Esempio: Trasferimento Dati // r2 a, r3 b, addr(d) = 0x1000 char a, b; char[64] d; // 8 bit a = b + 40 d[2]; ldi r16, 40 ; r16 40 lds r5, 0x1002 ; r5 dmem(0x1002) add r3, r16 ; r3 b + 40 sub r3, r5 ; r3 b + 40 d[2] mov r2, r3 ; r2 b + 40 d[2] assembly C

79 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

80 Istruzioni di Controllo di Flusso dell AVR salto condizionato (branch): se non uguale: brne se maggiore o uguale: brge incondizionato (jump): rjmp

81 Salto Condizionato (se non uguale) k k k k k k k BRNE BRANCH IF NOT EQUAL sintassi operazione brne k if(z==0) then PC PC + k + 1 else PC PC + 1 operandi -64 k 63 flag interessati - cicli esecuzione if(z==0) then 2 else 1 lunghezza istruzione 16 bit

82 Salto Condizionato (se maggiore o uguale) k k k k k k k BRGE BRANCH IF GREATER OR EQUAL (SIGNED) sintassi operazione brge k if(s==0) then PC PC + k + 1 else PC PC + 1 operandi -64 k 63 flag interessati - cicli esecuzione if(s==0) then 2 else 1 lunghezza istruzione 16 bit

83 Utilizzo dei Salti Condizionati Tipicamente si utilizzano dopo un istruzione di sottrazione tra gli operandi da comparare (cp, cpi, sub, sbc) e sfruttano i risultanti bit dello status register cp Rd, Rr ; Rd Rr ; if (Rd-Rr)==0 then Z=1 else Z=0 brne k cp Rd, Rr ; Rd Rr ; S = N V if(n!=v) then S=1 else S=0 ; N if(rd-rr)< 0 then N=1 else N=0 ; V if((rd-rr)>63) (Rd-Rr)<-64) then V = 1 ; else V = 0 brge k

84 Salto Incondizionato Relativo k k k k k k k k k k k k RJMP RELATIVE JUMP sintassi rjmp k operazione PC PC + k + 1 operandi k 2048 flag interessati - cicli esecuzione 2 lunghezza istruzione 16 bit

85 Esempio: Controllo di Flusso // r2 x, r17 y char x, y; // 8 bit if(x<0) y = 1; else y = -1; C

86 6 o 7 cicli Esempio: Controllo di Flusso // r2 x, r17 y char x, y; // 8 bit if(x<0) y = 1; else y = -1; C mov r16, r2 ; r16 r2 cpi r16, 0 ; x - 0 brge else ; if(x>=0) go to else ldi r17, 1 ; r17 +1 rjmp end ; go to end else: ldi r17, 0xFF ; r17-1 end: nop assembly

87 Esempio: Loop // r2 i (init 1), r3 n, r4 sum (init 0) char i, n, sum; // 8 bit while(i<n) { sum+=2*i; i++; } C

88 8 cicli per iterazione Esempio: Loop // r2 i (init 1), r3 n, r4 sum (init 0) char i, n, sum; // 8 bit while(i<n) { sum+=2*i; i++; } loop: cp r2, r3 ; i - n brge end ; if(i>=n) go to end mov r5, r2 ; r5 i add r5, r5 ; r5 i+i = 2*i add r4, r5 ; r4 sum + 2*i inc r2 ; r2 i+1 rjmp loop ; go to loop end: nop assembly C

89 Indice Caratteristiche dell ISA AVR registri spazi di indirizzo modalità di indirizzamento stack e funzioni Istruzioni dell AVR aritmetico logiche trasferimento dati controllo di flusso chiamata a funzione

90 Istruzioni di Chiamata a Funzione manipolazione dei dati nello stack salvataggio di dati nello stack: push recupero di dati nello stack: pop gestione di una subroutine chiamata: rcall ritorno: ret

91 Salvataggio di un Registro nello Stack r r r r r PUSH PUSH REGISTER ON STACK sintassi push Rr operazione dmem(sp) Rr, SP SP - 1 operandi 0 r 31 flag interessati - cicli esecuzione 2 lunghezza istruzione 16 bit

92 Ripristino di un Registro dallo Stack d d d d d POP POP REGISTER FROM STACK sintassi pop Rd operazione SP SP + 1, Rd dmem(sp) operandi 0 d 31 flag interessati - cicli esecuzione 2 lunghezza istruzione 16 bit

93 Chiamata Relativa a Subroutine k k k k k k k k k k k k RCALL RELATIVE CALL TO SUBROUTINE sintassi operazione rcall k dmem(sp) low(pc + 1), dmem(sp-1) high(pc + 1), PC PC + k + 1, SP SP - 2 operandi k 2048 flag interessati - cicli esecuzione 3 lunghezza istruzione 16 bit

94 Ritorno da Subroutine RET RETURN FROM SUBROUTINE sintassi operazione ret high(pc) dmem(sp+1), low(pc) dmem(sp+2), SP SP + 2 operandi - flag interessati - cicli esecuzione 4 lunghezza istruzione 16 bit

95 Convenzioni di Chiamata per l AVR Chiamante prima di chiamare il chiamato deve memorizzare i parametri da passare in appositi registri (r23:r0) ed eventualmente salvarli nello stack chiama il chiamato attraverso apposite istruzioni (rcall) Chiamato prologo memorizza i registri in conflitto, compreso il FP (Y), nello stack (push) riserva spazio per i parametri e per le variabili locali nello stack aggiorna opportunamente lo SP e il FP (Y) in base al nuovo frame passa i parametri nelle apposite locazioni dello stack

96 Convenzioni di Chiamata Chiamato corpo della funzione effettua normalmente l operazione della funzione sullo stack frame e sui registri general purpose epilogo memorizza il valore di ritorno nei registri dedicati (r25:r24) dealloca lo stack frame dealloca lo spazio occupato da variabili locali e parametri aggiornando opportunamente lo SP e il FP (Y) in base alla dimensione del frame ripristina i registri in conflitto dallo stack (pop) ritorna al chiamante attraverso opportune istruzioni (ret)

97 Esempio: Chiamata a Funzione char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } C int main(){ char i = 45, j=88; foo(i, j); return 0; }

98 Esempio: Chiamata a Funzione char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } int main(){ char i = 45, j=88; foo(i, j); return 0; } chiamante (caller) chiamato (callee) parametri o argomenti (passing parameters) valore di ritorno (return value) C

99 Esempio: Chiamata a Funzione char foo(char a, char b){ // parameters r20, r21 char x, y; // local vars r16, r17 x = a + b; y = a & b; return x y; // return val r25:r24 } int main(){ char i = 45, j=88; // local vars r16, r17 foo(i, j); // parameters r20, r21 return 0; } C

100 Esempio di Contenuto dello Stack Frame char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } int main(){ char i = 45, j=88; foo(i, j); return 0; } FP for foo() frame for foo() frame for main() a b x y main FP return address i j RAMEND FP = Y r29:r28 parametri r23:r0 valore di ritorno r25:r24 non ci sono altri registri in conflitto oltre il FP perchè tutti i parametri e le variabili locali sono memorizzati nello stack parameters local variables conflict regs FP for main()

101 Esempio di Chiamate a Funzione C int main(){ char i = 45, j=88; foo(i, j); return 0; } r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 Y o FP main: ldi r28, low(ramend-2) ; 2 bytes for storing local ldi r29, high(ramend-2) ; variables i and j out SPH, r29 ; adjust stack pointer to out SPL, r28 ; point the new stack top ldi r16, 45 ; i=45 std r16, Y+1 ldi r17, 88 ; j=88 std r17, Y+2 ldd r20, Y+1 ; pass parameter i ldd r21, Y+2 ; pass parameter j rcall foo ; call foo exit: RAMEND

102 Esempio di Chiamate a Funzione C int main(){ char i = 45, j=88; foo(i, j); return 0; } r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-2) high(ramend-2) Y o FP FP main: ldi r28, low(ramend-2) ; 2 bytes for storing local ldi r29, high(ramend-2) ; variables i and j out SPH, r29 ; adjust stack pointer to out SPL, r28 ; point the new stack top ldi r16, 45 ; i=45 std r16, Y+1 ldi r17, 88 ; j=88 std r17, Y+2 ldd r20, Y+1 ; pass parameter i ldd r21, Y+2 ; pass parameter j rcall foo ; call foo exit: RAMEND

103 Esempio di Chiamate a Funzione C int main(){ char i = 45, j=88; foo(i, j); return 0; } r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-2) high(ramend-2) Y o FP FP SP main: ldi r28, low(ramend-2) ; 2 bytes for storing local ldi r29, high(ramend-2) ; variables i and j out SPH, r29 ; adjust stack pointer to out SPL, r28 ; point the new stack top ldi r16, 45 ; i=45 std r16, Y+1 ldi r17, 88 ; j=88 std r17, Y+2 ldd r20, Y+1 ; pass parameter i ldd r21, Y+2 ; pass parameter j rcall foo ; call foo exit: RAMEND

104 Esempio di Chiamate a Funzione C int main(){ char i = 45, j=88; foo(i, j); return 0; } r16 r17 r18 r19 r20 r21 r22 r23 i = 45 r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-2) high(ramend-2) Y o FP FP SP i = 45 RAMEND main: ldi r28, low(ramend-2) ; 2 bytes for storing local ldi r29, high(ramend-2) ; variables i and j out SPH, r29 ; adjust stack pointer to out SPL, r28 ; point the new stack top ldi r16, 45 ; i=45 std r16, Y+1 ldi r17, 88 ; j=88 std r17, Y+2 ldd r20, Y+1 ; pass parameter i ldd r21, Y+2 ; pass parameter j rcall foo ; call foo exit:

105 Esempio di Chiamate a Funzione C int main(){ char i = 45, j=88; foo(i, j); return 0; } r16 r17 r18 r19 r20 r21 r22 r23 i = 45 j = 88 r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-2) high(ramend-2) Y o FP FP SP i = 45 j = 88 RAMEND main: ldi r28, low(ramend-2) ; 2 bytes for storing local ldi r29, high(ramend-2) ; variables i and j out SPH, r29 ; adjust stack pointer to out SPL, r28 ; point the new stack top ldi r16, 45 ; i=45 std r16, Y+1 ldi r17, 88 ; j=88 std r17, Y+2 ldd r20, Y+1 ; pass parameter i ldd r21, Y+2 ; pass parameter j rcall foo ; call foo exit:

106 Esempio di Chiamate a Funzione C int main(){ char i = 45, j=88; foo(i, j); return 0; } r16 r17 r18 r19 r20 r21 r22 r23 i = 45 j = r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-2) high(ramend-2) Y o FP FP SP i = 45 j = 88 RAMEND main: ldi r28, low(ramend-2) ; 2 bytes for storing local ldi r29, high(ramend-2) ; variables i and j out SPH, r29 ; adjust stack pointer to out SPL, r28 ; point the new stack top ldi r16, 45 ; i=45 std r16, Y+1 ldi r17, 88 ; j=88 std r17, Y+2 ldd r20, Y+1 ; pass parameter i ldd r21, Y+2 ; pass parameter j rcall foo ; call foo exit:

107 Esempio di Chiamate a Funzione C int main(){ char i = 45, j=88; foo(i, j); return 0; } r16 r17 r18 r19 r20 r21 r22 r23 i = 45 j = r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-2) high(ramend-2) Y o FP SP FP high(ret addr) low(ret addr) i = 45 j = 88 RAMEND main: ldi r28, low(ramend-2) ; 2 bytes for storing local ldi r29, high(ramend-2) ; variables i and j out SPH, r29 ; adjust stack pointer to out SPL, r28 ; point the new stack top ldi r16, 45 ; i=45 std r16, Y+1 ldi r17, 88 ; j=88 std r17, Y+2 ldd r20, Y+1 ; pass parameter i ldd r21, Y+2 ; pass parameter j rcall foo ; call foo exit:

108 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 i = 45 j = r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-2) high(ramend-2) Y o FP SP FP high(ret addr) low(ret addr) i = 45 j = 88 foo: push r28 ; PROLOGUE frame size=4 push r29 ; (excluding return addr ; and registers) in r28, SPL ; save frame pointer in in r29, SPH ; stack ldi r16, 4 ; compute stack frame top sub r28, r16 ; for foo (actual parms a, ldi r17, 0 ; b; local var x, y) sbc r29, r17 out SPH, r29 ; adjust stack pointer out SPL, r28 std r20, Y+1 ; store actual parm a std r21, Y+2 ; store actual parm b RAMEND ; end of PROLOGUE...

109 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 i = 45 j = r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-2) high(ramend-2) Y o FP SP FP high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo: push r28 ; PROLOGUE frame size=4 push r29 ; (excluding return addr ; and registers) in r28, SPL ; save frame pointer in in r29, SPH ; stack ldi r16, 4 ; compute stack frame top sub r28, r16 ; for foo (actual parms a, ldi r17, 0 ; b; local var x, y) sbc r29, r17 out SPH, r29 ; adjust stack pointer out SPL, r28 std r20, Y+1 ; store actual parm a std r21, Y+2 ; store actual parm b RAMEND ; end of PROLOGUE...

110 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 i = 45 j = r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-5) high(ramend-5) Y o FP SP FP high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo: push r28 ; PROLOGUE frame size=4 push r29 ; (excluding return addr ; and registers) in r28, SPL ; save frame pointer in in r29, SPH ; stack ldi r16, 4 ; compute stack frame top sub r28, r16 ; for foo (actual parms a, ldi r17, 0 ; b; local var x, y) sbc r29, r17 out SPH, r29 ; adjust stack pointer out SPL, r28 std r20, Y+1 ; store actual parm a std r21, Y+2 ; store actual parm b RAMEND ; end of PROLOGUE...

111 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-9) high(ramend-9) Y o FP FP SP high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo: push r28 ; PROLOGUE frame size=4 push r29 ; (excluding return addr ; and registers) in r28, SPL ; save frame pointer in in r29, SPH ; stack ldi r16, 4 ; compute stack frame top sub r28, r16 ; for foo (actual parms a, ldi r17, 0 ; b; local var x, y) sbc r29, r17 out SPH, r29 ; adjust stack pointer out SPL, r28 std r20, Y+1 ; store actual parm a std r21, Y+2 ; store actual parm b RAMEND ; end of PROLOGUE...

112 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-9) high(ramend-9) Y o FP FP SP high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo: push r28 ; PROLOGUE frame size=4 push r29 ; (excluding return addr ; and registers) in r28, SPL ; save frame pointer in in r29, SPH ; stack ldi r16, 4 ; compute stack frame top sub r28, r16 ; for foo (actual parms a, ldi r17, 0 ; b; local var x, y) sbc r29, r17 out SPH, r29 ; adjust stack pointer out SPL, r28 std r20, Y+1 ; store actual parm a std r21, Y+2 ; store actual parm b RAMEND ; end of PROLOGUE...

113 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-9) high(ramend-9) Y o FP FP SP a=45 b=88 high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo: push r28 ; PROLOGUE frame size=4 push r29 ; (excluding return addr ; and registers) in r28, SPL ; save frame pointer in in r29, SPH ; stack ldi r16, 4 ; compute stack frame top sub r28, r16 ; for foo (actual parms a, ldi r17, 0 ; b; local var x, y) sbc r29, r17 out SPH, r29 ; adjust stack pointer out SPL, r28 std r20, Y+1 ; store actual parm a std r21, Y+2 ; store actual parm b RAMEND ; end of PROLOGUE...

114 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-9) high(ramend-9) Y o FP FP SP a=45 b=88 high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo:... ; BODY ldd r16, Y+1 ; load a ldd r17, Y+2 ; load b add r16, r18 ; compute x = a + b std r16, Y+3 ; store x ldd r16, Y+1 ; load a and r17, r16 ; compute y = a & b std r16, Y+4 ; store y ldd r16, Y+3 ; load x ldd r17, Y+4 ; load y sub r16, r17 ; compute x - y mov r16, r24 ; move (x y) to return... ; end of BODY RAMEND

115 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x=a y=b r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-9) high(ramend-9) Y o FP FP SP a=45 b=88 high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo:... ; BODY ldd r16, Y+1 ; load a ldd r17, Y+2 ; load b add r16, r18 ; compute x = a + b std r16, Y+3 ; store x ldd r16, Y+1 ; load a and r17, r16 ; compute y = a & b std r16, Y+4 ; store y ldd r16, Y+3 ; load x ldd r17, Y+4 ; load y sub r16, r17 ; compute x - y mov r16, r24 ; move (x y) to return... ; end of BODY RAMEND

116 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x=a+b y=b r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-9) high(ramend-9) Y o FP FP SP a=45 b=88 x=a+b high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo:... ; BODY ldd r16, Y+1 ; load a ldd r17, Y+2 ; load b add r16, r18 ; compute x = a + b std r16, Y+3 ; store x ldd r16, Y+1 ; load a and r17, r16 ; compute y = a & b std r16, Y+4 ; store y ldd r16, Y+3 ; load x ldd r17, Y+4 ; load y sub r16, r17 ; compute x - y mov r16, r24 ; move (x y) to return... ; end of BODY RAMEND

117 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x=a y=a&b r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-9) high(ramend-9) Y o FP FP SP a=45 b=88 x=a+b y=a&b high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo:... ; BODY ldd r16, Y+1 ; load a ldd r17, Y+2 ; load b add r16, r18 ; compute x = a + b std r16, Y+3 ; store x ldd r16, Y+1 ; load a and r17, r16 ; compute y = a & b std r16, Y+4 ; store y ldd r16, Y+3 ; load x ldd r17, Y+4 ; load y sub r16, r17 ; compute x - y mov r16, r24 ; move (x y) to return... ; end of BODY RAMEND

118 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x=a+b y=a&b r24 r25 r26 r27 r28 r29 r30 r31 low(ramend-9) high(ramend-9) Y o FP FP SP a=45 b=88 x=a+b y=a&b high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo:... ; BODY ldd r16, Y+1 ; load a ldd r17, Y+2 ; load b add r16, r18 ; compute x = a + b std r16, Y+3 ; store x ldd r16, Y+1 ; load a and r17, r16 ; compute y = a & b std r16, Y+4 ; store y ldd r16, Y+3 ; load x ldd r17, Y+4 ; load y sub r16, r17 ; compute x - y mov r16, r24 ; move (x y) to return... ; end of BODY RAMEND

119 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x-y y=a&b r24 r25 r26 r27 r28 r29 r30 r31 x-y low(ramend-9) high(ramend-9) Y o FP FP SP a=45 b=88 x=a+b y=a&b high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 foo:... ; BODY ldd r16, Y+1 ; load a ldd r17, Y+2 ; load b add r16, r18 ; compute x = a + b std r16, Y+3 ; store x ldd r16, Y+1 ; load a and r17, r16 ; compute y = a & b std r16, Y+4 ; store y ldd r16, Y+3 ; load x ldd r17, Y+4 ; load y sub r16, r17 ; compute x - y mov r16, r24 ; move (x y) to return... ; end of BODY RAMEND

120 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x-y y=a&b r24 r25 r26 r27 r28 r29 r30 r31 x-y low(ramend-9) high(ramend-9) Y o FP FP SP a=45 b=88 x=a+b y=a&b high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 RAMEND foo:... ; EPILOGUE add r28, low(4) ; deallocate frame add r29, high(4) out SPL, r28 ; update stack pointer out SPH, r29 pop r29 ; restore main frame pointer pop r28 ret ; return to caller ; end of EPILOGUE

121 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x-y y=a&b r24 r25 r26 r27 r28 r29 r30 r31 x-y low(ramend-5) high(ramend-5) Y o FP SP FP a=45 b=88 x=a+b y=a&b high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 RAMEND foo:... ; EPILOGUE add r28, low(4) ; deallocate frame add r29, high(4) out SPL, r28 ; update stack pointer out SPH, r29 pop r29 ; restore main frame pointer pop r28 ret ; return to caller ; end of EPILOGUE

122 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x-y y=a&b r24 r25 r26 r27 r28 r29 r30 r31 x-y low(ramend-5) high(ramend-5) Y o FP SP FP high(ramend-2) low(ramend-2) high(ret addr) low(ret addr) i = 45 j = 88 RAMEND foo:... ; EPILOGUE add r28, low(4) ; deallocate frame add r29, high(4) out SPL, r28 ; update stack pointer out SPH, r29 pop r29 ; restore main frame pointer pop r28 ret ; return to caller ; end of EPILOGUE

123 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x-y y=a&b r24 r25 r26 r27 r28 r29 r30 r31 x-y low(ramend-2) high(ramend-2) Y o FP SP FP high(ret addr) low(ret addr) i = 45 j = 88 RAMEND foo:... ; EPILOGUE add r28, low(4) ; deallocate frame add r29, high(4) out SPL, r28 ; update stack pointer out SPH, r29 pop r29 ; restore main frame pointer pop r28 ret ; return to caller ; end of EPILOGUE

124 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x-y y=a&b r24 r25 r26 r27 r28 r29 r30 r31 x-y low(ramend-2) high(ramend-2) Y o FP foo:... ; EPILOGUE add r28, low(4) ; deallocate frame add r29, high(4) out SPL, r28 ; update stack pointer out SPH, r29 pop r29 ; restore main frame pointer pop r28 ret ; return to caller ; end of EPILOGUE SP FP i = 45 j = 88 RAMEND

125 Esempio di Chiamate a Funzione C char foo(char a, char b){ char x, y; x = a + b; y = a & b; return x y; } r16 r17 r18 r19 r20 r21 r22 r23 x-y y=a&b r24 r25 r26 r27 r28 r29 r30 r31 x-y low(ramend-2) high(ramend-2) Y o FP foo:... ; EPILOGUE add r28, low(4) ; deallocate frame add r29, high(4) out SPL, r28 ; update stack pointer out SPH, r29 pop r29 ; restore main frame pointer pop r28 ret ; return to caller ; end of EPILOGUE SP FP i = 45 j = 88 RAMEND cicli esecuzione: 63 (17 main, 46 foo) dimensione massima dello stack: 10 B (2 B main, 8 B foo)

126 Altre Istruzioni dell AVR relative ai singoli bit settare un bit di I/O a 1: sbi resettare un bit di I/O a 0: cbi copiare un bit dal/nel campo T di SREG: bld, bst controllo del microcontrollore attesa (idleing): nop breakpoint per il debug: break passaggio alla modalità low power: sleep reset del watchdog timer: wdr

127 Riassunto Dettagli architetturali microcontrollori AVR registri (GPR, I/O), spazi di indirizzo e modalità di indirizzamento stack e funzioni Istruzioni aritmetico/logiche trasferimento dati controllo di flusso chiamata a funzione

128 Riassunto istruzione tipologia sintassi descrizione add artimetico/logica add Rd, Rr Rd Rd + Rr adc artimetico/logica adc Rd, Rr Rd Rd + Rr + C sub artimetico/logica sub Rd, Rr Rd Rd Rr sbc artimetico/logica sbc Rd, Rr Rd Rd Rr C cp artimetico/logica cp Rd, Rr Rd Rr cpi artimetico/logica cpi Rd, k Rd k inc artimetico/logica inc Rd Rd Rd + 1 dec artimetico/logica ded Rd Rd Rd 1 and artimetico/logica and Rd, Rr Rd Rd & Rr andi artimetico/logica andi Rd, k Rd Rd & k mov data transfer mov Rd, Rr Rd Rr in data transfer in Rd, A Rd I/O(A) out data transfer out A, Rr I/O(A) Rr ldd data transfer ldd Rd, Y+q Rd dmem(y+q) std data transfer std Rr, Y+q dmem(y+q) Rr lds data transfer lds Rd, k Rd dmem(k) sts data transfer sts Rr, k dmem(k) Rr ldi data transfer ldi Rd, k Rd k

129 Riassunto istruzione tipologia sintassi descrizione brne controllo flusso brne k if Z==0 then PC PC+k+1 else PC PC+1 brge controllo flusso brge k if S==0 then PC PC+k+1 else PC PC+1 rjmp controllo flusso rjmp k PC PC+k+1 push chiamata funzione push Rr dmem(sp) Rr, SP SP 1 pop chiamata funzione pop Rd SP SP + 1, Rd dmem(sp) rcall ret chiamata funzione chiamata funzione rcall k ret dmem(sp) low(pc+1), dmem(sp-1) high(pc+1), PC PC + k + 1, SP SP - 2 high(pc) dmem(sp+1), low(pc) dmem(sp+2), SP SP + 2 sbi bit sbi A, b I/O(A,b) 1 cbi bit cbi A, b I/O(A,b) 0 bld bit bld Rd,b Rd(b) T bst bit bst Rd, b T Rd(b) nop management nop - break management break - sleep management sleep - wdr management wdr WD timer restart

130 Esercizi: assembly AVR Si implementino le seguenti funzioni con le istruzioni assembly dei microcontrollori AVR viste. Quanto dura la loro esecuzione in cicli di clock? inversione dell ordine di una stringa di 10 caratteri memorizzata nei regitri r0-r9 spostando la stringa inversa nei registri r10-r19 riordinamento per valori decrescenti di una stringa di 3 char contenuti in r16-r18 char x, z; // r2 x, r3 z if(x>0) z = 1; else z = 255;

Esempio di moltiplicazione come somma e spostamento

Esempio di moltiplicazione come somma e spostamento Esempio di moltiplicazione come somma e spostamento Implementare una moltiplicazione coinvolge algoritmi di shift e somma Istruzioni di Shift:movimento di bit: ROL Rd ROR Rd LSL Rd LSR ASR Rd Rd 22 x 35

Dettagli

Cenni ad Assembly Intel

Cenni ad Assembly Intel Cenni ad Assembly Intel Luca Abeni April 17, 2015 Architerrura Intel Utilizzata sulla maggior parte dei laptop, desktop e server moderni Lunga storia Dagli anni 70 (Intel 8080-8 bit!)......fino ad oggi

Dettagli

Istruzioni di modifica della sequenza di elaborazione

Istruzioni di modifica della sequenza di elaborazione Istruzioni di modifica della sequenza di elaborazione Permettono di modificare la sequenza di esecuzione delle istruzioni di un programma, normalmente controllata dal meccanismo automatico di avanzamento

Dettagli

Architettura del Set di Istruzioni (ISA)

Architettura del Set di Istruzioni (ISA) Architettura del Set di Istruzioni (ISA) Maurizio Palesi Maurizio Palesi 1 Instruction Set Architecture (ISA) Software instruction set Hardware Maurizio Palesi 2 1 Instruction Set Architecture (ISA) Applicazioni

Dettagli

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del 03-11-09 COGNOME NOME

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del 03-11-09 COGNOME NOME MATRICOLA COGNOME NOME 1) [28/40] Trovare il codice assembly MIPS corrispondente dei seguenti micro-benchmark (utilizzando solo e unicamente istruzioni dalla tabella sottostante), rispettando le convenzioni

Dettagli

Linguaggio macchina e linguaggio assembler

Linguaggio macchina e linguaggio assembler FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Linguaggio macchina e linguaggio assembler 2000 Pier Luca Montessoro (si veda la nota di copyright

Dettagli

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1 La microarchitettura. anno accademico 2006 2007 pagina 1 Integer Java virtual machine Ogni microprocessore può avere una microarchitettura diversa, ma la modalità di funzionamento per certi aspetti è generale.

Dettagli

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali Prof. Gian Luca Marcialis Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto dei calcolatori

Dettagli

Powered by: Relators:

Powered by: Relators: Powered by: Hacking Group Como www.hgcomo.org Relators: Beretta Matteo, matteo@hgcomo.org Pizzagalli Diego Ulisse ulisse@hgcomo.org Atmel AVR Studio 4 integra al suo interno un ambiente di programmazione

Dettagli

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

Architettura dei Microcontrollori Microchip PIC18F

Architettura dei Microcontrollori Microchip PIC18F Architettura dei Microcontrollori Microchip PIC18F A. Romani Elettronica dei Sistemi Digitali L-A Cos è un microcontrollore? Differenza tra Microprocessore e Microcontrollore à Microprocessore: normalmente

Dettagli

Architettura del PIC 18F452

Architettura del PIC 18F452 Controllo Digitale a.a. 2005-2006 Architettura del PIC 18F452 Ing. Federica Pascucci PIC 18F452 Caratteristiche Frequenza operativa: 40 MHz Memorie: Program FLASH memory: 32 KBytes, 16 K-istruzioni memorizzabili

Dettagli

L architettura di riferimento

L architettura di riferimento Architetture degli elaboratori e delle reti Lezione 10 L architettura di riferimento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 10 1/27

Dettagli

Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40). RCHITETTUR DI UN ELORTORE Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for dvanced Study, anni 40). MCCHIN DI VON NEUMNN UNITÀ FUNZIONLI fondamentali Processore (CPU) Memoria

Dettagli

Fondamenti Teorici. Antonio Pescapè e Marcello Esposito Parte Seconda v2.0

Fondamenti Teorici. Antonio Pescapè e Marcello Esposito Parte Seconda v2.0 Fondamenti Teorici Antonio Pescapè e Marcello Esposito Parte Seconda v2.0 Agenda Modello di Von Neumann Algoritmo del Processore Linguaggio Macchina e Linguaggio Assembler Hardware e Software Compilatori

Dettagli

ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI

ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI PROGETTO DELLA CPU MEMORIZZAZIONE DEGLI OPERANDI DOVE SONO MEMORIZZATI GLI OPERANDI NELLA CPU? ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI SCELTE PROGETTUALI: 1. DOVE SONO MEMORIZZATI

Dettagli

L ambiente di simulazione SPIM

L ambiente di simulazione SPIM Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/28

Dettagli

Introduzione. Corso di Informatica Applicata. Università degli studi di Cassino

Introduzione. Corso di Informatica Applicata. Università degli studi di Cassino Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Introduzione Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.:

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici ISA di riferimento: MIPS Massimiliano Giacomin 1 DOVE CI TROVIAMO Livello funzionale Livello logico Livello circuitale Livello del layout istruzioni macchina, ISA Reti logiche:

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Classificazione dei calcolatori elettronici Sistemi basati sull architettura di Von Neumann Sistemi basati sull architettura Harward Architettura dei calcolatori: definizioni Evoluzione

Dettagli

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI LUCIDI LEZIONI SISTEMI ELETTRONICI INDUSTRIALI www.dismi.unimo.it (People Associated Pavan ) www.microchip.com com (Datasheet PIC - DS30292) (Mid Range Family Manual DS33023) Università degli Studi di

Dettagli

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore Il processore Architettura dell elaboratore Il processore La esegue istruzioni in linguaggio macchina In modo sequenziale e ciclico (ciclo macchina o ciclo ) Effettuando operazioni di lettura delle istruzioni

Dettagli

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

Dettagli

PROGRAMMA DI SISTEMI TERZA AET 2014/2015

PROGRAMMA DI SISTEMI TERZA AET 2014/2015 PROGRAMMA DI SISTEMI TERZA AET 2014/2015 Docente: Gamerra Giuseppe, Porta Giovanni Testo : manuali originali dello Z80, appunti in classe, dispense sulla intranet, simulatore OSHONSOFT A) Non sono state

Dettagli

Programmazione dello Z80

Programmazione dello Z80 Il microprocessore si incarica di: gestire il programma e i suoi dati di eseguire i calcoli richiesti. Le azioni appena elencate rendono necessario che il microprocessore abbia da qualche parte, al suo

Dettagli

Architettura di tipo registro-registro (load/store)

Architettura di tipo registro-registro (load/store) Caratteristiche principali dell architettura del processore MIPS E un architettura RISC (Reduced Instruction Set Computer) Esegue soltanto istruzioni con un ciclo base ridotto, cioè costituito da poche

Dettagli

Von Neumann. John Von Neumann (1903-1957)

Von Neumann. John Von Neumann (1903-1957) Linguaggio macchina Von Neumann John Von Neumann (1903-1957) Inventore dell EDVAC (Electronic Discrete Variables AutomaFc Computer), la prima macchina digitale programmabile tramite un soiware basata su

Dettagli

MODELLO DLX IN UNISIM

MODELLO DLX IN UNISIM Architettura e descrizione del modello MODELLO DLX IN UNISIM RINGRAZIAMENTI : I materiali per questa presentazione sono tratti dal tutorial ufficiale di UNISIM - https://unisim.org/site/tutorials/start

Dettagli

Blocchi funzione: FbModbusAsciiMs

Blocchi funzione: FbModbusAsciiMs Pagina 1 di 6 ELSIST Srl, www.elsist.it Blocchi funzione MNL041Q000 FbModbusAsciiMs Questo blocco funzione permette lo scambio di dati tra due sistemi, uno master ed uno slave, utilizzando una connessione

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 ISA e LINGUAGGIO ASSEMBLY MIPS ESERCIZI Massimiliano Giacomin ESERCIZIO Utilizzando la green card, tradurre in linguaggio macchina le due istruzioni in assembly

Dettagli

Le costanti Le modalità di indirizzamento L assembly del MIPS

Le costanti Le modalità di indirizzamento L assembly del MIPS Le costanti Le modalità di indirizzamento L assembly del MIPS Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano 1/45 Sommario Le costanti

Dettagli

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S. 2007 2008. Microcontrollori Microchip PIC 8 bit. namoroso@mrscuole.

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S. 2007 2008. Microcontrollori Microchip PIC 8 bit. namoroso@mrscuole. Corso introduttivo sui microcontrollori A. S. 2007 2008 Microcontrollori Microchip PIC 8 bit Nicola Amoroso namoroso@mrscuole.net NA L2 1 Microcontrollori Microchip PIC 8 bit PIC: Peripheral Interface

Dettagli

Architettura di un calcolatore: introduzione

Architettura di un calcolatore: introduzione Corso di Calcolatori Elettronici I Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

Informatica Teorica. Macchine a registri

Informatica Teorica. Macchine a registri Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire

Dettagli

Hardware di un Computer

Hardware di un Computer Hardware di un Computer Monitor Mouse Tastiera Printer Disk CPU Graphics Adapter USB Controller Parallel Port Disk Controller BUS Memoria RAM Memoria ROM (BIOS) DMA CPU esegue istruzioni, effettua calcoli,

Dettagli

La protezione dai memory error exploit

La protezione dai memory error exploit Università degli Studi di Milano Sommario Introduzione 1 Stack Guard Terminator Canaries Random Canaries 2 3 Buffer Overflow Stack Guard Introduzione Buffer Overflow Condizione anomala. Memorizzazione

Dettagli

Integer Java Virtual Machine (IJVM)

Integer Java Virtual Machine (IJVM) Integer Java Virtual Machine (IJVM) Calcolatori Elettronici II Prof. Antonino Mazzeo mazzeo@unina.it Ing. Luigi Romano Ing. Alessandro Cilardo Ing. Luigi Coppolino lrom@unina.it acilardo@unina.it lcoppoli@unina.it

Dettagli

Architettura degli elaboratori (A)

Architettura degli elaboratori (A) Laurea in Informatica a.a. 2010-2011 Laboratorio del corso di Architettura degli elaboratori (A) Modulo 1: l Architettura dell 8086 Valeria Carofiglio Linguaggi a vari livelli e loro relazioni Programma

Dettagli

Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18

Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Calcolatore: sottosistemi Processore o CPU (Central Processing

Dettagli

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica L Assembler 8086 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Si suddividono in: istruzioni per il calcolo binario istruzioni

Dettagli

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 Esercizi Assembly Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 1 RIPASSO Architettura dei registri del 68K Di (0 i 7): registri di dato a 8, 16, 32 bit Ai (0 i 7): resgistri di a 16, 32

Dettagli

ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI

ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI PROGETTO DELLA CPU ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI SCELTE PROGETTUALI: 1. DOVE SONO MEMORIZZATI GLI ERANDI NELLA CPU? 2 QUANTI ERANDI SONO CHIAMATI IN MODO ESPLICITO 3. DOVE

Dettagli

CAP. 4: Aspetti generali del Sistema Operativo Linux. l http://home.dei.polimi.it/silvano/acso.htm

CAP. 4: Aspetti generali del Sistema Operativo Linux. l http://home.dei.polimi.it/silvano/acso.htm Struttura interna del sistema Operativo Linux CAP. 4: Aspetti generali del Sistema Operativo Linux CAP. 5: Funzionalità del calcolatore l http://home.dei.polimi.it/silvano/acso.htm Funzionalità del Sistema

Dettagli

Lezione n.9. Introduzione al linguaggio macchina

Lezione n.9. Introduzione al linguaggio macchina Lezione n.9 Autore:Luca Orrù 1 Sommario Esecuzione delle istruzioni Architettura interna ed esterna Linguaggio assembler e modi d indirizzamento Consideriamo ora la singola istruzione e la scomponiamo

Dettagli

Architetture dei Calcolatori (Lettere. Installazione di SPIM. Interfaccia Grafica

Architetture dei Calcolatori (Lettere. Installazione di SPIM. Interfaccia Grafica SPIM Architetture dei Calcolatori (Lettere A-I) SPIM Ing.. Francesco Lo Presti Simulatore che esegue programmi assembler per architetture RISC MIPS R2000/R3000 Legge programmi in assembler MIPS e li traduce

Dettagli

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti Il processore: unità di lo Architetture dei Calcolatori (lettere A-I) L unità di lo L unità di lo è responsabile della generazione dei segnali di lo che vengono inviati all unità di elaborazione Alcune

Dettagli

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario Lezione 2 Principi Fondamentali di SO Interrupt e Caching Sommario Operazioni di un SO: principi fondamentali Una visione schematica di un calcolatore Interazione tra SO, Computer e Programmi Utente 1

Dettagli

8 Microcontrollori PIC

8 Microcontrollori PIC 8 Microcontrollori PIC 8.1 Descrizione generale Un microcontrollore è un dispositivo elettronico che opportunamente programmato è in grado di svolgere diverse funzioni in modo autonomo. Essenzialmente

Dettagli

Lezione 16: L architettura LC-3

Lezione 16: L architettura LC-3 Lezione 16: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 15 Maggio 2013 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000 AXO Achitettura dei Calcolatori e Sistema Operativo Instruction Set Architecture (ISA) e 68000 introduzione a ISA ISA - Instruction Set Architecture insieme delle istruzioni (instruction set) che possono

Dettagli

06 Livello di micro architettura

06 Livello di micro architettura Livello di micro architettura Pagina 2 Introduzione il livello di micro architettura implementa le funzioni del livello sovrastante (ISA) come livello ISA di riferimento si sceglie una parte della JVM

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel di terza generazione progetto originario del 1979, ancora oggi interessanti per: 1. motivi didattici: l architettura dei processori

Dettagli

Il simulatore SPIM SPIM

Il simulatore SPIM SPIM Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html

Dettagli

PARTE III MACCHINE A REGISTRI

PARTE III MACCHINE A REGISTRI PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson

Dettagli

Lezione E12. Sistemi operativi open-source, embedded e real-time

Lezione E12. Sistemi operativi open-source, embedded e real-time Lezione E12 Sistemi operativi open-source, embedded e real-time 17 dicembre 2013 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SOSERT 13 E12.1 Di

Dettagli

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica prof. ing. Corrado Santoro Schema a blocchi di una CPU Arithmetic Logic Unit Control Unit Register File BUS Control

Dettagli

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO PROGRAMMA Descrizione funzionale di un calcolatore elementare, COS'E' UN ELETTRONICO HARDWARE SOFTWARE HARDWARE

Dettagli

Linguaggio Assembly. Architettura di riferimento Formato istruzioni Classi di istruzioni Modalità di indirizzamento Direttive Codice macchina

Linguaggio Assembly. Architettura di riferimento Formato istruzioni Classi di istruzioni Modalità di indirizzamento Direttive Codice macchina Linguaggio Assembly Architettura di riferimento Formato istruzioni Classi di istruzioni Modalità di indirizzamento Direttive Codice macchina Modello di architettura di riferimento Nel seguito faremo riferimento

Dettagli

Architettura del calcolatore

Architettura del calcolatore Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale

Dettagli

Calcolatori Elettronici Parte VII: il Livello delle Istruzioni Macchina

Calcolatori Elettronici Parte VII: il Livello delle Istruzioni Macchina Anno Accademico 2013/2014 Calcolatori Elettronici Parte VII: il Livello delle Istruzioni Macchina Prof. Riccardo Torlone Universita Roma Tre Instruction Set Architecture Il livello ISA è l interfaccia

Dettagli

Il sistema di I/O. Calcolatori Elettronici 1. Architettura a bus singolo. Memoria. Unità di I/O. Interfaccia. Unità di I/O.

Il sistema di I/O. Calcolatori Elettronici 1. Architettura a bus singolo. Memoria. Unità di I/O. Interfaccia. Unità di I/O. Il sistema di I/O Calcolatori Elettronici 1 Architettura a bus singolo Memoria CPU Interfaccia Unità di I/O Interfaccia Unità di I/O Calcolatori Elettronici 2 1 Interfaccia Svolge la funzione di adattamento

Dettagli

La macchina programmata Instruction Set Architecture (1)

La macchina programmata Instruction Set Architecture (1) Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2014-15 La macchina programmata Instruction Set Architecture (1) Schema base di esecuzione Istruzioni macchina Outline Componenti di un

Dettagli

AMBIENTE DI SIMULAZIONE ASIM

AMBIENTE DI SIMULAZIONE ASIM LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 10 Prof. Rosario Cerbone rosario.cerbone@uniparthenope.it http://digilander.libero.it/rosario.cerbone a.a. 2008-2009 AMBIENTE DI SIMULAZIONE ASIM Digitazione

Dettagli

Elettronica dei Sistemi Programmabili A.A. 2013-2014. Microcontrollori. Introduzione allo sviluppo di progetti

Elettronica dei Sistemi Programmabili A.A. 2013-2014. Microcontrollori. Introduzione allo sviluppo di progetti Elettronica dei Sistemi Programmabili A.A. 2013-2014 Microcontrollori Introduzione allo sviluppo di progetti Premessa Qualunque sistema basato su microcontrollore deve eseguire un codice memorizzato in

Dettagli

Calcolo numerico e programmazione Architettura dei calcolatori

Calcolo numerico e programmazione Architettura dei calcolatori Calcolo numerico e programmazione Architettura dei calcolatori Tullio Facchinetti 30 marzo 2012 08:57 http://robot.unipv.it/toolleeo Il calcolatore tre funzionalità essenziali:

Dettagli

Assembly MIPS: gestione degli array strutture di controllo. A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano

Assembly MIPS: gestione degli array strutture di controllo. A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano Architettura degli Elaboratori Assembly MIPS: gestione degli array strutture di controllo A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano 1 Istruzione MIPS: lw (load

Dettagli

Lezione 8. Figura 1. Configurazione del registro INTCON

Lezione 8. Figura 1. Configurazione del registro INTCON Lezione 8 In questa puntata, ci dedicheremo all'impiego dei cosiddetti "interrupt", che tanto incutono temore ai più inesperti. Ma che cosa sono questi interrupt? Come abbiamo già visto, un programma non

Dettagli

Microelettronica. Architettura del processore ARM. Stefano Salvatori. Università degli Studi Roma Tre. (salvator@uniroma3.it) Microelettronica

Microelettronica. Architettura del processore ARM. Stefano Salvatori. Università degli Studi Roma Tre. (salvator@uniroma3.it) Microelettronica Microelettronica Architettura del processore ARM Stefano Salvatori (salvator@uniroma3.it) Microelettronica Sommario Architettura ARM Differenze con i RISC Programmer s model Sistemi di sviluppo Microelettronica

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Classificazione dei calcolatori elettronici Sistemi basati sull architettura di von Neumann rchitettura dei calcolatori: definizioni Evoluzione dell architettura rchitettura della

Dettagli

Corso di Informatica Applicata. Lezione 7. Università degli studi di Cassino

Corso di Informatica Applicata. Lezione 7. Università degli studi di Cassino Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Lezione 7 Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.: +39

Dettagli

Tecniche di traduzione da C ad assembly 68000. Note generali

Tecniche di traduzione da C ad assembly 68000. Note generali Tecniche di traduzione da C ad assembly 68000 Note generali Schema di compilazione da C ad assembly 68K Ispirato a GCC Fa uso di: banco di registri classi d istruzioni modi d indirizzamento e organizzazione

Dettagli

' Z80:' archite:ura'ed'esperienze'di' laboratorio' ' P.'Vicini' ' P.Vicini'('Lab.'Sistemi'e'Segnali' 1'

' Z80:' archite:ura'ed'esperienze'di' laboratorio' ' P.'Vicini' ' P.Vicini'('Lab.'Sistemi'e'Segnali' 1' ' Z80:' archite:ura'ed'esperienze'di' laboratorio' ' P.'Vicini' ' P.Vicini'('Lab.'Sistemi'e'Segnali' 1' Calcolatori Prodotto di una tecnologia estremamente vitale con alto impatto economico e sociale Tecnologia

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Corso di Laurea Triennale in Informatica Università degli Studi di Bari Anno Accademico 2009-2010 Laboratorio lez1: il processore 8086/88 Prof. S.Pizzutilo I processori Intel

Dettagli

Gestione dell'interrupt con il microcontrollore ATMega328 (scheda Arduino)

Gestione dell'interrupt con il microcontrollore ATMega328 (scheda Arduino) Gestione dell'interrupt con il microcontrollore ATMega328 (scheda Arduino) Un microcontrollore normalmente esegue le istruzioni nella sequenza definita in fase di programmazione (fig. 1). Comunque, il

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI

UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI 1 RICHIAMI SUL MIPS UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI L ARCHITETTURA DI RIFERIMENTO: LA MACCHINA MIPS INSTRUCTION SET MIPS R2000 ISTRUCTION SET SEMPLIFICATO: emips ESEMPI DI PROGRAMMAZIONE

Dettagli

Corso di Sicurezza Informatica

Corso di Sicurezza Informatica Corso di Sicurezza Informatica Sicurezza del Software Ing. Giuseppe D Aquì Sicurezza nell informatica Un computer sicuro è un computer spento (Kevin Mitnick) Attacchi informatici Gli attacchi informatici,

Dettagli

UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI

UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI 1 RICHIAMI SUL MIPS UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI L ARCHITETTURA DI RIFERIMENTO: LA MACCHINA MIPS INSTRUCTION SET MIPS R2000 ISTRUCTION SET SEMPLIFICATO: emips ESEMPI DI PROGRAMMAZIONE

Dettagli

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE 1. INTRODUZIONE In questo capitolo viene presentata la struttura, sia interna che esterna, di un microprocessore generico riprendendo i concetti esposti nella

Dettagli

L organizzazione interna della memoria e del banco di registri prevedono generalmente che le uscite di 2 o più componenti

L organizzazione interna della memoria e del banco di registri prevedono generalmente che le uscite di 2 o più componenti Banco di registri e memoria Corso ACSO prof. Cristina SILVANO Politecnico di Milano Componenti di memoria e circuiti di pilotaggio L organizzazione interna della memoria e del banco di registri prevedono

Dettagli

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler Indice Linguaggio ad alto livello, linguagio assembler e linguaggio macchina Il linguaggio assembler MIPS: istruzioni aritmetiche, di trasferimento dati e di salto Conversione linguaggio assembler in linguaggio

Dettagli

Istituto Tecnico Industriale E. Fermi - Ascoli Piceno. Appunti delle Lezioni di Teoria dei Sistemi

Istituto Tecnico Industriale E. Fermi - Ascoli Piceno. Appunti delle Lezioni di Teoria dei Sistemi Istituto Tecnico Industriale E. Fermi - Ascoli Piceno Specializzazione Elettronica e Telecomunicazioni Classe IV Sez. A Appunti delle Lezioni di Teoria dei Sistemi Sistemi a Microprocessore Linguaggio

Dettagli

Introduzione ai Microcontrollori Workshop 08/06/2011 Dott.Ing.Marco Frosini Qprel srl Dott.Ing.Lorenzo Giardina Qprel srl Slide 1 di 27 L'elettronica digitale PRIMA dei microcontrollori Elemento base:

Dettagli

Z80: archite:ura ed esperienze di laboratorio. P. Vicini. P.Vicini - Lab. Sistemi e Segnali

Z80: archite:ura ed esperienze di laboratorio. P. Vicini. P.Vicini - Lab. Sistemi e Segnali Z80: archite:ura ed esperienze di laboratorio P. Vicini 1 Calcolatori Prodotto di una tecnologia estremamente vitale con alto impatto economico e sociale Tecnologia pervasiva: calcolo, controllo,......

Dettagli

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati Il Livello LogicoDigitale i Blocchi funzionali combinatori Circuiti integrati Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati

Dettagli

Struttura del calcolatore

Struttura del calcolatore Struttura del calcolatore Proprietà: Flessibilità: la stessa macchina può essere utilizzata per compiti differenti, nessuno dei quali è predefinito al momento della costruzione Velocità di elaborazione

Dettagli

Giovanni De Luca. Giovanni De Luca. Introduzione ai uc ATMEL. programmazione ad alto livello. ATMEL Serie. AVR e ai linguaggi di

Giovanni De Luca. Giovanni De Luca. Introduzione ai uc ATMEL. programmazione ad alto livello. ATMEL Serie. AVR e ai linguaggi di www.delucagiovanni.com deluca@lns.infn.it Introduzione ai uc ATMEL AVR e ai linguaggi di programmazione ad alto livello Laboratorio Progettazione Elettronica ATMEL Serie Scopo del corso Il corso propone

Dettagli

Sistemi Elettronici #1. Sistemi Elettronici. Definizioni e concetti generali. Sistemi Elettronici Laurea Triennale in Elettronica A.A.

Sistemi Elettronici #1. Sistemi Elettronici. Definizioni e concetti generali. Sistemi Elettronici Laurea Triennale in Elettronica A.A. Sistemi Elettronici Definizioni e concetti generali Concetti generali Il microcontrollore è un dispositivo che raggruppa su un unico chip un processore ed un insieme di dispositivi CPU Memoria RAM Memoria

Dettagli

CALCOLATORI ELETTRONICI 15 aprile 2014

CALCOLATORI ELETTRONICI 15 aprile 2014 CALCOLATORI ELETTRONICI 15 aprile 2014 NOME: COGNOME: MATR: Scrivere nome, cognome e matricola chiaramente in caratteri maiuscoli a stampa 1 Di seguito è riportato lo schema di una ALU a 32 bit in grado

Dettagli

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine. Quinto Homework 1) Si vuole progettare una cache a mappatura diretta per un sistema a 32 bit per una memoria da 2 GB (quindi sono solo 31 i bit utili per gli indirizzi) e blocchi di 64 byte. Rispondere

Dettagli

ASSEMBLER 68K parte 2

ASSEMBLER 68K parte 2 ASSEMBLER 68K parte 2 CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Classi di istruzioni Un calcolatore deve avere istruzioni in grado

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 ISA e LINGUAGGIO ASSEMBLY MIPS Massimiliano Giacomin 1 Architettura MIPS Architettura RISC e load-store sviluppata da John Hennessy nel 1981 Usata da NEC, Nintendo,

Dettagli

09-05-07. Introduzione ai microcontrollori PIC

09-05-07. Introduzione ai microcontrollori PIC 09-05-07 Introduzione ai microcontrollori PIC Daniele Beninato: Nicola Trivellin: beninato@dei.unipd.it trive1@tin.it Che cosa è un microcontrollore? Un microcontrollore è un sistema a microprocessore

Dettagli

Il microprocessore Z80. 10 dicembre 2013

Il microprocessore Z80. 10 dicembre 2013 Il microprocessore Z80 10 dicembre 2013 Architettura di un computer CPU Unità periferiche Memoria Disco Video Tastiera Stampante In passato una CPU era costituita da un enorme volume di circuiti elettronici;

Dettagli

L Assembler 80x86 Concetti Generali. M. Rebaudengo M. Sonza Reorda P. Bernardi

L Assembler 80x86 Concetti Generali. M. Rebaudengo M. Sonza Reorda P. Bernardi L Assembler 80x86 Concetti Generali M. Rebaudengo M. Sonza Reorda P. Bernardi Sommario Introduzione Pseudo-Istruzioni Operatori Modi di Indirizzamento Istruzioni Sommario Introduzione Pseudo-Istruzioni

Dettagli

STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET

STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET Lo stack STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET Lo stack (tradotto talvolta in italiano con pila o catasta) è un'area di memoria privilegiata, dove il microprocessore può salvare

Dettagli

PIT 2012: Workshop@UniNA

PIT 2012: Workshop@UniNA PIT 2012: Workshop@UniNA Arduino: Open Hardware - a cura di Luciano Esposito - con il patrocinio del Preside della Facoltà di Ingegneria dell'università degli Studi di Napoli Federico II: Prof. Piero Salatino

Dettagli

E una notazione per descrivere gli algoritmi.

E una notazione per descrivere gli algoritmi. Linguaggio di Programmazione E una notazione per descrivere gli algoritmi. Programma:: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni linguaggio

Dettagli

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti Corso di Sicurezza Informatica Sicurezza del software Ing. Gianluca Caminiti Software Sicuro Privo di errori (logici) che comportino un comportamento inatteso. Tali bug possono minare la sicurezza dell

Dettagli