PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO"

Transcript

1 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 EXTRN beta: WORD EXTRN sotto: FAR utility SEGMENT PUBLIC CODE tastiera PROC FAR ; acquisisce in al il carattere da tastiera tastiera ENDP video PROC FAR ; invia al video il carattere in al video ENDP dos LABEL FAR ; ritorna al DOS utility ENDS pila pila SEGMENT stack STACK DB 100h dup ('stack ') ENDS dati SEGMENT PUBLIC DATA kappa DB 8 dup (?) dati ENDS codice SEGMENT PUBLIC CODE ASSUME cs:codice, ds:dati inizio: mov ax, SEG dati mov ds, ax ciclo: call tastiera cmp al, 0dh je fine mov bx, SEG alfa mov es, bx mov es:alfa, al; pone al in alfa mov es:beta, OFFSET kappa mov es:beta + 2, SEG kappa call sotto mov al, 20h; carattere spazio mov si, 0 ripeti: mov al, [kappa + si] ; invia a video kappa[si] inc si cmp si, 8 jb ripeti mov al, 0dh ; CR mov al, 0ah ; LF jmp ciclo fine: jmp dos codice ENDS END inizio Sviluppo ASM 1 Sviluppo ASM 2

2 Secondo modulo: MB.ASM par SEGMENT PUBLIC DATA PUBLIC alfa, beta alfa DB? beta DW 2 dup (?) par ENDS codice SEGMENT PUBLIC CODE PUBLIC sotto ASSUME cs:codice, ds:par sotto PROC far ; converte il valore in alfa in una stringa ASCII in binario; ; indirizzo far della stringa: variabile beta push ax push bx push si push ds push es mov ax, SEG par mov ds, ax mov al, ds:alfa mov bx, ds:beta ; sposta indirizzo mov es, ds:beta + 2 ; come les bx, ds:[beta] mov si, 0 ciclo: test al, 80h; verifica il bit al[7] je zero mov byte ptr es:[bx + si], 1 jmp avanti zero: mov byte ptr es:[bx + si], 0 avanti: shl al, 1 inc si cmp si, 8 jb ciclo sotto codice pop es pop ds pop si pop bx pop ax ret ENDP ENDS END Sviluppo ASM 3 Sviluppo ASM 4

3 Programma Assemblatore - I passo: Per ogni modulo: 1) Attribuzione alle istruzioni e alle variabili di un offset all interno del segmento (uso di un contatore di locazioni) Contatore di locazioni (in hex) per MA.ASM 0000 EXTRN alfa: BYTE EXTRN beta: WORD EXTRN sotto: FAR 0000 utility SEGMENT PUBLIC CODE tastiera video dos LABEL FAR ; ritorna al DOS 0017 utility ENDS 0000 pila SEGMENT stack STACK DB 100h dup ( stack ) 0800 pila ENDS 0000 dati SEGMENT PUBLIC DATA 0000 kappa DB 8 dup (?) 0008 dati ENDS 0000 codice SEGMENT PUBLIC 0000 inizio: mov ax, SEG dati 0003 mov ds, ax 0005 ciclo: call tastiera 0036 mov si, ripeti: mov al, [kappa + si] Sviluppo ASM 5 003D ; invia a video kappa[si] 0056 jmp ciclo 0058 fine: jmp dos 005D codice ENDS END inizio 2) Tabella dei segmenti MA.ASM Segmento Lung. Tipo Classe utility 0017 public CODE pila 0800 stack STACK dati 0008 public DATA codice 005D public CODE 3) Tabella dei simboli per MA.ASM: Nome Tipo Segmento:Offset kappa byte dati:0000 inizio near codice:0000 ciclo near codice:0005 ripeti near codice:0039 fine near codice:0058 4) Tabella dei nomi pubblici (cioè nomi importati) (sottoinsieme della Tabella dei simboli): vuota 5) Tabella dei nomi esterni (cioè nomi esportati) MA.ASM: Nome Tipo alfa byte beta word sotto far Sviluppo ASM 6

