Calcolatori Elettronici Parte X: l'assemblatore as88



Documenti analoghi
Processore Danilo Dessì. Architettura degli Elaboratori.

CALCOLATORI ELETTRONICI II

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

Il simulatore SPIM SPIM

Assembler di Spim. Assembler di SPIM. Struttura di un programma assembler. Direttive

Programmazione Assembly per 8088: Esercizi svolti

Introduzione al linguaggio C Gli array

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Esempio di moltiplicazione come somma e spostamento

INTERRUPT 21H. Dispensa. Autore: Michele Naso. Classe: QUINTA INFORMATICA (5IA) Anno scolastico: 2003/2004. Scuola: Itis Euganeo

MODELLI DI MEMORIA e CALL

Introduzione al Linguaggio C

I file di dati. Unità didattica D1 1

Assembler Intel 80x86: Struttura di un programma e Direttive

Operazioni di input e output in Fortran 90

Gestione dei File. dischi nastri cd

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

Alcune regole di base per scrivere un programma in linguaggio C

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Esercizio 2. Client e server comunicano attraverso socket TCP

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

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

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H

Gestione dei File in C

Alfabeto ed elementi lessicali del linguaggio C

1. Le macro in Access 2000/2003

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

Funzioni in C. Violetta Lonati

Architettura degli elaboratori (A)

Le stringhe. Le stringhe

Esercitazione [5] Input/Output su Socket

Classe 3 A Inf - Alcune informazioni sull'uso del programma Debug

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

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

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

L utility Unix awk [Aho-Weinberger-Kernighan]

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Introduzione al MATLAB c Parte 2

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Laboratorio di Architettura degli Elaboratori

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Esercizi su. Funzioni

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Funzioni. Il modello console. Interfaccia in modalità console

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Liberare la memoria allocata dinamicamente.

Ing. Paolo Domenici PREFAZIONE

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

puntatori Lab. Calc. AA 2007/08 1

l Editor vi vi (visual editor) è stato scritto per essere utilizzabile con qualsiasi tipo di terminale.

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

Introduzione al Foglio Elettronico

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo


Matlab: Gestione avanzata dei file

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Linguaggio C. Fondamenti. Struttura di un programma.

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

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

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Corso di Fondamenti di Informatica

Software di base. Corso di Fondamenti di Informatica

MIPS Instruction Set 2

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

CORSO DI ARCHITETTURA DEGLI ELABORATORI Il Processore 8088

Protezione. Protezione. Protezione. Obiettivi della protezione

Il sistema operativo UNIX/Linux. Gli script di shell

MANUALE D USO SWEDA MASTER

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

5.2 UTILIZZO DELL APPLICAZIONE

Raggruppamenti Conti Movimenti

Transmission Control Protocol

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

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

Esercizio 1. Esercizio 1

Prof. Alberto Postiglione Scienze della Comunicazione. Università degli Studi di Salerno

I/O su Socket TCP: read()

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Scilab: I Polinomi - Input/Output - I file Script

Classe 3a INF - Esecuzione di un interrupt: ricostruzione delle operazioni al calcolatore con Turbo Debugger

MODULO 3. Microsoft Excel. TEST ED ESERCIZI SU:

Esame di INFORMATICA

Transcript:

Anno Accademico 2013/2014 Calcolatori Elettronici Parte X: l'assemblatore as88 Prof. Riccardo Torlone Università Roma Tre

L'assemblatore as88 Disponibile presso: CD-ROM allegato al libro di testo del corso ftp://ftp.cs.vu.nl/pub/evert/ Sito Web del corso Il tool comprende: Programma assemblatore (as88) Utilizzo Generale: as88 Nomeprogetto(.s) Emulatore-Interprete dell'architettura 8088 (s88) Utilizzo Generale: s88 Nomeprogetto Programma tracer per il debugging (t88) Utilizzo Generale: t88 Nomeprogetto(.$) Riccardo Torlone - Corso di Calcolatori Elettronici 2

