LA CPU INTEL Vantaggi dei programmi Assembly

Documenti analoghi
Programmazione in linguaggio assembly per architetture Intel 8088

Introduzione. Architettura

Processore Danilo Dessì. Architettura degli Elaboratori.

CORSO DI ARCHITETTURA DEGLI ELABORATORI Il Processore 8088

Nel microprocessore 8086 abbiamo una gran quantità di registri

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

Programmazione Assembly per 8088: Esercizi svolti

Linguaggio Assembly e linguaggio macchina

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086)

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

CALCOLATORI ELETTRONICI II

Assembly. Modello x86

LABORATORIO DI SISTEMI

Lezione 12. Assembly II. Set di Istruzioni MIPS Strutture di controllo in Assembly

L Assembler Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

Famiglia dei processori INTEL

Linguaggio Assembly e linguaggio macchina

Calcolatori Elettronici Lezione A2 Architettura i8086

Linguaggio Assembly e linguaggio macchina

Il linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I

1.1.1 Esercizio conta le occorrenze di un carattere in una stringa

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Il linguaggio macchina

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

; ; Definizione costanti

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Istruzioni assembler Istruzione N Registri

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

iafelice at cs(dot)unibo(dot)it

Introduzione al linguaggio macchina. Istruzione l/m

Confronti e salti condizionati

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

OPERAZIONI ARITMETICHE

Lezione Uno: Il linguaggio Assembly e i metodi di indirizzamento (libro di testo pag )

Ogni CPU è in grado di eseguire un insieme limitato di istruzioni macchina codificate in binario secondo il seguente schema generale.

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Architettura di una CPU

Istruzioni e linguaggio macchina

ISA (Instruction Set Architecture) della CPU MIPS32

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

ISA (Instruction Set Architecture) della CPU MIPS

Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Calcolatori Elettronici

Sistemi Operativi. ASSEMBLER per Minix Lez. 17

Sistema Operativo - Gestione della Memoria lista argomenti di studio

I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi. Elementi di Assembly 8086

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

L insieme delle istruzioni (6)

Fondamenti di Informatica A. A / 1 9

CPU. ALU e Registri della CPU. Elementi della CPU. CPU e programmazione (Parte 1) Central Processing Unit, processore

CORSO DI ARCHITETTURA DEGLI ELABORATORI Il Processore 8088

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Lezione 12: L architettura LC-3

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Modi di indirizzamento del processore MC68000 (parte prima)

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Assembler. In verde sono evidenziati i comandi del debug. Attiva la scrittura di istruzioni assembler nella locazione 0100.

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Modi di indirizzamento del processore MC68000 (parte prima)

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti

Elementi di Architettura

Capitolo 2. Elaborazione dei dati. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Architettura degli elaboratori (A)

Architettura degli Elaboratori

Rev. 2.4 ( ) by Enrico Nardelli 3 -

Il linguaggio assembly 8086

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

Lezione 17 Il Set di Istruzioni (3)

Lezione 17: Indirizzamento della memoria LC-3

L'INDIRIZZAMENTO NEL PROCESSORE MC PARTE 1 -

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

Esercitazioni ElDig2-09. Dott. Salvatore Pontarelli

Set di istruzioni Z80 (terza parte) Pagina 1 di 26 ISTRUZIONI DI SHIFT

Esercizi per il corso di Architettura dei Calcolatori. Anno accademico 2008/09. Si prevede l utilizzo dell emulatore Eniac ( presentato a lezione )

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Fetch Decode Execute Program Counter controllare esegue prossima

Motorola 68000: primi programmi assembly

Introduzione al linguaggio macchina

Linguaggio Assembler Intel -cenni - Calcolatori Elettronici B a.a. 2005/2006 Massimiliano Giacomin

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

Modi di indirizzamento del processore MC68000 (parte seconda)

Architettura di un calcolatore

Architettura degli elaboratori

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Firmware Division. Sommario

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO

L Instruction Set Architecture ed il Linguaggio Assembly

Transcript:

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; Infatti i programmi in Assembly sono tipicamente più veloci, più corti, ma più complessi dei programmi scritti in linguaggi ad alto livello. La maggior complessità è data dal fatto che anche le più comuni routines devono essere sintetizzate dal programmatore (talvolta per semplificare la programmazione e per aumentare la compatibilità del codice, si utilizzano librerie general purpose, ma sono ovviamentemeno efficienti). ESEMPIO: Come esempio si consideri un programma per stampare i numeri pari da 0 a 100: Il programma BASIC è: 100 I=0 110 PRINT I 120 I=I+2 130 IF I 100 GOTO 110 Il codice Assembly generato da un compilatore BASIC è il seguente I DW? L00100: MOV I, 0 L00110: MOV AX, I CALL STAMPA L00120: MOV AX, I

2 ADD AX, 2 MOV I, AX L00130: MOV AX,I CMP JB AX,100 L00110 Si notano almeno due semplici modifiche, che ne migliorano notevolmente le prestazioni: -L uso di registri al posto di locazioni di memoria -L uso di particolari caratteristiche dell Assembly Il programma scritto direttamente in Assembly è il seguente: MOV AX,0 ; inizializza il valore del contatore CICLO: CALL STAMPA ; stampa il valore corrente di AX INC AX ;calcola il nuovo numero pari INC AX ; a partire dal vecchio AX CMP AX,100 ; se AX non ha raggiunto il valore massimo JB CICLO ;ritorna a CICLO Il programma così ottenuto presenta rispetto a quello prodotto dal compilatore BASIC due vantaggi fondamentali: è più veloce (perché utilizza i registri e non locazioni di memoria) è composto da un numero minore di istruzioni e quindi occupa una minor e estensione di memoria.

