1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C
Advertisements

A. FERRARI MATERIALE DALLA DISPENSA DI P. OLLARI
in un programma Assembler
Procedure In assembler.
Organizzazione della memoria
Università degli Studi di Napoli Federico II Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni –
PUNTATORI Introduzione
Algoritmi in C++ (1) da completare
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
Process synchronization
File.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
CALCOLATORI ELETTRONICI

1 Generazione codice Daniela Briola Lorena Bellino.
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Programmazione modulare nel linguaggio C
Algoritmi e Programmazione Avanzata
Istruzioni per il Controllo del Processore
Programmazione Avanzata
Struttura del Computer
Microprocessore Intel 8086
Introduzione al linguaggio assembly del microprocessore a parte
Introduzione al linguaggio assemby del microprocessore a parte
I vettore interruzioni
Istruzioni per la Manipolazione dei Bit
Architettura del calcolatore
Strutture di Controllo
Alcune Istruzioni per la gestione dellI/O (Classe 7) Per la destinazione D0 sono ammessi tutti i tipi di indirizzamento tranne quello immediato. Per la.
Passaggio di parametri per indirizzo
Introduzione al linguaggio assembly del microprocessore a parte
BUS DI CPU M. Mezzalama - M. Rebaudengo - M. Sonza Reorda
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Pippo.

Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Complessità di un algoritmo
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni – BCOR Ingegneria Elettronica – BELR Introduzione al C Esercitazione 5 D. Bloisi, A.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Luca Orrù 1 Input/Output. 2 SOMMARIO Organizzazione di sistema Trasferimento dati; Gestione I/O.
Arch. Elab. - S. Orlando 1 Esercitazione su Instruction Level Parallelism Salvatore Orlando.
Architettura di una CPU
Il linguaggio C Puntatori e dintorni.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
1. 2 Variabili statiche e dinamiche Un programma è un processo in esecuzione a cui il sistema operativo assegna una certa zona di memoria. Tale zona può.
Il µP Intel 8086 Marco Lettieri 3 C Informatica A.S. 2009/2010 All’attenzione del Professor Claudio Gatto.
1 M. Rebaudengo Routine di servizio dell’interrupt.
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Concetti Generali.
1 M.MezzalamaM. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Mezzalama - M. Rebaudengo SOTTOSISTEMA DI MEMORIA.
1 Connessione Microprocessore- Dispositivi di I/O.
Architettura IA - 16 M. Mezzalama - M. Rebaudengo - M. Sonza Reorda
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Procedure e Macro.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Programmazione Assembly
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Gestione dei dispositivi di I/O:
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
L’esecuzione dei programmi
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
Architettura IA - 16 M. Mezzalama - M. Rebaudengo - M. Sonza Reorda
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda Interfaccia verso il bus.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 15 Maggio.
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata (3) Istruzioni J-type Istruzioni di salto Istruzioni.
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Architettura 8086/8088 M. Rebaudengo - M. Sonza Reorda
Comandi assembly Il termine assembly deriva dal programma traduttore in linguaggio macchina assembler, l’assemblatore non fa altro che assemblare il.
Vari e semplici programmi.
Transcript della presentazione:

1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per il Trasferimento Dati

2 M. Rebaudengo, M. Sonza Reorda Istruzioni per il trasferimento dei dati MOV LEA LDS e LES PUSH e POP PUSHA e POPA IN e OUT

3 M. Rebaudengo, M. Sonza Reorda Istruzione MOV L’istruzione MOV copia un dato da una posizione ad un’altra. Il suo formato è il seguente: MOV destinazione, sorgente I dati vengono letti dall’operando sorgente e memorizzati nell’operando destinazione. Il dato nell’operando sorgente non viene modificato. L’operando sorgente può essere un registro od una locazione di memoria, oppure un valore immediato; l’operando destinazione può essere un registro oppure una locazione di memoria.

4 M. Rebaudengo, M. Sonza Reorda Combinazioni non ammesse da MOV Valgono le seguenti regole: il tipo dell’operando sorgente deve essere lo stesso dell’operando destinazione MOV BL, DX ; ERRORE !! il registro IP non può essere nè sorgente nè destinazione il registro CS non può essere destinazione.

5 M. Rebaudengo, M. Sonza Reorda memoria  memoria Si deve passare attraverso un registro general- purpose: MOV AX, PIPPO MOV PLUTO, AX segment register  segment register Si deve passare attraverso un registro general- purpose: MOV AX, ES MOV DS, AX oppure si usa lo stack: PUSH ES POP DS Combinazioni non ammesse da MOV (II)

6 M. Rebaudengo, M. Sonza Reorda segment register  immediato Si deve passare attraverso un registro general-purpose. MOV AX, DATA_SEG MOV DS, AX Combinazioni non ammesse da MOV (III)

7 M. Rebaudengo, M. Sonza Reorda Istruzione XCHG L’istruzione XCHG permette di eseguire lo scambio tra due registri o tra un registro ed una locazione di memoria. Il suo formato è il seguente: XCHG operando1, operando2 Dopo l’esecuzione di questa istruzione il contenuto di operando1 è pari al precedente valore di operando2 e viceversa. Esempi XCHG AX, BX XCHG MEMORY, AX

