Architetture dei Sistemi Elettronici

Documenti analoghi
Il linguaggio assembly

Fetch Decode Execute Program Counter controllare esegue prossima

Fondamenti di Informatica B

Istruzioni di trasferimento dati

Assembly (3): le procedure

Assembly (3): le procedure

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

Assembly IV Le procedure

Istruzioni e linguaggio macchina

Architettura dei Calcolatori elettronici

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Architettura di una CPU

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

LABORATORIO DI SISTEMI

Istruzioni di controllo del flusso

CPU. ALU e Registri della CPU. Elementi della CPU. CPU e programmazione (Parte 1) Central Processing Unit, processore

Rappresentazione dell informazione

FONDAMENTI DI INFORMATICA Lezione n. 11

Architettura degli Elaboratori

Introduzione al linguaggio assembly MC68000

Programmazione in linguaggio assembly per architetture Intel 8088

Il linguaggio macchina

Fondamenti di Informatica A. A / 1 9

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto

Introduzione al linguaggio macchina. Istruzione l/m

Vari modi di specificare l indirizzo degli operandi

Architettura degli Elaboratori

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Sistemi a microprocessore

Istruzioni e linguaggio macchina

L'INDIRIZZAMENTO NEL PROCESSORE MC PARTE 1 -

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

Il processore Intel 8086

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Assembly. Modello x86

Introduzione al linguaggio macchina

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

Introduzione a ISA. Il Livello ISA Instruction Set Level Architecture. Livello ISA e Motorola 68000: introduzione. Che cosa descrive ISA

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.

Architetture dei Calcolatori

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Modi di indirizzamento

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architetture dei Sistemi Elettronici

15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio

Architettura del calcolatore (Seconda parte)

Modi di indirizzamento

Architettura degli Elaboratori e Laboratorio

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Introduzione al linguaggio assembly

Architettura dei computer

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO

Stack e nidificazione dei sottoprogrammi Cos è un sottoprogramma? La chiamata di un sottoprogramma... 6

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Calcolatore: sottosistemi

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)

Il linguaggio Assembly

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Gestione delle subroutine. Appunti di Sistemi per la cl. IV Dinf A cura del prof. Ing. Mario Catalano

Il linguaggio assembly

Macchina di Von Neumann

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

Il linguaggio macchina

Ogni CPU è in grado di eseguire un insieme limitato di istruzioni macchina codificate in binario secondo il seguente schema generale.

Linguaggio Assembly e linguaggio macchina

Modi di indirizzamento parte 1. Modello di programmazione del processore MC68000

Lezione 15. L elaboratore Elettronico

slt $t1,$t2,$t3 if ($t2<$t3) $t1=1; Confronto tra registri slti $t1,$t2,100 if ($t2<100)$t1=1; Cfr. registro-costante

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Modi di indirizzamento del processore MC68000 parte 1

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Informatica. Mario Pavone - Dept. Mathematics & Computer Science - University of Catania. Trasferimento. Ambiente esterno.

Università degli Studi di Cassino

Linguaggi di Programmazione

SISTEMA DI ELABORAZIONE

Memoria: lettura, scrittura e indirizzamento

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Introduzione al C. Informatica Generale - Introduzione al C Versione 1.0, aa p.1/17

Rappresentazione delle istruzioni

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Memoria centrale (RAM) Registri della CPU. Definizioni. Architettura considerata in CPUSim. Programma in linguaggio macchina

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

Modi di indirizzamento del processore MC68000 (parte prima)

Metodi di indirizzamento

Linguaggio Assembly e linguaggio macchina

Linguaggi e moduli. Dott. Franco Liberati

Nel microprocessore 8086 abbiamo una gran quantità di registri

La macchina di Von Neumann. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI "PROGRAMMAZIONE I"

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

L insieme delle istruzioni (6)

Linguaggio Assembly e linguaggio macchina

Il Processore: l unità di controllo

Architettura di un calcolatore: introduzione

Transcript:

Architetture dei Sistemi Elettronici Roberto Roncella 15. Introduzione al linguaggio assembly