Direttive del compilatore Ogni programma assembly e strutturato in 3 sezioni: 1. sezione di TESTO (direttiva:.sect.text): contiene le istruzioni del programma 2. sezione DATI (direttiva:.sect.data): alloca spazio nel segmento DATI per i dati (inizializzati) 3. sezione BSS (direttiva:.sect.bss): alloca spazio nel segmento DATI per i dati (non inizializzati) E' possibile definire etichette di due tipi: globali: identificatori alfanumerici seguiti dal simbolo : (possono occupare una intera riga) locali: utilizzabili solo nel segmento TESTO, costituite da una sola cifra seguita dal simbolo :. Riccardo Torlone - Corso di Calcolatori Elettronici 3

Vincoli sulle etichette Le etichette globali DEVONO essere univoche Es:.SECT.DATA hw:.ascii "Hello" Le etichette locali possono occorrere più volte Es. JMP 1f Salto verso la prossima etichetta denominata "1" E' possibile attribuire nomi simbolici alle costanti mediante la sintassi: identificatore=espressione Es. BLOCKSIZE=1024 I valori numerici possono essere: ottali (cominciano per zero), decimali, esadecimali (cominciano per 0x) I commenti iniziano con il carattere "!" Riccardo Torlone - Corso di Calcolatori Elettronici 4

Direttive del compilatore Riccardo Torlone - Corso di Calcolatori Elettronici 5

The Tracer (debugger) Il tracer consente di effettuare l'esecuzione step-by-step del programma e di monitorare lo stato di registri/memoria Riccardo Torlone - Corso di Calcolatori Elettronici 6

Uso dei registri con il tracer (a) Parte del programma (b) I registri dopo l esecuzione di 7 righe (c) I registri dopo l esecuzione di 6 iterazioni del ciclo Riccardo Torlone - Corso di Calcolatori Elettronici 7

The ACK-Based Assembler, as88 Valori di escape consentiti nell as88. Riccardo Torlone - Corso di Calcolatori Elettronici 8

Comandi del tracer (1) E' possibile interagire con il tracer: in modalità batch (fornendo in input un file con i comandi del tracer) in modalità interattiva (inserendo comandi da tastiera seguiti dal tasto INVIO) Riccardo Torlone - Corso di Calcolatori Elettronici 9

Comandi del tracer (2) Riccardo Torlone - Corso di Calcolatori Elettronici 10

Chiamate di sistema Le chiamate di sistema consentono di utilizzare le procedure fornite dal sistema operativo. Le routine di sistema possono essere attivate con la sequenza di chiamata standard: Si impilano gli argomenti sullo stack Si impila il numero di chiamata Si esegue l'istruzione SYS I risultati sono restituiti nel registro AX o nella combinazione di registri AX:DX (se il risultato e di tipo long) Gli argomenti sullo stack devono essere rimossi dalla funzione chiamante Riccardo Torlone - Corso di Calcolatori Elettronici 11

Chiamate di sistema in as88 (1) L'interprete 8088 supporta 12 chiamate di sistema. _OPEN: Apre il file name in lettura-scrittura Identificativo chiamata: 5 Argomenti: *name, 0=lettura/1=scrittura/2=letturascrittura; Valore Ritorno: un descrittore di file (fd) _CREAT: Crea un nuovo file di nome name Identificativo chiamata: 8 Argomenti: *name, *mode = permessi UNIX; Valore Ritorno: un descrittore di file (fd) _READ: Legge n byte da un file con descrittore fd trasferendoli nel buffer buf Identificativo chiamata: 3 Argomenti: fd, buf, n; Valore Ritorno: numero di byte letti correttamente Riccardo Torlone - Corso di Calcolatori Elettronici 12

Chiamate di sistema in as88 (2) _WRITE: Scrive n byte sul file con descrittore fd prelevandoli dal buffer buf Identificativo chiamata: 4 Argomenti: fd, buf, n; Valore Ritorno: numero di byte scritti correttamente _CLOSE: Chiude un file precedentemente aperto Identificativo chiamata: 6 Argomenti: fd (descrittore di file) Valore Ritorno: 0 se l'operazione ha successo _LSEEK: Sposta il puntatore del file con descrittore fd di offset bytes Identificativo chiamata: 19 Argomenti: fd, offset, 0/1/2; Valore Ritorno: nuova posizione all'interno del file _EXIT: Interrompe un processo Identificativo chiamata: 1; Argomenti: 0=successo/1=errore; Riccardo Torlone - Corso di Calcolatori Elettronici 13