4 Secondo modulo: MB.ASM Contatore di locazioni: 0000 par SEGMENT PUBLIC DATA PUBLIC alfa, beta 0000 alfa DB? 0001 beta DW 2 dup (?) 0005 par ENDS 0000 codice SEGMENT PUBLIC CODE PUBLIC sotto 0000 sotto PROC far 0018 ciclo: test al, 80h 001A je zero 001C mov byte ptr es:[bx + si], jmp avanti 0023 zero: mov byte ptr es:[bx + si], avanti: shl al, sotto ENDP 0035 codice ENDS END Tabella dei simboli per MB.ASM: Nome Tipo Segmento:Offset alfa byte par:0000 beta word par:0001 sotto far codice:0000 ciclo near codice:0018 zero near codice:0022 avanti near codice:0027 Tabella dei nomi esterni per MB.ASM: vuota Tabella dei nomi pubblici per MB.ASM: Nome Tipo Segmento:Offset alfa byte par:0000 beta word par:0001 sotto far codice:0000 Tabella dei Segmenti per MB.ASM: Segmento Lung. Tipo par 0005 none codice 0035 none Sviluppo ASM 7 Sviluppo ASM 8

5 Programma Assemblatore - II passo: 1) Traduzione delle istruzioni e delle direttive per la definizione delle variabili esempio: mov ds, ax 8E D8 Per gli indirizzi, la componente segmento non è tradotta (vedi 0000s) la componente offset ha il valore del corrispondente contatore di locazioni, con l'attributo r (rilocabile) i simboli esterni hanno offset 0000e MA.ASM: 000E BB 0000s mov bx, SEG alfa E C3 mov es, bx :A2 0000e mov es:alfa, al :C e 0000 mov es:beta, OFFSET kappa 001E 26:C e 0000s mov es:beta + 2, SEG kappa A se call sotto MB.ASM: 0005 B8 0000s mov ax, SEG par E D8 mov ds, ax 000A A0 0000r mov al, alfa 000D 8B 1E 0001r mov bx, beta Sviluppo ASM E r mov es, beta + 2 2) Costruzione della Tabella di collegamento con gli indirizzi (segmento simbolico e offset numerico) delle word da modificare nel codice oggetto in corrispondenza ai segmenti e agli offset ancora simbolici MA.ASM (in grassetto le word da modificare): 000E BB 0000s mov bx, SEG alfa E C3 mov es, bx :A2 0000e mov es:alfa, al :C e 0000r mov es:beta, OFFSET kappa 001E 26:C e 0000s mov es:beta + 2, SEG kappa A se call sotto Tenendo conto dei valori del contatore di locazioni per le istruzioni (colonna a sinistra), gli offset delle word da modificare nello spezzone di programma sono: 000F, 0015, 001A, 0021, 0023, 0026, Si noti che - OFFSET kappa è già risolto e non deve essere trattato - SEGMENT kappa deve essere trattato perchè dipende dalla posizione del segmento al momento del caricamento Sviluppo ASM 10

6 Tabella di collegamento per MA.ASM (spezzone): Segmento:Offset Operando segmento Operando offset della word codice:000f SEG alfa - codice: OFFSET alfa codice:001a - OFFSET beta codice: OFFSET beta codice:0023 SEG dati - codice: OFFSET sotto codice:0028 SEG sotto - MB.ASM (in grassetto le word da modificare): 0005 B8 0000s mov ax, SEG par E D8 mov ds, ax 000A A0 0000r mov al, ds:alfa 000D 8B 1E 0001r mov bx, ds:beta E r mov es, ds:beta + 2 Offset della word da modificare: Tabella di collegamento per MB.ASM: Segmento:Offset Operando segmento Operando offset della word codice:0006 SEG par - Sviluppo ASM 11 Programma Collegatore Il linker compie le operazioni di collegamento e pone in sequenza i vari moduli 1) Associazione dei segmenti simbolici a segmenti numerici: relazione utilizzata (allineamento al paragrafo): num_seg = num_seg_preced + (lung_seg_preced + 15) / 16 Tabella dei segmenti numerici (unica per tutti i moduli): Segmento Segmento numerico utility 0000 codice (ma) 0000 ; sono combinati insieme codice (mb) 0000 pila 000A dati 008A par 008B I segmenti sono combinati per la clausola public 2) Tabella dei nomi globali: prodotta unendo le Tabelle dei nomi pubblici e le Tabella dei segmenti numerici Tabella dei nomi globali: Nome Segmento numerico:offset alfa 008B:0000 beta 008B:0001 sotto 0000:0060 Sviluppo ASM 12