Il linguaggio assembly È lo strumento di programmazione più vicino alla realtà fisicaelettronica di un elaboratore Gli elementi del linguaggio corrispondono agli elementi dell architettura del processore I programmi assembly sono codificati (cioè tradotti in valori binari) in modo diretto e inseriti nella memoria di programma dell elaboratore per essere eseguiti C è relazione diretta tra programma assembly e tempo di esecuzione della macchina Considerazione: ogni macchina (o famiglia di macchine) ha il suo assembly 2

3 Un programma assembly... Lista ordinata di istruzioni, con riferimenti a elementi di vario tipo Ciascuna istruzione ha una lunghezza nota e occuperà un preciso indirizzo nella memoria di programma.org 1 ;scrivi dall'indirizzo 1 MULT: push CNT ;salva il contatore clr OUT1 ;cancella la parte alta del risultato mov OUT,IN ;copia il moltiplicatore nella parte bassa ldi CNT,8 ;inizializza il contatore lsr OUT ;shifta il moltiplicatore a destra M1: brcc M2 ;somma solo se C set add OUT1,IN1 ;somma il moltiplicando a OUT1 M2: ror OUT1 ;ruota a destra la parte alta del risultato ror OUT ;ruota a destra la parte alta del risultato dec CNT ;decrementa il contatore (non tocca C) brne M1 ;ripeti per 8 volte pop CNT ;ripristina il contatore ret

Elementi del linguaggio (1) Istruzioni con i loro operandi Le istruzioni sono individuate da un codice mnemonico e da alcuni simboli che indicano su quali valori operano (gli operandi) Gli operandi sono variabili e/o costanti di tipo opportuno Etichette (label) Partono dall inizio della riga e sono concluse dai : Indicano simbolicamente l indirizzo di una istruzione nella memoria di programma 4

Elementi del linguaggio (2) I commenti Sono elementi accessori importantissimi per la comprensione del funzionamento del programma e la sua manutenibilità Sono introdotti (tipicamente) da ; oppure // Alcuni assembler accettano anche /* */, come il C Le direttive Sono comandi dedicati al programma che ha il compito di tradurre l assembly in codice eseguibile (assembler) Sono introdotti dal. 5

6 Tipologie di memoria Nell elaboratore elementare sono presenti diversi tipi di memoria, a cui sono associati gli elementi del linguaggio Memoria di programma Memoria dei dati interna Registri interni Alcuni registri di I/O Variabili logiche Contengono informazioni sull esito di ogni istruzione Memoria dei dati estesa Memoria di uso generale, anche esterna La maggior parte dei registri di I/O

7 Rappresentazione dell informazione A ogni tipo di memoria (dimensione n bit) possono essere attribuiti valori binari (2 n ) con diversi significati Valori di tipo istruzione Valori di tipo byte (8 b) o word (16 b) senza segno (numeri binari) Valori di tipo byte o word con segno Secondo opportune leggi di rappresentazione Valori di tipo carattere, secondo tabelle predefinite (es.: ASCII) Valori di tipo indirizzo Della memoria di programma o della memoria dati estesa Valore di tipo salto (displacement) Valore di tipo flag

Memoria di programma (1) Contiene in generale valori di tipo istruzione e ha dimensione di m parole da n bit Address 1 Instr #1 (1 W) Instr #2 (1 W) Value (n) Ogni valore istruzione sarà rappresentato da 1, 2 o più parole da n bit Ogni locazione è individuata da un indirizzo costituto da log2(m) bit 2 4 5 7 Instr #3 (2 W) Instr #4 (1 W) Instr #5 (3 W) 8

Memoria di programma (2) Il valore istruzione è un record articolato, costituito da più campi, variabili in generale per numero e dimensione È possibile individuare il campo codice operativo e uno o più campi per indicare gli operandi Esistono istruzioni con, 1, 2 o più operandi Il primo operando indicato individua in genere anche la destinazione del risultato Generica istruzione da 2 operandi (e 2 W) Codice operativo Op sorgente Op destinazione 9

Registri interni di lavoro (1) Sono contenuti all interno dell elaboratore e sono generalmente le memorie più accessibili Sono a volte raggruppati in banchi Hanno dimensioni tipiche di 8 b (per piccole macchine), ma si possono raggruppare per formare variabili di dimensioni maggiori Sono individuati da sigle come R, R1, ecc Ma esistono direttive per assegnare loro nomi simbolici R1 R3 R5 R7 R R2 R4 R6 1

