Sintassi di mov. Un istruzione (p.es. ) non può avere sorgente m e destinazione m
|
|
- Renata Cecchini
- 7 anni fa
- Visualizzazioni
Transcript
1 Sintassi di mov Gli operandi delle istruzioni possono essere di 3 specie principali: 1. dati immediati (sono parte dell istruzione, p.es. nei formati delle istruzioni sono indicati con imm 2. registri non di segmento, indicati nei formati delle istruzioni con r; 3. riferimenti a locazioni di memoria, diretti (offset) o indiretti (solo via registri specializzati come ); sono indicati con m Inoltre valgono le convenzioni: r/m indica un operando che può essere tanto r quanto m; 8 o 16 possono indicare la dimensione; p.es. r8 (r 8 bit); operandi combinati da un istruzione hanno uguale dimensione. Un istruzione (p.es. ) non può avere sorgente m e destinazione m Esempio. Formati di : r,r/m r/m,r r/m,imm A tali formati principali vanno aggiunti: r/m,rseg rseg,r/m dove rseg denota un registro di segmento. ) Introduzione all assembler x86 16/11/ /14
2 mov e accessi alla memoria L istruzione può avere una locazione, specificata da un offset, come sorgente o destinazione. P.es.: mov al,[10h] mov bx,[20h] mov [20H],ax ; al:= byte all offset 10H (nel segmento indicato da DS) ; bx:= word all indirizzo 20H ; (word all indirizzo 20H):= ax In realtà se l offset è specificato numericamente come sopra, l assemblatore richiede anche il segment override prefix (v. oltre). Per rifare la stessa operazione sulle celle n,n+1,... un programma pone n in, esegue l operazione, incrementa e ricomincia. P.es.: incremento dei byte in, : mov bx,200h mov cx,3h ; n.byte da incrementare incr_next: mov al,[bx] ; al:= (contenuto cella di indirizzo = bx) inc al ; incrementa al mov [bx],al ; memorizza il byte incrementato inc bx ; bx:= (indirizzo prossimo byte da inc.) dec cx ; aggiorna n.byte da incrementare jnz incr_next ; ricomincia, se ci sono ancora byte da incr. L accesso indiretto via può riguardare anche una word: mov ax,[bx] Sull 8086 solo i registri,,, permettono l accesso indiretto: mov ax,[cx] ; errore! Una sola non può operare su due locazioni di memoria: p.es. non è valida; invece si deve usare, p.es.: mov bl,[21h] mov [20H],bl Questo non è molto meno efficiente di! " #! (stessi cicli di bus). Introduzione all assembler x86 16/11/ /14
3 Istruzioni di salto I salti possono essere condizionati (da flags) o incondizionati. In un programma assembler, il target (obiettivo) del salto è l etichetta simbolica (terminata da $ % ) di una riga del programma: mov ax,3 sub bx,ax ; il flag Z diventa 1 se bx-ax fa 0, 0 altrimenti jz oltre ; salta a oltre se il flag Z è 1, altrimenti continua inc dx ; eseguita solo se il flag Z è 0... oltre: mov cx,dx ; eseguita se jz oltre trova il flag Z a 1 jz label salta a label se il flag Z è 1, jnz label salta se Z è 0; jmp label salta sempre. label = lettera seguita da (sequenza di lettere, cifre o _ ) l assemblatore tiene conto solo dei primi 31 caratteri della label Esempio: frammento di programma che (non alterando ax): pone in dx: 1 se ax=bx, 0 altrimenti. cs:0005 8BC8 mov cx,ax ; copia AX (per non perderlo) cs:0007 2BC3 sub ax,bx ; se ax=bx il flag Z va a 1 cs: jz make1 ; in tal caso salta a make1 cs:000b BA0000 mov dx,0 ; dx=0 perchè ax<>bx cs:000e EB04 jmp reset ; va a ristabilire l ax iniziale cs: nop ; inserita dall assemblatore cs:0011 BA0100 make1: mov dx,1 ; dx=1 perchè ax=bx cs:0014 8BC1 reset: mov ax,cx ; ristabilisce l ax iniziale In realtà i salti in binario contengono l incremento signed displ da dare a & ' perché prenda l offset della label cui saltare. P. es. ( ) * +, -. / perché (istruzione successiva) = (* +, -. ) Formati: 4 cc e short : opcode displ (1byte); salta di : ; ; < = > : near : opcode displ (2 byte); salta entro ; ; < = > > > Introduzione all assembler x86 16/11/ /14
4 Memorizza? A B C?? A : Semplici esempi mov bx,200h ; offset iniziale mov cx,101h ; n. byte su cui operare (inizialm. 200H-300H) un_altro: mov byte ptr [bx],0h inc bx dec cx jnz un_altro Pone in D E il n.occorrenze di? G A nelle H? I K A A -@ H L A A M H L A : mov bx,200h mov cx,28h mov dx,0 nextloc: mov ax,[bx] sub ax,127h ; 127 è l occorrenza da trovare jnz missing_count inc dx missing_count: inc bx ; due inc bx consecutivi inc bx ; portano bx alla prossima word dec cx jz done ; jz+jmp serve se nextloc dista>128 B jmp nextloc ; più ovvio e efficiente: jnz nextloc done: Pone in N E la somma K A numeri contenuti nelle word da O?? A : add_next: mov ax,0 mov bx,500h mov cx,28h add ax,[bx] inc bx inc bx dec cx jnz add_next Introduzione all assembler x86 16/11/ /14
5 Programmi assembler Un programma TASM è composto di segmenti, specificati da: nome-segmento segment ; ogni segmento può contenere dati e/o istruzioni... ; specificati in notazione assembler nome-segmento ends ; questi non possono occupare più di 64kB Durante l esecuzione del binario generato dal programma TASM, la porzione (<64K) generata da ciascun segmento del programma, sarà caricata in un distinto segmento di memoria (dalla base in su). Per ora vedremo programmi di 3 segmenti: dati, stack e codice: dati segment ; il nome dati non ha un significato specifico per TASM ; qui vengono specificati i dati usati dal programma dati ends pila segment stack ; pila non ha un significato specifico, ma stack sì ; qui viene riservato spazio per lo stack pila ends code segment ; il nome code non ha un significato specifico per TASM ; qui compaiono le istruzioni code ends La memoria per i dati si riserva con le pseudo-op (non generano istruzioni CPU): P Q (Define Byte) P R P P P S P T (Define Tenbytes). ; dx consecutivi riservano locazioni consecutive db 16h ; riserva 1 byte contenente 16H db? ; riserva 1 byte non inizializzato ( valore iniziale indeterminato) db 'z' ; riserva 1 byte, di valore pari al codice ASCII di z dw 1992D ; riserva 1 word contenente 1992D in binario signed ; forme concise di allocazione e inizializzazione: dw 1,10,100,1000 ; come dw 1 dw db 'l','a',' ','c','a','s','a' ; come db 'l' db 'a'... db 'la casa' ; come sopra, ma più breve db 10H dup('a') ; riserva 10H byte, ognuno pari al cod. ASCII di A db 20D dup(?) ; riserva 20 byte non inizializzati Introduzione all assembler x86 16/11/ /14
6 Indirizzi simbolici in assembler In assembler non si usano di solito indirizzi espliciti. P.es: mov ax,[100] ; se manca ds:, TASM intende come mov ax,100 (warning) (ma usiamo U V W X Y Z [ \ ] ] ^ come forma simbolica dell istruzione _ \ ] ] ] \ ) Invece, si attribuiscono ai dati identificatori simbolici o nomi; nelle istruzioni il nome prende il posto dell indirizzo di un dato. Assembler Simbolico Binario yes_msg db 'Y' yes_msg prende la loc mov al,yes_msg mov al,[0013] 0005 A01300 mov yes_msg, S mov byte ptr [0013], C TASM traduce id offset nel codice binario contando i byte occupati da dati e istruzioni precedenti id. Nel nome qualificato (completo) di un dato figura anche il segmento: data segment x dw 1234H data ends... mov data:x,0 ; equivale a mov x,0 Ma ` deve essere unico: un solo dato in un solo segmento. In una define multipla di dati, il nome individua l offset del 1 dato: dec31_msg db 'buon anno' mov al,dec31_msg ; pone 'b' in al Con l operatore a b b c d e l offset di un nome si può usare come dato: x dw 1234 ; sia 8a90 l'offset di x mov ax,x ; mov ax,[8a90] (pone 1234 in ax) mov ax,offset x ; mov ax,8a90 Introduzione all assembler x86 16/11/ /14
7 Istruzioni in forma simbolica vs. assembler Come visto, ogni istruzione x86 può essere trascritta in tre forme: binaria simbolica: - opcode e operandi registri in formato mnemonico, - operandi offset e n.segmento in formato numerico; p.es.: mov [0120H], ax jmp +2 assembler: come simbolica, ma offset e n.segmento compaiono come identificatori: mov x,ax ; l assembler tradurrà p.es. in mov [0120H],ax jmp out ; l assembler tradurrà p.es. in jmp +2 Differenza tra istruzione simbolica (f g h +i ) e assembler (f g h j k l ): la istruzione simbolica, anche da sola, individua univocamente la corrispondente binaria (f g h m i n o p i ) la istruzione assembler deve stare in un programma completo (per calcolare gli offset) per essere tradotta in binario. Introduzione all assembler x86 16/11/ /14
8 Assemblaggio di identificatori TASM assembla senza altra informazione istruzioni con identificatori, purché dotate di segment override prefix. P.es.: Ma il codice data1 segment F000*(??) z db 0f000h dup(?) 3 F A x1 dw 978ah 4 F002 data1 ends data2 segment ABCD x2 dw 0ABCDH data2 ends code segment B 1E F000r mov bx,ds:x : 8B 1E 0000r mov bx,es:x code ends code segment B 1E F000r mov bx,x : 8B 1E 0000r mov bx,es:x code ends causa l errore (riga 9): can t address with currently assumed segment registers Problemi: 1. TASM sospetta (correttamente) che q r non punti segmento di s t 2. basta però il prefisso q r u per ingannarlo! Soluzioni: 1. pseudo-op v r r w x y 2. chi usa q r come prefisso dovrebbe ricordarsi di dare a q r un valore opportuno Introduzione all assembler x86 16/11/ /14
9 Pseudo-op assume e gestione dei segment register Motivazione della pseudo-op z { { } ~ : un istruzione sul dato x dichiarato nel segmento N ha senso solo se un registro di segmento r{ punta a N (contiene l indirizzo di N) per assicurare ciò a TASM, il programmatore deve (pena l errore can t address with currently assumed segment registers): 1. dare all istruzione il segment override prefix r{ (v. p. 7), o 2. dichiarare z { { } ~ r{ N = assumi (supponi) che r{ punta a N NB: (1) o (2) non mettono automaticamente in r{ l indirizzo di N, ma dovrebbero servire a ricordare al programmatore di farlo! Esempi data1 segment z db 0f000h dup(?) x1 dw 978ah ; offset di x1: f000 data1 ends data2 segment x2 dw 0ABCDH ; offset di x2: 0000 data2 ends assume ds:data1 ; caso (1); se mancasse assume ds:data1 mov bx,x1 ; qui TASM segnalerebbe l errore can t address... mov bx,es:x2 ; caso (2); se mancasse es: TASM segnalerebbe l errore Ciò non dà errori TASM, ma è scorretto: va completato come ricordano ƒ e mov ax,data1 ; dopo TASM, TLINK traduce data1 in indirizzo di segmento mov ds,ax ; data1 ax ds perché non l istruzione mov ds,dato assume ds:data1 ; assicura a TASM ds=data1 e ricorda di farlo davvero mov bx,x1 ; TASM assembla in 8b1e00f0=mov bx,[f000] mov ax,data2 ; che data2 va posto in es... mov es,ax ; viene ricordato dal prefisso es: nel prossimo rigo mov bx,es:x2 ; TASM assembla in 268b1e0000=mov bx,es:[0] NB: l override prefix ds: può servire per (2) sopra, ma non viene assemblato (inutile): assume ds:nothing ; annulla ogni assume riguardo a ds mov al,ds:z ; ds: serve per (2), ma TASM a00000=mov al,[0] Introduzione all assembler x86 16/11/ /14
10 Schema di programma assembler data data segment... ; dichiarazioni dei dati ends pila segment stack dw 100H dup(?) ; o altra quantità di memoria richiesta pila ends code segment assume ds:data,ss:pila,cs:code start: mov ax,data ; carica (via ax) l indirizzo del segmento data mov ds,ax ; in ds, reg. di segmento assunto per data... ; istruzioni del programma mov ah,4ch ; pone in ah il numero del servizio DOS che, int 21h ; invocato con int 21 riporterà al DOS code ends end start ; definisce l entry point (1 a istruzione da eseguire) Osservazioni la direttiva ˆ indirizzo-simbolico definisce indirizzo-simbolico come entry point e contrassegna la fine del programma (ciò che segue nel file contenente il programma viene ignorato) perché il programma sia eseguibile, deve avere un entry point i nomi dei Š Œ possono fare da operandi per le istruzioni; nell eseguibile saranno sostituiti dagli indirizzi dei segmenti di memoria scelti per ciascun Š Œ del programma l indirizzo di ˆ Œ va caricato in Ž esplicitamente (vedi start:) quando il programma assemblato viene eseguito, il DOS carica automaticamente in e gli indirizzi dei segmenti ˆ e ; i valori finali di e devono riportare il sistema sotto il controllo del DOS: ciò si ottiene con: š e Œ œ ž. Introduzione all assembler x86 16/11/ /14
11 Generazione di un Ÿ Ÿ da un programma assembler Se il programma assembler risiede in un solo file (sorgente) : 1. assemblaggio in un file oggetto ( ) con l assemblatore TASM; p.es. ª «o ( ª «) genera ª «2. linking del file oggetto in un file eseguibile, con il linker TLINK; p.es. ª «(o ª «) genera ª «± ² ±. Un programma complesso è in genere suddiviso in più file ; ciascuno può definire segmenti distinti da quelli degli altri e fare riferimento a dati o etichette esterni (definiti in altri file). TASM assembla ogni in un senza consultare gli altri ; ciò fa risparmiare tempo durante lo sviluppo di un programma. Quindi TLINK non può solo concatenare gli in ± ² ± ; deve anche: risolvere i riferimenti esterni scegliere un segmento di memoria per ogni ± ± ± ³ Esempio. Mappa del codice generato da TLINK Start Stop Length Name NB: indirizzi Start/Stop a 20 bit 00000H 00001H 00002H DATA dati (2 byte) nel segmento H 0002FH 00020H PILA pila (32 byte) nel segmento H 00038H 00009H CODE istruzioni (9 byte) nel segmento 0003 Program entry point at 0003:0000 NB: i segmenti di memoria di 64K scelti si sovrappongono, ma non le loro parti veramente occupate. Il DOS, poi, nel caricare il file µ, trasla gli indirizzi di segmento scelti da TLINK (marcati come tali nel file) in memoria non occupata; p. es. nel caso sopra,, potrebbero venire caricati come ¹ º º, ¹ º», ¹ º ¹ Inoltre il DOS pone in ¼ ½ il segmento dell entry point, e in ½ ½ quello marcato ½ ¾ ¼ À nel sorgente, ma a fissare Á ½ correttamente deve provvedere il programma (v. p.10). Introduzione all assembler x86 16/11/ /14
12 Accesso a indirizzi specifici Anche se TLINK/DOS scelgono dove caricare il programma, il programmatore assembler può accedere a qualsiasi segmento S: mov ax,9ff0h mov ds,ax mov [10],bx ; da qui gli offset saranno nel segmento 9ff0 ; 9ff0:[10] := bx Ma il programmatore deve sapere cosa fa; l esempio ha senso se il segmento Â Ã Ã Ä è libero, oppure, p.es., si vogliono modificare strutture dati DOS situate in Â Ã Ã Ä Å Æ Ç Ä È Introduzione all assembler x86 16/11/ /14
13 Ø Ù Ô Servizi e funzioni DOS Il DOS fornisce servizi software a programmi che li invocano: caricando i registri con valori opportuni eseguendo l'istruzione É Ê Ë Ì Í Î Ï completato il servizio l esecuzione riprende subito dopo la É Ê Ë Il servizio è individuato dal byte Í Î e dal contenuto di alcuni registri Funzioni: servizi richiesti con Ð Ñ Ï ; Ò Ó contiene il n. della funzione. Es.: Õ Ö Õ Ö Ú Û Ü Ý Õ Þ ß Ú Û Ü Ý Õ Þ à á ß â ã â ä N. funzione Descrizione Descrizione estesa Output su Scrive il carattere il cui ASCII è in schermo Output su seriale Stampa Invia alla stampante Output stringa Scrive la sequenza di caratteri nei byte,... finché trova (non scritto) Ritorno a DOS Termina il programma chiamante e torna a DOS Esempi (output): dec31_msg db 'buon anno$'... mov dl,'e' mov ah,2 int 21H ; scrive 'e' sub dl,20h int 21H ; scrive 'E' (NB: ASCII('E') = ASCII('e')-20H) mov dl,0dh int 21H ; scrive un CR (Carriage Return) mov dl,0ah int 21H ; scrive LF (Line Feed): per andare a capo servono CR e LF mov dx,offset dec31_msg ; NB: dec31_msg deve essere nel segm. Ú Û mov ah,9 int 21H Introduzione all assembler x86 16/11/ /14
14 è é ö å å å Funzioni DOS: input æ ç æ ê ë ì í î ï ð ñ ò ó ê ë ì í î ï ô ð ê ë ì í î ï ô õ ð ò ó ê ë ì í î ï ô õ ô æ ç ø ò å ù ú ù è ù é ë û ü ý þ ÿ þ ý æ ç þ õ N. funzione Descrizione Descrizione estesa input da attende la pressione di un tasto, ne pone l'ascii in e ne tastiera causa l'eco sullo schermo; può essere interrotto con CTRL-BREAK input come ma senza echo e non si può interrompere input come ma si può interrompere con CTRL BREAK Input stringa se N, accetta k (<N) caratteri + e pone k in, il 1 car. in,..., in kð stato tastiera se un carattere di input è disponibile, pone a se no a clear input Svuota il buffer di input e esegue la funzione tra da (è come un altro ) Esempi: mov ah,1 inkey: int 21H ; leggi un carattere sub al,'x' jnz inkey ; termina se si legge una x msg db 'hai scritto:',0dh,0ah,'$' inbuf db 4 dup(?),0dh,0ah,'$' mov cx,4 ; n. caratteri da leggere mov bx,offset inbuf ; leggeremo in inbuf mov ah,7 inkey1: int 21H ; legge senza eco un carattere in al mov [bx],al ; copialo dentro inbuf inc bx dec cx jnz inkey1 ; ricomincia (esci dopo aver letto 4 caratteri) mov ah,9 mov dx,offset msg int 21H ; scrivi msg mov dx,offset inbuf ; scrivi i caratteri letti int 21H inloop: mov ah,0bh int 21H sub al,0ffh jnz inloop ; esce appena si preme un tasto Introduzione all assembler x86 16/11/ /14
mov e accessi alla memoria
" mov e accessi alla memoria L istruzione può avere una locazione specificata da un offset come sorgente o destinazione Pes mov al[0h] al= byte all offset 0H (nel segmento indicato da DS) mov bx[20h] bx=
DettagliConfronti e salti condizionati
Confronti e salti condizionati I confronti tra numeri x e y sfruttano l effetto di / x,y sui flag. Occorre ricordare che è unica, ma l effetto sui flag riflette l interpretazione unsigned o signed dei
Dettagli! " # $ % & ' '! (! ) * + % + $ + +, -. /! < 6 : ;
! " # $ % & ' '! (! ) * + % + $ + +, -. /! 0 + 1 1 2 3 4 5 6 7 8 9 6 : ; ! " # $ % & ' '! (! ) * + % + $ + +, -. /! 0 + 1 1 2 3 4 5 6 7 8 < 6 : ; = > >? @ A B? > C D B? E F G H I J K L J M N O J P Q R
DettagliInterazione con il DOS e il BIOS
Interazione con il DOS e il BIOS ARGOMENTI PRESENTATI IN QUESTI LUCIDI Routine di BIOS e DOS Due modalità diverse di restituire il controllo al DOS L interazione con le routine del DOS: l interrupt 21H
DettagliPASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO
PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO Programma diviso in due moduli: MA.ASM: programma pricipale e funzioni di utilità MB.ASM: sottoprogramma di elaborazione Primo modulo: MA.ASM EXTRN alfa: BYTE
DettagliFamiglia x86. Linguaggio Assembler
Famiglia x86 8086-88, 80186, 80286, 80386-386SX, 80486DX-SX, Pentium,P6 Linguaggio Assembler Programmazione in linguaggi alto livello (HLL), p. es. Pascal: + livello di astrazione (istruzioni più potenti)
Dettagli& ' ( ) * +, - (. ' ) ) - / *, - ( 0 - ) - / ' / : 9 5 ; < = >? A < =? ; 7 B ; C 6 D > E : A < F 9 : A 5 G
& ' ( ) * +, - (. ' ) ) - / *, - ( 0 - ) - / ' 1 2 3 / 4 5 6 7 8 5 5 8 9 : 9 5 ; < = >?
DettagliLABORATORIO DI SISTEMI
ALUNNO: Fratto Claudio CLASSE: IV B Informatico ESERCITAZIONE N : 2 LABORATORIO DI SISTEMI OGGETTO: 1) Scrivere un programma, in linguaggio Assembly, per una CPU Intel 8086, che sommi due numeri (var_1,
DettagliProgrammazione in linguaggio assembly per architetture Intel 8088
Programmazione in linguaggio assembly per architetture Intel 8088 Marco Di Felice 1 Università of Bologna Dipartimento di Scienze dell Informazione Corso di Architettura degli Elaboratori mail: difelice@cs.unibo.it
DettagliIntroduzione. Architettura
Introduzione Questo simulatore fornisce una versione semplificata dell assemblatore sfruttato dal processore 8088 trasformando il codice inserito in input in codice eseguibile e ne simula l esecuzione
Dettagli; ; Definizione costanti
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 TITLE
Dettaglinot ah ; ah = F7h (247) perche' il complemento a 1 di 8 ( )
ESERCIZIO 1 Programma di calcoli aritmetici e logici ; locazione origine del seguente codice mov ax,24 ; ax = 24 mov cx,0ah ; cx = 10 div cx ; dx = 4 (resto) e ax = 2 (quoziente) mov al, 4 ; al = 4 mov
DettagliBreve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086)
PROF. CARMELO CALARCO Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086) 1 IL LINGUAGGIO ASSEMBLY Il linguaggio assembly è un linguaggio di programmazione a basso livello. Per linguaggi di basso livello
DettagliProgrammazione Assembly per 8088: Esercizi svolti
Programmazione Assembly per 8088: Esercizi svolti Marco Di Felice 13 dicembre 2006 1 Esercizio 1 (esercizio 1 del Tanenbaum, Appendice C) TESTO. Dopo l esecuzione dell istruzione MOV AX, 702 qual è il
DettagliLa rappresentazione dei caratteri
Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate La rappresentazione dei caratteri Necessità della rappresentazione dei caratteri Un calcolatore che fosse unicamente in
DettagliLABORATORIO DI SISTEMI
ALUNNO: Fratto Claudio CLASSE: IV B Informatico ESERCITAZIONE N : 5 LABORATORIO DI SISTEMI OGGETTO: Progettare il software per il controllo di un serbatoio, gestendone la fase di riempimento e quella di
DettagliEsercizi per il corso di Architettura dei Calcolatori. Anno accademico 2008/09. Si prevede l utilizzo dell emulatore Eniac ( presentato a lezione )
Esercizi per il corso di Architettura dei Calcolatori Anno accademico 2008/09 Si prevede l utilizzo dell emulatore Eniac ( presentato a lezione ) 1) Caricare nel registro accumulatore AX il contenuto della
DettagliESERCIZIO: LETTURA DI UNA STRINGA (una serie di caratteri fino al carattere di INVIO) con funzioni DOS
ESERCIZIO: LETTURA DI UNA STRINGA (una serie di caratteri fino al carattere di INVIO) con funzioni DOS COD segment CODE assume CS: COD, DS: DATI, SS: STACK1 main proc far push ds mov ax, 0 push ax mov
Dettaglijne su1 mov ah,2 add dl,48 int 21h mov ah,2 add dh,48 mov dl,dh int 21h mov ah,4ch int 21h
Compito in classe 3D 1) Sia dato il set di istruzioni dell ipotetica CPU studiata sul libro di testo più le istruzioni viste a lezione. Scrivere un programma che inizia alla posizione 4 di memoria e che
DettagliArchitettura degli elaboratori
Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Architettura degli elaboratori Programmazione in assembly MIPS Marco Tarini Dipartimento di Scienze Teoriche e Applicate
DettagliIl set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini
Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
DettagliIl set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini
Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
DettagliLA CPU INTEL Vantaggi dei programmi Assembly
1 LA CPU INTEL 8086 Vantaggi dei programmi Assembly L utilizzo del linguaggio Assembly anzichè di un linguaggio ad alto livello (tipo C o Pascal) è talvolta giustificato dalla maggiore efficienza del codice;
DettagliCaratteristiche di un linguaggio ad alto livello
Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono
DettagliIntroduzione al linguaggio assembly
Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Riepilogo PC R 0 MA R 1 R 2 R 3 IR MB read memoria O 1 O 2 op ALU
DettagliAccesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.
< < } } Lezione 5 e 6 Accesso a memoria A questo livello di astrazione, la memoria viene vista come un array di byte Per ogni richiesta di un dato ad un certo indirizzo, la CPU ottiene un numero di byte
DettagliL'INDIRIZZAMENTO NEL PROCESSORE MC PARTE 1 -
L'INDIRIZZAMENTO NEL PROCESSORE MC 68000 - PARTE 1 - CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Modi di indirizzamento Tecniche di indirizzamento:
DettagliCorso di Architettura (Prof. Scarano) 10/05/2002
Lezione 0 Il Set di Istruzioni (6) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Le procedure Prima della chiamata di una procedura In ogni linguaggio di
DettagliAssembly. Modello x86
Assembly Modello x86 1 Il microprocessore Un MICROPROCESSORE è un circuito integrato dotato di una struttura circuitale in grado di attuare un prefissato SET di ISTRUZIONI 2 Caratteristiche del microprocessore
DettagliFetch Decode Execute Program Counter controllare esegue prossima
Stored Program Istruzioni sono stringhe di bit Programmi: sequenze di istruzioni Programmi (come i dati) memorizzati in memoria La CPU legge le istruzioni dalla memoria (come i dati) Ciclo macchina (ciclo
Dettagliiafelice at cs(dot)unibo(dot)it
Corso di Archite@ura degli Elaboratori Modulo di Assembly ASSEMBLY 8088 Bruno Iafelice Università di Bologna iafelice at cs(dot)unibo(dot)it 1 ArgomenE Formato delle istruzioni Indirizzamento Istruzioni
DettagliModi di indirizzamento del processore MC68000 (parte prima)
Corso di Calcolatori Elettronici I Modi di indirizzamento del processore MC68000 (parte prima) Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso di Laurea
DettagliUn altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando
Un altro tipo di indirizzamento L insieme delle istruzioni (3) Architetture dei Calcolatori (lettere A-I) Tipi di indirizzamento visti finora Indirizzamento di un registro Indirizzamento con registro base
DettagliCPU. ALU e Registri della CPU. Elementi della CPU. CPU e programmazione (Parte 1) Central Processing Unit, processore
CPU CPU e programmazione (Parte 1) La CPU (Central Processing Unit) e` in grado di eseguire dei programmi, cioe` sequenze di istruzioni elementari ( istruzioni macchina ) Idea fondamentale dell'architettura
DettagliAssembler Intel 80x86: Struttura di un programma e Direttive
Assembler Intel 80x86: Struttura di un programma e Direttive Calcolatori Elettronici B a.a. 2004/2005 Massimiliano Giacomin 1 Istruzioni e direttive Formato generale dei comandi: [nome] codice operazione
DettagliIstruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni
Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da
DettagliStruttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:
Struttura e Funzione del Processore Capitolo 12 Struttura CPU Compiti CPU: Prelevare istruzioni Interpretare istruzioni Prelevare dati Elaborare dati Scrivere (memorizzare) dati 1 CPU con bus di sistema
DettagliModi di indirizzamento del processore MC68000 (parte prima)
Corso di Calcolatori Elettronici I Modi di indirizzamento del processore MC68000 (parte prima) Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Modello di programmazione
DettagliLa struttura delle istruzioni elementari: il linguaggio Macchina. Sommario
La struttura delle istruzioni elementari: il linguaggio Macchina Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano Riferimento sul
DettagliArchitettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H
Architettura dei calcolatori e sistemi operativi Architettura MIPS e set istruzioni Capitolo 2 P&H Instruction Set Architecture ISA Linguaggio assemblatore e linguaggio macchina ISA processore MIPS Modello
DettagliIntroduzione al linguaggio assembly MC68000
Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly MC68000 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie
DettagliEsercitazione n. 3. Dott. Salvatore Pontarelli
Esercitazione n. 3 Dott. Salvatore Pontarelli Struttura di un modulo Assembly Assembly è il linguaggio che l ARM assembler (armasm) legge per produrre il codice oggetto. può essere: ARM assembly language
DettagliIl linguaggio assembly
Il linguaggio assembly Introduzione al linguaggio macchina Indice Che cos è l assembly Elementi del linguaggio Memoria di programma Registri interni e di I/O Registri particolari Rappresentazione dell
DettagliISA e linguaggio assembler
ISA e linguaggio assembler Prof. Alberto Borghese Dipartimento di Informatica borghese@di.unimi.it Università degli Studi di Milano Riferimento sul Patterson: capitolo 4.2, 4.4, D1, D2. 1/39 Introduzione
DettagliLinguaggi e moduli. Dott. Franco Liberati
(canale A-D) A Linguaggi e moduli Dott. Franco Liberati Linguaggi di programmazione Compilatore Assemblatore Linker (collegatore) LINKER COMPILATORE ASSEMBLATORE LINGUAGGI DI PROGRAMMAZIONE Linguaggio
DettagliCOMUNE DI VOLVERA. Provincia di Torino DETERMINAZIONE DEL RESPONSABILE DEI SERVIZI FINANZIARI UFFICIO RAGIONERIA
,,, ,,,,, è,,,,,,,,, è, à, è ,, è,,,,,,,, à,,,,,, à à, ì,,,, à, à à,,,, ,,, à,,, à à,,,, ,,,, } &, @ } @ &, @ } &, @ Œ Œ &, @ } Ž @ & @ & @ } } } @ & & & @ & & & @ Ž Ž @ &, š &, @ œ œ Ž @ &, š &, š @
DettagliModi di indirizzamento
Architettura degli elaboratori Modi di indirizzamento ARGOMENTI DELLA LEZIONE Definizione Indirizzamenti diretti: immediato, assoluto, a registro Indirizzamenti indiretti: indiretto con registro, con spiazzamento,
DettagliArchitettura di una CPU
Massimo VIOLANTE Politecnico di Torino Dipartimento di Automatica e Informatica Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni 2 M. Violante 1.1
DettagliArchitettura del calcolatore (Seconda parte)
Architettura del calcolatore (Seconda parte) Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin LINGUAGGIO E ORGANIZZAZIONE DEL CALCOLATORE Linguaggio assembly
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
Dettagli1.1.1 Esercizio conta le occorrenze di un carattere in una stringa
1.1.1 Esercizio conta le occorrenze di un carattere in una stringa Scrivere un programma che legge una stringa di memoria lunga un numero arbitrario di caratteri (ma terminata da \0), inserita in un buffer
DettagliLABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15
LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15 Prof. Rosario Cerbone rosario.cerbone@libero.it http://digilander.libero.it/rosario.cerbone a.a. 2005-2006 L'INDIRIZZAMENTO NEL PROCESSORE MC 68000
DettagliLINGUAGGIO MACCHINA e ASSEMBLER. Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA
LINGUAGGIO MACCHINA e ASSEMBLER Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA Nel computer non vengono memorizzati soltanto i dati da elaborare ma anche il programma
DettagliCPUSim. Laboratorio 30/11/2016
CPUSim Laboratorio 30/11/2016 Tommaso Padoan e-mail: padoan@math.unipd.it CPUsim Scaricare il simulatore: www.math.unipd.it/~sperduti/architettura1.html scorrere fino a sezione Simulatori, aprire la pagina
DettagliModi di indirizzamento del processore MC68000 (parte prima)
Corso di Calcolatori Elettronici I A.A. 2011-2012 Modi di indirizzamento del processore MC68000 (parte prima) Lezione 21 Prof. Antonio Pescapè Università degli Studi di Napoli Federico II Facoltà di Ingegneria
DettagliIstruzioni di trasferimento dati
Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:
DettagliAssembly (3): le procedure
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione 1 C-Introduzione.tex: Versione 1.0, aa 2005-2006 Linguaggi di programmazione (1) Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili, direttamente
DettagliL architettura del calcolatore (Seconda parte)
L architettura del calcolatore (Seconda parte) Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin ORGANIZZAZIONE DEL CALCOLATORE: RICHIAMI
DettagliIl linguaggio Assembly
Il linguaggio Assembly Linguaggio macchina Linguaggio definito da un insieme di istruzioni, codificate come stringhe di bit, che il processore può interpretare ed eseguire direttamente Linguaggio Assembly
DettagliLe etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j
L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):
DettagliLe procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)
Le procedure L insieme delle istruzioni (4) Architetture dei Calcolatori (lettere A-I) In ogni linguaggio di programmazione si struttura il proprio codice usando procedure (funzioni, metodi, ) L utilizzo
DettagliElementi di Architettura
Elementi di Architettura Fondamenti di Informatica Roberto BASILI Marzo, 2007 Classi di Istruzioni Istruzioni di assegnamento/modifica Istruzioni di controllo delle sequenze Istruzioni di I/O Classi di
DettagliInformatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
DettagliI CARATTERI E LE STRINGHE
I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard
DettagliArchitetture dei Sistemi Elettronici
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
DettagliIndirizzamento, lettura e scrittura della memoria
Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2017-2018 Indirizzamento, lettura e scrittura della memoria Homepage del corso Turno A Nicola Basilico Dipartimento di Informatica
DettagliL'architettura del processore MIPS
L'architettura del processore MIPS Piano della lezione Ripasso di formati istruzione e registri MIPS Passi di esecuzione delle istruzioni: Formato R (istruzioni aritmetico-logiche) Istruzioni di caricamento
DettagliFondamenti di Informatica B
Fondamenti di Informatica B Lezione n. 11 Alberto Broggi Gianni Conte A.A. 2005-2006 Fondamenti di Informatica B Lezione n.11n ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO
DettagliModi di indirizzamento parte 1. Modello di programmazione del processore MC68000
Corso di Calcolatori Elettronici I A.A. 2010-2011 Modi di indirizzamento parte 1 Lezione 21 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso di Laurea in
DettagliLinguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche
3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni
DettagliEsercizi per il recupero del debito formativo:
ANNO SCOLASTICO 2005/2006 CLASSE 4 ISC Esercizi per il recupero del debito formativo: Facendo esclusivamente uso delle istruzioni del linguaggio macchina mnemonico del microprocessore INTEL 8086 viste
DettagliLoro Sedi. Oggetto: Accordo Nazionale 31/01/ Modifiche Contributo Minimo APE.
Udine, 13 febbraio 2018 Circ. congiunta n. 1/2018 Alle imprese iscritte Loro Sedi Ai Consulenti del Lavoro Loro Sedi Oggetto: Accordo Nazionale 31/01/2018 - Modifiche Contributo Minimo APE. Con accordo
DettagliProcessore Danilo Dessì. Architettura degli Elaboratori.
Processore 888 Architettura degli Elaboratori Danilo Dessì danilo_dessi@unica.it 888 L 888 è un processore che è stato progettato dalla Intel nel periodo 1978/1979 La sua architettura è simile a quella
DettagliModi di indirizzamento del processore MC68000 parte 1
Corso di Calcolatori Elettronici I Modi di indirizzamento del processore MC68000 parte 1 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle
DettagliVari modi di specificare l indirizzo degli operandi
Modi di indirizzamento Capitolo 11 Vari modi di specificare l indirizzo degli operandi Immediato Diretto Indiretto Registro Registro indiretto Spiazzamento Pila 1 Indirizzamento immediato L operando è
DettagliIl linguaggio macchina
Il linguaggio macchina Istruzioni macchina (PH 2.4) Indirizzamento (PH 2.9) Costanti a 32-bit (PH 2.9) 1 Linguaggio macchina Le istruzioni in linguaggio assembly devono essere tradotte in linguaggio macchina
DettagliAssembly IV Le procedure
rchitettura degli Elaboratori e delle Reti Lezione 14 ssembly IV Le procedure Proff.. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:
DettagliEsercizi sul linguaggio Assembler
Esercizi sul linguaggio Assembler Corso di Laurea di Ing. Gestionale e di Ing. delle Telecomunicazioni A.A. 2007-2008 1. A partire dalla locazione di nome simbolico CIFRA sono memorizzate le codifiche
DettagliAssembly (3): le procedure
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 13 1/23 Chiamata
DettagliSISTEMA DI ELABORAZIONE
SISTEMA DI ELABORAZIONE Una macchina M capace di eseguire programmi scritti in un linguaggio L adeguato DATI P(L) L M Osservazioni: M e' funzionalmente definita da L (L->M) Se L->M e L->M', allora M e'
Dettagli15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio
15 April 2011 05 LABORATORIO 04 PROCEDURE STACK CHIAMATA A PROCEDURE I. Frosio 1 SOMMARIO Procedure Stack Chiamata a procedure 2 PERCHÈ LE PROCEDURE? 15 April 2011 Main Proc3 Proc2 Proc1 Programmazione
DettagliAssembler. In verde sono evidenziati i comandi del debug. Attiva la scrittura di istruzioni assembler nella locazione 0100.
2010-02-16- pagina 1 di 6 Assembler Quando si installa un programma si creano dei file che sono memorizzati nell hard-disk del PC. Quando si lancia il programma parte di questi file è copiata nella RAM
DettagliIstruzioni 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
DettagliSistemi Operativi. ASSEMBLER per Minix Lez. 17
Sistemi Operativi ASSEMBLER per Minix Lez. 17 Minix IA-32 Assembly Language Un linguaggio di programmazione più vicino al modo di esprimersi umano, del linguaggio macchina ma ancora molto vicino al linguaggio
DettagliIndirizzamento, lettura e scrittura della memoria
Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2018-2019 Indirizzamento, lettura e scrittura della memoria Turno A Nicola Basilico Dipartimento di Informatica Via Celoria 18-20133
DettagliStruttura di programmi MAL Elementi lessicali
Elementi lessicali Ogni microistruzione è definita su una linea di programma Le linee vuote vengono ignorate Le linee con solo commenti vengono ignorate Il carattere di fine linea (RETURN ENTER INVIO)
DettagliMemoria: lettura, scrittura e indirizzamento
Memoria: lettura, scrittura e indirizzamento Ultimo aggiornamento: 27/3/2015 Università degli studi di Milano matteo.re@unimi.it https://homes.di.unimi.it/re/arch2-lab-2015-2016.html Organizzazione della
DettagliLA TASTIERA. Fai click sul tasto che ti interessa per la guida completa. Tabella ASCII. Tasti Speciali
LA TASTIERA Fai click sul tasto che ti interessa per la guida completa Tabella ASCII Tasti Speciali I tasti quindi non si può dire esattamente a che cosa serve uno o l altro perché ogni tasto ha una funzione
DettagliParte 3. Linguaggio Macchina e Assembler
Parte 3 Linguaggio Macchina e Assembler LINGUAGGIO MACCHINA Descriveremo una CPU MINIMA dotata di un certo insieme di istruzioni I ciascuna realizzata da un corrispondente circuito C I. Questo insieme
DettagliFondamenti di Informatica A. A / 1 9
Fondamenti di Informatica Prof. Marco Lombardi A. A. 2 1 8 / 1 9 Architettura di Von Neumann Architettura di Von Neumann: l Unità di Elaborazione L Unità di Elaborazione L unità di elaborazione (CPU) contiene
DettagliLinguaggio macchina e register file
Linguaggio macchina e register file Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@di.unimi.it Università degli Studi di Milano Riferimento sul Patterson: capitolo 4.2, 4.4,
DettagliModi di indirizzamento
Vari modi di specificare l indirizzo degli operandi Modi di indirizzamento Capitolo 11 Immediato Diretto Indiretto Registro Registro indiretto Spiazzamento Pila 1 2 Indirizzamento immediato L operando
DettagliArchitettura degli Elaboratori Lez. 3 ASM: Strutture di controllo. Prof. Andrea Sterbini
Architettura degli Elaboratori Lez. 3 ASM: Strutture di controllo Prof. Andrea Sterbini sterbini@di.uniroma1.it Argomenti Argomenti della lezione - Il simulatore MARS - Le strutture di controllo - Esempi
DettagliESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione
ESERCITAZIONE 8 Sommario Unità centrale di elaborazione Meccanismo di interruzione CPU-Memoria Architettura di una CPU Linguaggio macchina Modi di indirizzamento 1. Unità centrale di elaborazione L unità
DettagliArchitettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione
Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina
DettagliSistemi a microprocessore
Sistemi a microprocessore Programma: Segnali analogici e digitali Uso di segnali digitali per la rappresentazione dei numeri interi La memoria e la CPU I programmi in linguaggio macchina La connessione
DettagliCORSO DI ARCHITETTURA DEGLI ELABORATORI Il Processore 8088
UNIVERSITÀ DEGLI STUDI DI CAGLIARI acoltà di Scienze Corso di Laurea in Informatica CORSO DI ARCHITETTURA DEGLI ELABORATORI Il Processore 888 Danilo Dessì danilo_dessi@unica.it Processore 888 Il processore
Dettagli