7 3) Tabella numerica di inizializzazione Registro Valore IP 0000 CS 0000 (codice) SP 0800 SS 008A (pila) 4) Trasformazione dei segmenti e degli operandi simbolici presenti nelle Tabelle di collegamento in valori numerici: Segmenti dalla Tabella dei segmenti numerici; Operandi segmento dalla Tabella dei segmenti numerici per simboli interni dalla Tabella dei nomi globali per simboli esterni Operandi offset dalla Tabella dei nomi globali Tabella numerica di collegamento per MA.ASM: Segmento:Offset Operando segmento Operando offset 0000:000F 008B : :001A : : A : : Tabella numerica di collegamento per MB.ASM (unico segmento) partendo dalla fine del precedente codice 60 byte 0000: B - 5) Modifica le word nel programma come indicato nelle Tabelle numeriche di collegamento: il programma è Sviluppo ASM 13 pronto per l esecuzione (va soltanto rilocato e caricato in memoria). 6) Genera per il Caricatore la Tabella di rilocazione, con gli indirizzi delle word che contengono segmenti numerici (vanno modificate al caricamento). Tabella di rilocazione: 0000:000F 0000: : :0066 Il programma eseguibile è composto da: Ÿ Ÿ Ÿ il programma collegato la Tabella di rilocazione la Tabella numerica di inizializzazione Programma Caricatore (nel DOS): 1) Sceglie la base dell'intero programma e la somma alle word della Tabella di rilocazione e ai due segmenti nella Tabella numerica di inizializzazione 2) Carica il programma in memoria; pone in SS e SP i valori corrispondenti, pone sullo stack CS e IP ed avvia il programma Sviluppo ASM 14

ESERCIZIO: 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 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

Dettagli

Interazione con il DOS e il BIOS

Interazione 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

Dettagli

; ; Definizione costanti

; ; 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

Dettagli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Assemblatore, Linker e Loader Francesco Lo Presti rielaborate da Salvatore Tucci Assembler, Linker & Loader 1 Compilazione q Nella prima fase, il programma ad alto livello viene

Dettagli

Programmazione Assembly per 8088: Esercizi svolti

Programmazione 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

Dettagli

LABORATORIO DI SISTEMI

LABORATORIO 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,

Dettagli

Assembly Introduzione Rev. Digitale 1.0 del 01/09/2016

Assembly Introduzione Rev. Digitale 1.0 del 01/09/2016 Assembly 8086 - Introduzione Rev. Digitale 1.0 del 01/09/2016 E un linguaggio mnemonico in corrispondenza 1 : 1 con le istruzioni binarie riconosciute dalla CPU 8086. Cioè codifica con un nome mnemonico

Dettagli

Assembler Intel 80x86: Struttura di un programma e Direttive

Assembler 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

Dettagli

Sistema Operativo - Gestione della Memoria lista argomenti di studio

Sistema Operativo - Gestione della Memoria lista argomenti di studio Sistema Operativo - Gestione della Memoria lista argomenti di studio Istruzioni assembly salti assoluti salti relativi Linking Rilocazione Statica Istruzioni rilocabili (salti relativi) Istruzioni Non

Dettagli

Programmazione in linguaggio assembly per architetture Intel 8088

Programmazione 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

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

iafelice at cs(dot)unibo(dot)it

iafelice 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

Dettagli

1 Programmi modulari in Assembly

1 Programmi modulari in Assembly Ing. Gabriele MONTI 1999-2004 Moduli ASM www.ingmonti.it 1 Programmi modulari in Assembly In questo capitolo si tratta dei programmi che sono costituiti di componenti racchiusi in file separati, eventualmente

Dettagli

Famiglia dei processori INTEL

Famiglia dei processori INTEL Famiglia dei processori INTEL 1975 2002 8080-8086 - 80286-80386 - 80486 - Pentium - Pentium II-III-IV - Itanium Compatibilità del SW (assemby) 8086 80286 80386 80486 Pentium Pentium III Perché studiare

Dettagli

Il linguaggio Assembly

Il 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

Dettagli

Assembly. Modello x86

Assembly. 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

Dettagli

LINGUAGGIO ASSEMBLER PER 8086/8088