8 M. Rebaudengo, M. Sonza Reorda Restrizioni nell'uso di XCHG Gli operandi devono avere la stessa lunghezza. Nessuno dei due operandi può essere un registro di segmento. Non è possibile scambiare il contenuto di due locazioni di memoria. Per fare questa operazione si può utilizzare un registro temporaneo: MOVAH, DATO2 XCHGAH, DATO1 MOVDATO2, AH

9 M. Rebaudengo, M. Sonza Reorda Esempio Si desidera invertire l’ordine degli elementi di un vettore. #define LUNG 150 main() { int i; char vett[LUNG], temp;... for (i=0 ; i < (LUNG/2) ; i++) { temp = vett[LUNG-1-i]; vett[LUNG-1-i] = vett[i]; vett[i] = temp; }... }

10 M. Rebaudengo, M. Sonza Reorda Soluzione Assembler LUNGEQU150.MODELsmall.STACK.DATA VETT DB LUNG DUP (?).CODE... MOV SI, 0 ; SI punta al primo elemento MOV DI, LUNG-1 ; DI punta all’ultimo elemento MOV CX, LUNG/2 ciclo: MOV AH, VETT[SI]; scambio del contenuto XCHG AH, VETT[DI] MOV VETT[SI], AH INC SI; aggiornamento degli indici DEC DI LOOP ciclo...

11 M. Rebaudengo, M. Sonza Reorda Istruzione LEA Formato: LEA dest, sorg Funzionamento: L’offset dell’operando sorg viene copiato nell’operando dest. Applicazione L’istruzione LEA trasferisce l’effective address dell’operando sorgente nell’operando destinazione. Esempio LEAAX, VAR Copia nel registro AX l’offset della variabile VAR.

12 M. Rebaudengo, M. Sonza Reorda Copia di un vettore di interi LUNGEQU500.MODEL small.STACK.DATA SORG DW LUNG DUP(?) DEST DW LUNG DUP(?).CODE... LEA SI, SORG LEA DI, DEST MOV CX, LUNG ciclo: MOV AX, [SI] MOV [DI], AX ADD SI, 2 ADD DI, 2 LOOP ciclo...

13 M. Rebaudengo, M. Sonza Reorda Istruzioni LDS e LES Formato: LDS dest, sorg LES dest, sorg Funzionamento: Le istruzioni LDS e LES hanno due operandi: un registro dest su 16 bit ed un indirizzo intero memorizzato in una doubleword. L’istruzione LDS copia l’offset nel registro dest e l’indirizzo di segmento in DS. L’istruzione LES copia l’offset nel registro dest e l’indirizzo di segmento in ES.

14 M. Rebaudengo, M. Sonza Reorda Esempi.DATA STRDB100 DUP (?) STRADDDDSTR STR1DB100 DUP (?) STR1ADDDDSTR1.CODE... LDSSI, STRADD LESDI, STR1ADD

15 M. Rebaudengo, M. Sonza Reorda Istruzioni PUSH e POP Formato: PUSH sorgente POP destinazione Funzionamento: L’istruzione PUSH decrementa il valore di SP di 2 unità e trasferisce una word dall’operando sorgente all’elemento dello stack indirizzato da SP. L’istruzione POP trasferisce una word dall’elemento dello stack indirizzato da SP all’operando destinazione e incrementa il registro SP di 2 unità.

16 M. Rebaudengo, M. Sonza Reorda Istruzioni PUSH e POP (segue) Le istruzioni PUSH e POP lavorano su operandi a 16 bit e possono essere utilizzate per copiare nello stack il contenuto di registri general purpose, registri di segmento e locazioni di memoria. L’8086 non permette di eseguire la PUSH di un operando immediato; tale operazione è stata introdotta nel linguaggio a partire dal Esempi POP VAL PUSH AX PUSH7 (valida dal 80186)

17 M. Rebaudengo, M. Sonza Reorda Istruzioni PUSHA e POPA Sono state introdotte a partire dal Formato: PUSHA POPA Funzionamento: Le istruzione PUSH e POPA eseguono le operazioni di push e pop di tutti i registri general purpose ( AX, BX, CX, DX, SP, BP, SI, DI ). Il valore del registro SP caricato nello stack è pari al valore che tale registro assume prima del caricamento del primo registro.

18 M. Rebaudengo, M. Sonza Reorda Istruzioni IN e OUT Formato: INregistro, porta OUTporta, registro Funzionamento: Attraverso le istruzioni IN e OUT, il processore scambia i dati con le periferiche di I/O. Per leggere da un dispositivo si usa l’istruzione IN ; per scrivere su un dispositivo si usa l’istruzione OUT. Il campo registro può essere o AX o AL ; il campo porta è una costante su 8 bit, oppure il registro DX, e rappresenta l’indirizzo della periferica cui si vuole accedere.