Registri interni (2) Contengono in genere valori numerici, con o senza segno, o di tipo carattere Sono i valori su cui vengono eseguite le operazioni previste dalle singole istruzioni Esistono diverse leggi che associano al valore dei bit (rappresentante) un diverso valore (rappresentato) Alcuni registri interni (a volte tutti) sono specializzati per contenere indirizzi Si definiscono puntatori Si hanno puntatori alla memoria di programma o alla memoria dati estesa 11

12 Registri di I/O Si tratta di registri interni specializzati per la gestione e l interfaccia con il mondo esterno Spesso, alla periferia dell elaboratore, esistono sistemi elettronici con funzioni specializzate Conteggio, comunicazione a distanza, analisi di informazioni di tipo analogico, attivazione di attuatori, Sono definite periferiche Attraverso i registri di I/O è possibile controllare il loro funzionamento e scambiare informazione Sono indicati da codici numerici Ma di norma i costruttori definiscono nomi simbolici significativi per riferirsi a questi registri (es.: IN, DIR, OUT, ecc.)

13 Memoria dati estesa Oltre ai registri interni, spesso esiste una matrice di grandi dimensioni (anche diversi kilobyte) utile per memorizzare dati Contiene lo stesso tipo di informazioni memorizzate nei registri interni ed è organizzata come array di k byte Ogni dato sarà rappresentato da 1, 2 o più byte, secondo la volontà del programmatore Ogni locazione è individuata da un indirizzo costituto da log2(k) bit Solitamente, per informazioni su più byte, si attribuisce all'entità l'indirizzo del primo byte, quello di valore minore Può risiedere anche in un chip esterno al microcontrollore

14 Registri interni specializzati Alcuni registri interni hanno funzioni particolari Possono essere legati al meccanismo di funzionamento del processore PC (Program Counter) Possono dare informazioni sullo svolgimento dello programma STATUS (Registro di stato) Permettono di realizzare particolari strutture dati SP (Stack Pointer)

15 Registri particolari: PC Il contatore di programma È una variabile che contiene un valore indirizzo L indirizzo fa riferimento alla memoria di programma Indica l istruzione che la macchina sta per eseguire Viene aggiornata automaticamente dalla macchina All accensione è inizializzata automaticamente a un valore noto (es.: ) Normalmente è incrementata di un numero pari alla dimensione dell istruzione caricata (le istruzioni sono lunghe 1, 2 o 3 unità della memoria di programma) Ci sono istruzioni che possono alterarne il contenuto Sono i salti, condizionati o no

16 Registri particolari: STATUS È una variabile che raggruppa bit il cui valore logico dà informazioni sull esecuzione del programma I bit del registro STATUS vengono definiti FLAG Le informazioni principali provengono dall esecuzione di istruzioni logico-aritmetiche. Alcuni esempi generici: C (carry, riporto) indica la presenza di riporto o prestito in operazioni di somma/differenza tra interi senza segno S (sign, segno) indica se il segno di una operazione è negativo (S = 1) o non negativo (S = ) Z (zero) indica se un operazione ha dato risultato nullo (Z = 1) P (parity, parità) indica se il numero di bit a 1 del risultato di un operazione è pari (P = ) o dispari (P = 1)

Registri particolari: SP (1) Nella memoria dati estesa si può creare una particolare struttura dati: la pila (stack) Può essere utile per appoggiarci i valori contenuti nei registri interni che devono essere usati per altre operazioni Come in una pila di libri, è possibile inserire nuovi libri (in cima) o recuperare il libro posto più in alto L ultimo oggetto inserito è quello disponibile per essere recuperato (LIFO, last in - first out) 1 2 3 17

18 Registri particolari: SP (2) Come è gestito lo stack? Il registro SP (stack pointer) contiene l indirizzo della locazione in cima allo stack Le dimensioni del registro SP sono quindi tali da contenere una variabile di tipo indirizzo alla memoria dati estesa Si tratta di un numero binario senza segno compreso tra e k Il registro SP viene usato per gestire le operazioni di inserimento e prelievo dalla pila Indica l indirizzo della memoria dati estesa in cui il dato deve essere inserito o da cui deve essere prelevato Il valore di SP è aggiornato in modo automatico, in modo da garantire il funzionamento della pila