LINGUAGGIO ASSEMBLER PER 8086/8088 LINGUAGGIO ASSEMBLER PER 8086/8088 Linguaggio Macchina insieme di istruzioni che un elaboratore è in grado di eseguire direttamente strettamente correlato alla realizzazione fisica dell'elaboratore Esempio

Dettagli

LA CPU INTEL Vantaggi dei programmi Assembly

LA 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;

Dettagli

CALCOLATORI ELETTRONICI II

CALCOLATORI ELETTRONICI II CALCOLATORI ELETTRONICI II L ASSEMBLATORE Microsoft MASM MASM Argomenti della lezione Faremo riferimento al linguaggio sorgente accettato dall assemblatore Microsoft MASM nelle versioni successive alla

Dettagli

Esercizi per il recupero del debito formativo:

Esercizi 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

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

Introduzione al linguaggio assembly MC68000

Introduzione 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

Dettagli

Calcolatori Elettronici Lezione A2 Architettura i8086

Calcolatori Elettronici Lezione A2 Architettura i8086 Calcolatori Elettronici Lezione A2 Architettura i8086 Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Architettura i8086 Sommario: L i8086 Registri Accesso alla memoria: indirizzi

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Corso di Laurea Triennale in Informatica Università degli Studi di Bari Laboratorio lez1: il processore 8086/88 Prof. S.Pizzutilo Microprocessori INTEL per il PC 8080 (1974)

Dettagli

not ah ; ah = F7h (247) perche' il complemento a 1 di 8 ( )

not 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

Dettagli

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086)

Breve 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

Dettagli

1.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 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

Dettagli

DOLLAR EQU '$' ; nome e cognome possono avere al max questa lunghezza. ; N.B. ogni stringa deve terminare con '$'

DOLLAR EQU '$' ; nome e cognome possono avere al max questa lunghezza. ; N.B. ogni stringa deve terminare con '$' TITLE CodiceFiscale: per esame 1/7/2009 comment * Costruzione della prima parte (11 caratteri) del codice fiscale. N.B. Anziche' nello stack (come richiesto nel compito), qui i caratteri calcolati sono

Dettagli

Consegne estive per gli studenti con sospensione del giudizio nella materia Sistemi per l'elaborazione e la trasmissione dell'informazione.

Consegne estive per gli studenti con sospensione del giudizio nella materia Sistemi per l'elaborazione e la trasmissione dell'informazione. Consegne estive per gli studenti con sospensione del giudizio nella materia Sistemi per l'elaborazione e la trasmissione dell'informazione. Facendo esclusivamente uso delle istruzioni del linguaggio macchina

