PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO
|
|
- Gianmaria Corradini
- 7 anni fa
- Visualizzazioni
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 COD segment CODE assume CS: COD, DS: DATI, SS: STACK1 main proc far push ds mov ax, 0 push ax mov
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
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
DettagliCalcolatori 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
DettagliCalcolatori 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
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
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,
DettagliAssembly 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
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
DettagliSistema 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
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
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
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
Dettagli1 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
DettagliFamiglia 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
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
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
DettagliLINGUAGGIO 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
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;
DettagliCALCOLATORI 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
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
DettagliArchitettura 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
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
DettagliCalcolatori 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
DettagliArchitettura 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)
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
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
DettagliDOLLAR 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
DettagliConsegne 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,&$,, (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
DettagliL 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
DettagliDal 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
DettagliAssembler 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
DettagliBus 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
DettagliNel 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
DettagliPROGRAMMI 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.
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)
DettagliA. 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
DettagliIl 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
DettagliNumeri 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
DettagliSintassi 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
DettagliCompilatore (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
DettagliArchitettura 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
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
DettagliMODELLI 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
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
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
DettagliLINGUAGGIO 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
DettagliSistemi 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
DettagliSistemi 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
DettagliAssembler 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
DettagliIn 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
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
DettagliCALCOLATORI 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
DettagliIntroduzione 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)
DettagliDal 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
DettagliSistema 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
DettagliCalcolatori 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
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
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
DettagliI 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
DettagliGestione 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
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
DettagliDal 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
Dettagli1 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,
DettagliLinguaggio 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
DettagliCLASSE 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
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'
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
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
DettagliARCHITETTURA 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
DettagliIl 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,
DettagliPreprocessing, 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,
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
Dettagli; 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.
DettagliLABORATORIO 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
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
DettagliLinguaggi 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
DettagliParte 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
DettagliLinguaggi, 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
DettagliParte 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
DettagliOrologio 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
DettagliLinguaggio 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
DettagliI 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
DettagliLa 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
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
Dettagli1.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
DettagliTutta 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
DettagliEsercizi 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
DettagliMASSIMO 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:
DettagliLinguaggi, 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
DettagliIl 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
DettagliFSUB % 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