Registri particolari: SP (3) Inserimento nello stack (PUSH) L oggetto viene posto nella memoria all indirizzo indicato da SP Il valore di SP viene poi decrementato, in modo che punti una locazione libera R1 SP 123 545 54 541 542 543 544 545 546 547 33 111 R1 SP 123 544 54 541 542 543 544 545 546 547 123 33 111 PUSH R1 19

Registri particolari: SP (4) Prelievo dallo stack (POP) Il valore di SP viene incrementato Ritorna a puntare l ultima cella in cui era stato inserito un dato Viene prelevato il valore dalla memoria all indirizzo indicato R1 SP 94 544 54 541 542 543 544 545 546 547 123 33 111 R1 SP 123 545 54 541 542 543 544 545 546 547 123 33 111 POP R1 2

Rappresentazione Per descrivere il funzionamento delle istruzioni e capire che tipo di informazioni abbiamo nelle diverse memorie, è necessario avere presenti le principali leggi di rappresentazione Iniziamo con le variabili di tipo numerico o carattere contenute in memorie da 8 b (byte) Indichiamo i bit del rappresentante con b7 (MSB), b 6, b 5, b 4, b 3, b 2, b 1, b (LSB) MSB (LSB): most (least) significant bit b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 21

Rappresentazione - byte (1) Interi binari senza segno È la codifica numerica più immediata Esprime valori compresi tra e 255 x = 128b7 + 64b 6 + 32b 5 + 16b 4 + 8b 3 + 4b 2 + 2b 1 + b Codifica BCD Mantiene traccia della base 1, usata normalmente dagli umani Esprime valori compresi tra e 99 (alcune combinazioni di valori non sono ammesse) x = 1(8b7 + 4b 6 + 2b 5 + b 4 ) + 8b 3 + 4b 2 + 2b 1 + b 22

Rappresentazione - byte (2) Interi binari con segno È detta codifica in complemento a 2 Esprime valori compresi tra -128 e 127 x = -128b7 + 64b 6 + 32b 5 + 16b 4 + 8b 3 + 4b 2 + 2b 1 + b Ha l importante proprietà di poter essere gestita dagli stessi operatori di somma e differenza dei numeri interi senza segno Questa rappresentazione può essere adatta a valori di tipo salto 23

24 Rappresentazione - byte (3) Valori di tipo carattere Il valore della variabile è un simbolo alfanumerico Lettere alfabetiche maiuscole e minuscole Numeri Simboli di punteggiatura, di valuta, matematici, grafici Carattere speciali, come l indicazione di a capo Viene assegnato in modo convenzionale, facendo riferimento a tabelle di codifica standard La più diffusa è la codifica ASCII

Codifica ASCII 25

26 Rappresentazione - byte (3) Valori di tipo carattere Il valore della variabile è un simbolo alfanumerico Lettere alfabetiche maiuscole e minuscole Numeri Simboli di punteggiatura, di valuta, matematici, grafici Carattere speciali, come l indicazione di a capo Viene assegnato in modo convenzionale, facendo riferimento a tabelle di codifica standard La più diffusa è la codifica ASCII

Rappresentazione - word Valori di tipo interi binari senza segno Esprime valori compresi tra e (216-1) x = 2 15b 15 + 2 14 b 14 + + 2 3 b 3 + 2 2 b 2 + 2b 1 + b Questa rappresentazione si presta bene per esprimere valori di tipo indirizzi in piccole macchine, in cui la quantità di memoria non supera 64 k (2 16 ) celle Valori di tipo interi binari con segno Esprime valori compresi tra -215 e (2 15-1) x = -2 15b 15 + 2 14 b 14 + + 2 3 b 3 + 2 2 b 2 + 2b 1 + b Rappresentazione in complemento a 2 27

Ricordiamo l'algebra in complemento a 2 Il MSB determina il segno del numero rappresentato Quindi b7 esprime il valore del segno L inversione di segno si ottiene con operazioni semplici Complemento di bit (bi = 1 - b i ) e incremento La somma e la differenza si ottengono operando sui bit delle rappresentazioni come fossero interi senza segno Proprietà fondamentale della rappresentazione in complemento a 2 che ne ha sancito il successo Cambia il senso dei flag 28