Dettagli

)21'$0(17,',,1)250$7,&$,,

)21'$0(17,',,1)250$7,&$,, )21'$0(17,',,1)250$7,&$,, (6(5&,7$=,21(Qƒ,//,1*8$**,2$66(0%/(5 Indicare (in binario) lo stato dei flag C, O, S, Z, P e del registro AH dopo l esecuzione delle due MOV AH, 70 ADD AH, 70 La prima istruzione

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

Dal linguaggio macchina al linguaggio C

Dal linguaggio macchina al linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi di Udine Dal linguaggio macchina al linguaggio C Programma sorgente, compilatore, file oggetto, file eseguibile programma sorgente

Dettagli

Assembler 8086/8088: Concetti Generali

Assembler 8086/8088: Concetti Generali L Assembler 8086 Concetti Generali M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Sommario Introduzione Pseudo-Istruzioni Operatori

Dettagli

Bus Indirizzi a 20 bit. Anno 1979 Bus Indirizzi a 20 bit Bus Dati a 8 bit Set di istruzioni compatibile con 8086

Bus Indirizzi a 20 bit. Anno 1979 Bus Indirizzi a 20 bit Bus Dati a 8 bit Set di istruzioni compatibile con 8086 Assembler IA16 8086 Anno 1978 Bus Indirizzi a 20 bit Bus Dati a 16 bit 8088 Anno 1979 Bus Indirizzi a 20 bit Bus Dati a 8 bit Set di istruzioni compatibile con 8086 Registri 8086 AX BX CX DX 16 bit Registri

Dettagli

Nel microprocessore 8086 abbiamo una gran quantità di registri

Nel microprocessore 8086 abbiamo una gran quantità di registri I registri del microprocessore 8086 Nel microprocessore 8086 abbiamo una gran quantità di registri AH AL AX 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 1 B H B L BX 1 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 C H C L CX 1 0 1 1

Dettagli

PROGRAMMI DI SVILUPPO. G. Frosini - Programmi di sviluppo Slide 1

PROGRAMMI DI SVILUPPO. G. Frosini - Programmi di sviluppo Slide 1 PROGRAMMI DI SVILUPPO G. Frosini - Programmi di sviluppo Slide 1 Programmi di sviluppo considerati (1) Programmi di sviluppo: Traduttori (Assemblatore, Compilatore C, Compilatore C++), Collegatore, Caricatore.

Dettagli

Famiglia x86. Linguaggio Assembler

Famiglia 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

A. Veneziani - Analisi listato con assembly in line mixato a C (C++ Builder 6) Individua se un numero e' primo e tutti i numeri primi da 1 a n

A. Veneziani - Analisi listato con assembly in line mixato a C (C++ Builder 6) Individua se un numero e' primo e tutti i numeri primi da 1 a n A. Veneziani - Analisi listato con assembly in line mixato a C (C++ Builder 6) Individua se un numero e' primo e tutti i numeri primi da 1 a n Il problema Il listato vuole mostrare un caso di utilizzo

Dettagli

Il linguaggio assembly 8086

Il linguaggio assembly 8086 Il linguaggio assembly 8086 Introduzione Il linguaggio macchina Il linguaggio naturale di un microprocessore è il linguaggio macchina. Nel linguaggio macchina non esistono riferimenti astratti o simbolici

Dettagli

Numeri Reali. Sottoinsieme discreto dei Numeri Razionali. Sequenze di bit. Underflow. Densità che dipende dal numero di bit usati

Numeri Reali. Sottoinsieme discreto dei Numeri Razionali. Sequenze di bit. Underflow. Densità che dipende dal numero di bit usati Numeri Reali Sottoinsieme discreto dei Numeri Razionali Sequenze di bit Overflow Underflow Overflow 0 Densità che dipende dal numero di bit usati 1 Numeri Reali Virgola fissa (1/5) Si usa un numero fisso

Dettagli

Sintassi di mov. Un istruzione (p.es. ) non può avere sorgente m e destinazione m

Sintassi di mov. Un istruzione (p.es. ) non può avere sorgente m e destinazione m 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

Dettagli

Compilatore (Compiler)

Compilatore (Compiler) Compilatore (Compiler) Input: codice in HLL Output: Codice assembly Codice oggetto Fasi di analisi Analisi lessicale Analisi sintattica Analisi semantica Criteri di Ottimizzazione spaziale temporale Assemblatore

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

jne 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

jne 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

Dettagli

MODELLI DI MEMORIA e CALL

MODELLI DI MEMORIA e CALL Corso di Archite?ura degli Elaboratori Modulo di Assembly MODELLI DI MEMORIA e CALL Bruno Iafelice University of Bologna iafelice at cs(dot)unibo(dot)it 1 ArgomenC Modelli di memoria per 8088 Chiamata

Dettagli

CORSO DI ARCHITETTURA DEGLI ELABORATORI Il Processore 8088

CORSO 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

Processore Danilo Dessì. Architettura degli Elaboratori.

Processore 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

Dettagli

LINGUAGGIO ASSEMBLER PER 8086/8088

LINGUAGGIO ASSEMBLER PER 8086/8088 LINGUAGGIO ASSEMBLER PER 8086/8088 Linguaggio Macchina insieme di istruzioni che un elaboratore è in grado di eseguire direttamente strettamente correlato alla realizzazione fisica dell'elaboratore Esempio

Dettagli

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia 1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it monoprogrammati multiprogrammati a.a. 2008/09 1 c 2009 M.. Creative Commons Attribuzione-Condividi

Dettagli

Sistemi Operativi. Bruschi Martignoni Monga. Gestione della memoria. Sistemi multiprogrammati. Partizioni fisse Partizioni variabili Paginazione

Sistemi Operativi. Bruschi Martignoni Monga. Gestione della memoria. Sistemi multiprogrammati. Partizioni fisse Partizioni variabili Paginazione 1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it monoprogrammati multiprogrammati Lezione XXXIII: monoprogrammati multiprogrammati a.a. 2008/09

Dettagli

Assembler Intel 80x86: Set delle istruzioni

Assembler Intel 80x86: Set delle istruzioni Assembler Intel 80x86: Set delle istruzioni Calcolatori Elettronici B aa 2004/2005 Massimiliano Giacomin 1 Classi di istruzioni Il set di istruzioni dell Assembler Intel 80x86 può essere suddiviso nelle

Dettagli

In questa parte di lezione vedremo come vengono trattati gli indirizzi durante la produzione e poi durante l esecuzione di un file eseguibile.

In questa parte di lezione vedremo come vengono trattati gli indirizzi durante la produzione e poi durante l esecuzione di un file eseguibile. GESTIONE della MEMORIA in MODERNI SISTEMI con ADDRESS BINDING DINAMICO mediante SEGMENTAZIONE, PAGINAZIONE e MEMORIA VIRTUALE (SWAP DELLE PAGINE SU DISCO). Esempio Reale: Segmentazione Paginata in IA-32

Dettagli

Il linguaggio assembly

Il 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

Dettagli

CALCOLATORI ELETTRONICI II

CALCOLATORI ELETTRONICI II CALCOLATORI ELETTRONICI II LE ISTRUZIONI ARITMETICHE E DI MANIPOLAZIONE DEI BIT Argomenti della lezione Le istruzioni aritmetiche Le istruzioni di manipolazione dei bit Le istruzioni aritmetiche Istruzioni

Dettagli

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

Introduzione a ISA. Il Livello ISA Instruction Set Level Architecture. Livello ISA e Motorola 68000: introduzione. Che cosa descrive ISA Introduzione a ISA Il Livello ISA Instruction Set Level Architecture Livello ISA e Motorola 68000: introduzione Livello ISA (Instruction Level Architecture): insieme delle istruzioni (instruction set)

Dettagli

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione Dal sorgente all eseguibile I programmi Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Riferimenti sul Patterson: Cap. 2.10 + Appendice B, tranne B.7

Dettagli

Sistema Operativo - Gestione della Memoria per moderne CPU. Address Binding Dinamico in esecuzione mediante Segmentazione, Paginazione e Memoria

Sistema Operativo - Gestione della Memoria per moderne CPU. Address Binding Dinamico in esecuzione mediante Segmentazione, Paginazione e Memoria Sistema Operativo - Gestione della Memoria per moderne CPU. Address Binding Dinamico in esecuzione mediante Segmentazione, Paginazione e Memoria Virtuale (Swap su Disco Lista Argomenti Concetto di Address

Dettagli

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Calcolatori Elettronici Parte VIII: linguaggi assemblativi Anno Accademico 2013/2014 Calcolatori Elettronici Parte VIII: linguaggi assemblativi Prof. Riccardo Torlone Universita di Roma Tre Linguaggi di Programmazione Linguaggi ad alto livello Maggiore espressività

Dettagli

È consuetudine classificare le istruzioni macchina in base al numero degli operandi a cui

È consuetudine classificare le istruzioni macchina in base al numero degli operandi a cui Testo di rif.to: [Congiu] - 4.1,4.2 (pg. 129 138) 02.a Le istruzioni di macchina Classificazione delle istruzioni Direttive per l assemblatore Classificazione delle istruzioni È consuetudine classificare

Dettagli

LABORATORIO DI SISTEMI

LABORATORIO 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

Dettagli

I sistemi. Sistema: è un insieme di parti o componenti correlati tra di loro in modo che tale insieme possieda una struttura e abbia un comportamento.

I sistemi. Sistema: è un insieme di parti o componenti correlati tra di loro in modo che tale insieme possieda una struttura e abbia un comportamento. I sistemi Sistema: è un insieme di parti o componenti correlati tra di loro in modo che tale insieme possieda una struttura e abbia un comportamento. Classificazione dei sistemi: Sistemi artificiali: creati

Dettagli

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

Gestione delle subroutine. Appunti di Sistemi per la cl. IV Dinf A cura del prof. Ing. Mario Catalano Gestione delle subroutine Appunti di Sistemi per la cl. IV Dinf A cura del prof. Ing. Mario Catalano Vantaggi delle subroutines In maniera analoga alle funzioni/metodi dei linguaggi di alto livello, anche

Dettagli

Corso di Architettura (Prof. Scarano) 10/05/2002

Corso 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

Dettagli

Dal linguaggio macchina al linguaggio C

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

Dettagli

1 Segmentazione degli indirizzi di memoria nell'8086

1 Segmentazione degli indirizzi di memoria nell'8086 Ing. Gabriele MONTI 1999-2004 Segmentazione www.ingmonti.it 1 Segmentazione degli indirizzi di memoria nell'8086 Nel capitolo sull'architettura dell'8086 abbiamo detto dell'esistenza di registri di segmento,

Dettagli

Linguaggio assembly per microprocessore 8086

Linguaggio assembly per microprocessore 8086 Linguaggio assembly per microprocessore 8086 Imparare il linguaggio assembly significa conoscere il microprocessore I programmi assembly risultano molto più veloci di quelli scritti in qualsiasi altro

Dettagli

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO 1 Domanda [1 punto] Dato il formato in virgola mobile su 32 bit così definito (precisione singola): o 1

Dettagli

SISTEMA DI ELABORAZIONE

SISTEMA 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'

Dettagli

Architetture dei Sistemi Elettronici

Architetture 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

Dettagli

Linguaggi e moduli. Dott. Franco Liberati

Linguaggi 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

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel della terza generazione progetto del 1978/79 address bus: 20 bit 1M byte data bus: 8 bit per l'8088, 16 bit per l'8086 identico formato

Dettagli

Il linguaggio Assembly

Il linguaggio Assembly Il linguaggio Assembly del µ8086 Prof. Ing. Mario Catalano 1 Linguaggi di Programmazione I linguaggi sono classificati in: Low level Linguaggio macchina & Linguaggio Assembly High level C/C++, Pascal,

Dettagli

Preprocessing, compilazione ed esecuzione. Utilizzando strumenti GNU...

Preprocessing, compilazione ed esecuzione. Utilizzando strumenti GNU... Preprocessing, compilazione ed esecuzione Utilizzando strumenti GNU... 1 Spazio di indirizzamento Come vede la memoria un programma C in esecuzione 2 32-1 0 Stack Area vuota Heap Data Text Pila di FRAME,

Dettagli

Fetch Decode Execute Program Counter controllare esegue prossima

Fetch 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

Dettagli

; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B

; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B Linguaggi di programmazione Il linguaggio base di un elaboratore è il linguaggio macchina. Linguaggio macchina: insieme di istruzioni espresse nel formato numerico (binario) di un particolare processore.

Dettagli

LABORATORIO DI SISTEMI

LABORATORIO DI SISTEMI ALUNNO: Fratto Claudio CLASSE: IV B Informatico ESERCITAZIONE N : 4 LABORATORIO DI SISTEMI OGGETTO: Scrivere un programma in Assembly, per CPU 8086, utilizzando le porte ed i dispositivi virtuali collegate

Dettagli

Architettura 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 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

Dettagli

Linguaggi di programmazione. Parte VII. Traduzione e collegamento. Interpretazione. Traduzione

Linguaggi di programmazione. Parte VII. Traduzione e collegamento. Interpretazione. Traduzione Linguaggi di programmazione Parte VII Traduzione e collegamento Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore leggibilità Facilità di documentazione Minore controllo dell

Dettagli

Parte VII. Traduzione e collegamento

Parte VII. Traduzione e collegamento Parte VII Traduzione e collegamento VII.1 Linguaggi di programmazione Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore leggibilità Facilità di documentazione Minore controllo

Dettagli

Linguaggi, compilatori e interpreti

Linguaggi, compilatori e interpreti Linguaggi, compilatori e interpreti 1 Il codice macchina Ciascun calcolatore ha un ampio insieme di istruzioni che è in grado di eseguire. Le istruzioni vengono rappresentate mediante sequenze di bit 001000100011

Dettagli

Parte VII. Traduzione e Collegamento

Parte VII. Traduzione e Collegamento Parte VII Traduzione e Collegamento VII.1 Linguaggi di Programmazione Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore leggibilità Facilità di documentazione Minore controllo

Dettagli

Orologio Digitale. Obiettivo. Analisi Hardware. Il TIC

Orologio Digitale. Obiettivo. Analisi Hardware. Il TIC Orologio Digitale Obiettivo Il nostro intento è creare un programma ed implementarlo in linguaggio Assembly 8086, che stampi a schermo un orologio digitale. Inizialmente il valore sarà sincronizzato con

Dettagli

Linguaggio macchina e linguaggio assembly

Linguaggio macchina e linguaggio assembly FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi di Udine Linguaggio macchina e linguaggio assembly Formato delle istruzioni 15 8 7 0 gruppo modo di indirizzamento codice dell

Dettagli

I programmi Assembler e Linker

I programmi Assembler e Linker Testo di riferimento: [Congiu] 10.1-10.5 (pg. 267 291) 11.a I programmi Assembler e Linker Produzione del software Istruzioni, direttive, simboli, ecc. Processo di produzione del software Analisi del problema

Dettagli

La Produzione dei Programmi. 1 Il processo di Traduzione 1.1 compilazione 1.2 collegamento 1.3 caricamento 2. Il processo di Interpretazione

La Produzione dei Programmi. 1 Il processo di Traduzione 1.1 compilazione 1.2 collegamento 1.3 caricamento 2. Il processo di Interpretazione La Produzione dei Programmi 1 Il processo di Traduzione 1.1 compilazione 1.2 collegamento 1.3 caricamento 2. Il processo di Interpretazione Introduzione La creazione di un programma è una attività complessa

Dettagli

Esercizi sul linguaggio Assembler

Esercizi 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

Dettagli

1.1 Rappresentazione di numeri naturali ed interi

1.1 Rappresentazione di numeri naturali ed interi 1.1 Rappresentazione di numeri naturali ed interi La ALU è in grado di eseguire operazioni logiche (AND, OR, NOT, etc.) su stringhe di bit ed operazioni aritmetiche, interpretando le stringhe di bit che

Dettagli

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086.

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. I processori Intel Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. L'8086 e' un processore a 16 bit quindi i suoi registri potranno

Dettagli

Esercizi con l assemblatore NASM

Esercizi con l assemblatore NASM Esercizi con l assemblatore NASM Corso di Sistemi Operativi @ Unimi Mattia Monga 17 marzo 2017 Contents 1 Programmare senza il sistema operativo 1 1.1 Programma finale........................... 2 2 Somma

Dettagli

MASSIMO UBERTINI ASSEMBLER WWW.UBERTINI.IT

MASSIMO UBERTINI ASSEMBLER WWW.UBERTINI.IT MASSIMO UBERTINI ASSEMBLER WWW.UBERTINI.IT ;Nome del programma: inser.asm ;Programmatore: ;Descrizione ;Programma che inserisce un valore nel registro AX. DOSSEG.MODEL SMALL.STACK 200H.DATA.CODE BEGIN:

Dettagli

Linguaggi, compilatori e interpreti

Linguaggi, compilatori e interpreti Linguaggi, compilatori e interpreti Il codice macchina Ciascun calcolatore ha un ampio insieme di istruzioni che è in grado di eseguire. Le istruzioni vengono rappresentate mediante sequenze di bit 000101

Dettagli

Il linguaggio Assembly della CPU 8086. Il linguaggio Macchina

Il linguaggio Assembly della CPU 8086. Il linguaggio Macchina Il linguaggio Assembly della CPU 8086 Il linguaggio Macchina Fortemente orientato alla macchina Direttamente eseguibile Praticamente illeggibile Utilizzato negli anni 50 70 per sviluppare programmi Attualmente

Dettagli

FSUB % ST (1), % ST (0) # ST (0) ST (0) ST (1) FSUB %ST(0), %ST(1) # ST (1) ST (0) ST (1) #cima alla pila ST(0) / ST(1)

FSUB % ST (1), % ST (0) # ST (0) ST (0) ST (1) FSUB %ST(0), %ST(1) # ST (1) ST (0) ST (1) #cima alla pila ST(0) / ST(1) ADD intero:.long 1000 reale:.double 0.5 FIADDL intero # ST (0) ST (0)+intero FADDL reale # ST (0) ST (0)+reale FADDL %st(0), %ST(3) # ST (3) ST (3)+ ST (0) FADDP # ST (1) ST (1)+ ST (0) pop il destinatario,

Dettagli