Chiamate di sistema in as88 (3) _GETCHAR: Legge un carattere dallo standard input Identificativo chiamata: 117 Valore ritorno: il carattere letto e posto in AL _PUTCHAR: Scrive un carattere sullo standard output Identificativo chiamata: 122 Argomenti: carattere da scrivere _PRINTF: Stampa una stringa formattata sullo standard output Identificativo chiamata: 127 Argomenti: stringa di formato, argomenti _SSCANF: Legge gli argomenti dal buffer buf Identificativo chiamata: 125 Argomenti: buf, stringa di formato, argomenti _SPRINTF: Stampa una stringa formattata sul buffer buf Identificativo chiamata: 121 Argomenti: buf, stringa di formato, argomenti Riccardo Torlone - Corso di Calcolatori Elettronici 14

Primo esempio!calcolo di (a+3)*b _EXIT = 1.SECT.TEXT start: MOV AX,(a) ADD AX,3 MUL (b) PUSH 0 PUSH _EXIT SYS.SECT.DATA a:.word 5 b:.word 3 Riccardo Torlone - Corso di Calcolatori Elettronici 15

Esempio con ciclo e vari metodi di indirizzamento! Calcola moltiplicazioni ripetute per 2 _EXIT = 1.SECT.TEXT start: MOV AX,258!test sui registri (inutile ai fini del programma) ADDB AH,AL!test sui registri (inutile ai fini del programma) MOV CX, (times) MOV BX, muldat MOV AX, (BX) 1: MUL 2(BX) LOOP 1b PUSH 0 PUSH _EXIT SYS.SECT.DATA times:.word 5 muldat:.word 1,2 Riccardo Torlone - Corso di Calcolatori Elettronici 16

Registri a 8 e a 16 bit Tutti i registri possono essere visti come coppie di registri di 8 bit accessibili autonomamente (esempio: AX=AH:AL) AX AX 00000000 00000000 AH AL MOVE AX,258 00000001 00000010 AH AL ADD AH,AL AX 00000011 00000010 AH AL AX=770 Riccardo Torlone - Corso di Calcolatori Elettronici 17

Esempio: Hello world! Simple "hello world" program _EXIT = 1! 1 _WRITE = 4! 2 _STDOUT= 1! 3.SECT.TEXT! 4 start:! 5 MOV CX,de-hw! 6 PUSH CX! 7 PUSH hw! 8 PUSH _STDOUT! 9 PUSH _WRITE! 10 SYS! 11 ADD SP,8! 12 SUB CX,AX! 13 PUSH CX! 14 PUSH _EXIT! 15 SYS! 16.SECT.DATA! 17 hw:! 18.ASCII "Hello World\n"! 19 de:.byte 0! 20 Riccardo Torlone - Corso di Calcolatori Elettronici 18

Hello world con il tracer (a) HlloWrld.s. (b) La finestra corrispondente del tracer Riccardo Torlone - Corso di Calcolatori Elettronici 19

Esempio: prodotto scalare di due vettori (1) [vp.s] Riccardo Torlone - Corso di Calcolatori Elettronici 20

Esempio: prodotto scalare di due vettori (2) Riccardo Torlone - Corso di Calcolatori Elettronici 21

Esempio: prodotto scalare di due vettori (3) Riccardo Torlone - Corso di Calcolatori Elettronici 22

Prodotto scalare di due vettori con il tracer Riccardo Torlone - Corso di Calcolatori Elettronici 23

Esempio: stampa di un array di interi [c1.s] E presente un errore: con il tracer possiamo correggerlo Riccardo Torlone - Corso di Calcolatori Elettronici 24

Esempio: copia di stringhe [cp1.s, cp2.s] Riccardo Torlone - Corso di Calcolatori Elettronici 25

Esempio: stampa di una stringa in ordine inverso [r.s] Riccardo Torlone - Corso di Calcolatori Elettronici 26