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
Programmazione assembler
in un programma Assembler
Procedure In assembler.
Organizzazione della memoria
Chiamate a Procedure. Per lesecuzione di una procedura, un programma deve eseguire i seguenti sei passi: mettere i parametri in un posto dove la procedura.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
File.
Microprogrammazione Codice operativo.
CALCOLATORI ELETTRONICI Gestione delle subroutine.
CALCOLATORI ELETTRONICI
Gestione delle subroutine
Corso di Informatica Applicata - Lezione 3 - © 2005 Saverio De Vito Corso di Informatica Applicata Lezione 3 Università degli studi di Cassino Corso di.
Il Linguaggio Macchina
1 Generazione codice Daniela Briola Lorena Bellino.
Codifica di algoritmi linguaggio macchina vs programmazione strutturata Lab Programmazione - turno /2006.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
I File.
Algoritmi e Programmazione Avanzata
Istruzioni per il Controllo del Processore
Programmazione Avanzata
Gestione della memoria logica e fisica degli elaboratori x86
CALCOLATORI ELETTRONICI II
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
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Strutture di Controllo
Passaggio di parametri per indirizzo
Introduzione al linguaggio assembly del microprocessore a parte

1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Luca Orrù 1 Input/Output. 2 SOMMARIO Organizzazione di sistema Trasferimento dati; Gestione I/O.
Architettura di una CPU
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 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.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
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:
Architettura di un calcolatore e linguaggio macchina.
L’esecuzione dei programmi
SPIM Esercizi. Esercizio 1 – il comando ‘li’ Il codice deve eseguire una singola operazione: mettere il valore immediato 1023 nel registro s3.
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
Il calcolatore Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Esercizi.
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.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 20 Maggio.
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
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.
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 XCHG LEA LDS e LES XLAT PUSH e POP PUSHA e POPA PUSHF e POPF SAHF e LAHF 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 Istruzione XLAT Formato: XLAT Funzionamento: Durante l’esecuzione, il processore esegue la somma del contenuto dei registri AL e BX, trasferendo in AL il dato avente come offset il risultato di tale somma. Applicazione L’istruzione XLAT si usa nell’accesso a tabelle di conversione (look-up table). BX deve contenere l'indirizzo di partenza della tabella e AL l'offset al suo interno. Al termine AL contiene il byte puntato nella tabella.

16 M. Rebaudengo, M. Sonza Reorda Esempio Sia TAB una sequenza di byte contenente i valori esadecimali da 30H a 39H e da 41H a 46H corrispondenti al codice ASCII delle 16 cifre della rappresentazione esadecimale:.DATA TABDB30H,31H,32H,33H,34H;01234 DB35H,36H,37H,38H,39H;56789 DB41H,42H,43H,44H,45H,46H ;ABCDEF.CODE MOVAL, 10 MOVBX, OFFSET TAB XLAT L’istruzione copia il valore della locazione di memoria avente offset TAB+10 nel registro AL.

17 M. Rebaudengo, M. Sonza Reorda Limiti di XLAT I dati memorizzati nella tabella di conversione devono essere di tipo byte (per poter essere correttamente copiati in AL ); il massimo numero di elementi in tabella è pari a 256.

18 M. Rebaudengo, M. Sonza Reorda Esempio Si realizzi un programma che esegua la conversione in codifica Gray di 100 numeri binari compresi tra 0 e 15. Si ricorda che la codifica Gray è un particolare metodo di rappresentazione dei numeri interi, la cui caratteristica è quella di garantire che le codifiche di numeri decimali che differiscono di un’unità differiscono di un solo bit.

19 M. Rebaudengo, M. Sonza Reorda Soluzione Assembler LUNGEQU100.MODELsmall.STACK.DATA ; tabella di conversione da ; numero decimale a codice Gray TABDB B, B, B, B B, B, B, B B, B, B, B B, B, B, B NUM DB LUNG DUP (?) GRAY DB LUNG DUP (?)...

20 M. Rebaudengo, M. Sonza Reorda.CODE... LEA SI, NUM; copia dell’offset di NUM LEA DI, GRAY; copia dell’offset di GRAY MOV CX, LUNG LEA BX, TAB; copia dell’offset di TAB lab:MOV AL, [SI] ; copia di NUM in AL XLAT; conversione MOV [DI], AL; copia di AL in GRAY INC SI; scansione di NUM INCDI; scansione di GRAY LOOP lab...

21 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à.

22 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)

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

24 M. Rebaudengo, M. Sonza Reorda Istruzioni PUSHF e POPF Formato: PUSHF POPF Funzionamento: Permettono di salvare e di ripristinare i 16 bit della parola di stato ( PSW ). L’istruzione PUSHF decrementa il valore di SP di 2 unità e trasferisce la PSW nell’elemento dello stack indirizzato da SP. L’istruzione POPF trasferisce la parola indirizzata da SP nella PSW e incrementa il registro SP di 2 unità.

25 M. Rebaudengo, M. Sonza Reorda Istruzioni SAHF e LAHF Sstate introdotte nell’Instruction Set per compatibilità s/w con i processori 8080 e 8085, ma sono obsolete e di fatto soppiantate da PUSHF e POPF. Formato: SAHF LAHF Funzionamento: Le istruzione SAHF e LAHF permettono di accedere al valore dei flag memorizzandoli e prelevandoli dal registro AH. L’istruzione LAHF trasferisce i valori dei flag SF, ZF, AF e CF nel registro AH. L’istruzione SAHF trasferisce i valori di alcuni bit del registro AH nei flag SF, ZF, AF e CF.

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