3 Set di Istruzioni L Assembly dell 8086 rende disponibili 92 tipi di istruzioni, raggruppabili nelle seguenti classi: Trasferimento DATI Aritmetiche (Somma, sottrazione, moltiplicazione, divisione) Manipolazioni di Bit (logiche, traslazione, rotazione) Trasferimento di Controllo (CALL, RET, JMP e tutti i salti condizionati e non, LOOP) Manipolazioni di Interruzioni ( INT, INT0, IRET) Controllo del Processore( modifica dei Flag, Sincronizzazione, Istruzione nulla NOP). Modi di Indirizzamento Il Modo di Indirizzamento di un istruzione definisce il metodo da utilizzare per determinare dove è memorizzato un particolare dato (operando). Gli operandi possono essere contenuti: in registri; nell istruzione stessa; in memoria; su una porta di I/O. I Modi di Indirizzamento possono essere raggruppati in 7 classi: Register; Immediate; Direct; Register Indirect; Base Relative; Direct Indexed; Base Indexed. MOV AX,BX MOV AX,10h MOV AX, [BX] MOV AX, [SI] MOV AX, [BX+4]

4 ISTRUZIONI DI TRASFERIMENTO Nel microprocessore 8086 per spostare gli operandi in memoria si utilizza il comando MOV da Move cioè spostare muovere. Esso ha la seguente sintassi: MOV destinazione, sorgente Cioè sposta il contenuto di sorgente in destinazione; In questo caso si ha che la sorgente che è scritta a destra del comando viene spostata a sinistra del comando MOV destinazione sorgente La destinazione può essere un registro ( a 16 o a 8 bit) o una locazione di memoria; la sorgente può essere un registro,una locazione di memoria o un dato immediato. Vi sono molti modi per spostare un dato, tra questi ricordiamo: Indirizzamento immediato: MOV AX, 43FF MOV AL, 43H ; sposta il contenuto 43FFH in AX ; sposta il contenuto 43H in AL Indirizzamento con registro: MOV BX,CX MOV AH, AL ; sposta il contenuto di CX in BX ; sposta il contenuto di AL in AH Indirizzamento diretto (assoluto): MOV DATO, AX MOV AX,DATO ; sposta il contenuto di AX nella variabile DATO ; sposta il contenuto di DATO nel registro AX MOV AX, ES:DATO ;sposta in AX il contenuto della variabile DATO ;allocata nel segmento ES MOV AX, OFFSET DATO ; sposta in AX l offset della variabile DATO

5 Indirizzamento indiretto: L operando si trova ad un indirizzo il cui offset è specificato dal contenuto di un registro puntatore (BX,BP, SI o DI); il registro segmento di default è DS per BX, DI per SI mentre SS è per BP; MOV AL,[SI] MOV AX, [BP] MOV [DI],AL ISTRUZIONI ARITMETICHE: Istruzione ADD L operazione di somma tra due operandi viene realizzata attraverso il comando ADD ( da adder cioè sommare). La sua sintassi è: ADD sorgente1, sorgente2 In questo caso la somma tra sorgente1 e sorgente2 viene trasferita in sorgente1 Sorgente1 sorgente1 + sorgente2 ADD AX, DATO ; somma il contenuto di DATO a quello di AX e lo trasferisce in AX ADD DATO,BX ; somma il contenuto di BX e DATO e lo trasferisce in DATO Istruzione SUB L operazione di sottrazione tra due operandi viene realizzata tramite l istruzione SUB (da subtract o sottrai). La sua sintassi è: SUB sorgente1,sorgente2 N questo caso la sottrazione tra sorgente1 e sorgente2 viene trasferita in sorgente1 Sorgente1 sorgente1 sorgente2 Istruzione MUL L istruzione MUL esegue la moltiplicazione per sorgente del moltiplicando che si trova in AL se la moltiplicazione è ad 8 bit, mentre oppure esegue la moltiplicazione di sorgente per il moltiplicando che si trova in AX se la moltiplicazione è a 16 bit. Il risultato del prodotto di sorgente per il moltiplicando (AL O AX) viene trasferito in AX se il moltiplicando è a 8 bit mentre viene trasferito in DX:AX se il moltiplicando è a 16 bit(word

6 alta in DX e word bassa in AX). I fag C ed O vengono impostati ad 1 se la metà più significativa del risultato è diversa da zero. MUL sorgente Moltiplica senza segno interi a 8 bit o 16 bit con il risultato in doppia precisione a 16 o a 32 bit. ESEMPIO: MOV AL, 2 ;sposta il numero 2 in AL MOV BL,3 MUL B3 ;sposta il numero 3 in BL ; AX AL* BL ciè sposta in AX il numero dato dal prodotto di AL per BL ; nel nostro caso AX 0006 ESEMPIO: MOV AX,10 ; sposta in AX il numero 10h MOV BX, 2 ; sposta in BX il numero 02h MUL BX ;sposta in DX: AX il risultato di AX per BX nel nostro caso DX:AX 0000:0020 Istruzione DIV Per eseguire la divisione si segue la seguente sistassi: Divisione senza segno; DIV sorgente il divisore a 8 o a 16 bit è in sorgente; il dividendo di precisione doppia, è in AX o nella coppia di registri DX:AX; il quoziente va in AL (8bit) o in AX (16 bit) e il resto nei due casi, in AX o in DX. I flag sono indefiniti e una divisione per zero genera una interruzione di tipo 0.