Assembly. Modello x86

Похожие документы
Nel microprocessore 8086 abbiamo una gran quantità di registri

Architettura degli Elaboratori

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Architettura degli elaboratori (A)

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086.

ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10)

Il microprocessore 8086

Architettura 8086/8088

L insieme delle istruzioni (6)

Linguaggio Assembler Intel 80x86. Calcolatori Elettronici B a.a. 2004/2005 Massimiliano Giacomin

Architettura di una CPU

Il livello architettura e set di istruzioni

Ing. Gabriele MONTI

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Componenti principali

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Hardware di un Computer

Componenti e connessioni. Capitolo 3

Sistemi x86 CALCOLATORI ELETTRONICI LM

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

ARCHITETTURA DEI CALCOLATORI VOLUME I

Interazione con il DOS e il BIOS

Cenni ad Assembly Intel

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086)

Esercizi per il recupero del debito formativo:

Modi di indirizzamento

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.

HARDWARE E SOFTWARE DEL µp 8086

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

Programmazione Assembly Note su Microsoft Assembler

Programmazione Assembly

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Architettura dei Calcolatori elettronici

Il linguaggio assembly

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

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

Il linguaggio assembly 8086

Programmazione Assembly per 8088: Esercizi svolti

FONDAMENTI DI INFORMATICA Lezione n. 11

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Il microprocessore DMC8

CAPITOLO 4: BASI DI ASSEMBLY

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO

Componenti di un processore

Il Processore: l unità di controllo

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO

Microcontrollori 12/03/2014. Progettazione Sistemi Elettronici 2013/2014 1

Architettura di un calcolatore: Introduzione parte 2

Calcolatori Elettronici Parte VII: il Livello delle Istruzioni Macchina

Fondamenti di Informatica

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

1 Esercizi con architettura a 1 bus

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE

Istruzioni di modifica della sequenza di elaborazione

Lezione4: MIPS e Istruzioni (1 Parte)

PROGRAMMAZIONE MISTA. G. Frosini Programmazione mista Slide 1

Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Linguaggio Assembly e linguaggio macchina

Транскрипт:

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 Nel mercato ci sono diversi microprocessori tra loro differenti a livello fisico e software; In comune hanno: La dimensione delle celle di memoria: 1, 2, 4, 8 byte; Il numero ed il tipo di registri interni: 8, 16, 32, 64 bit; L ampiezza dei bus (dati ed indirizzi); Il numero di istruzioni: ridotte (RISC) o complesse (CISC); La dimensione delle istruzioni. 3

CPU INTEL 8086 L 8086 è un microprocessore a 16 bit. Le caratteristiche principali sono: Capacità di indirizzamento: 1 MB Bus indirizzi da 20 bit; 14 registri interni da 16 bit; Bus dati da 16 bit; Alimentazione a 5 volt; 48 pin di interconnessione (dual in line); Set di istruzioni esteso (CISC). 4

Architettura della CPU 5

SEGMENT POINTER GENERAL PURPOSE Registri dell 8086 AX (ACCUMULATOR) BX (BASE) CX (COUNTER) DX (DATA) 15 AH BH CH DH 8-7 AL BL CL DL 0 SP (STACK POINTER) BP (BASE POINTER) SI (SOURCE INDEX) DI (DESTINATION INDEX) SP BP SI DI IP (INSTRUCTION POINTER) IP CS (CODE SEGMENT) DS (DATA SEGMENT) SS (STACK SEGMENT) ES (EXTRA SEGMENT) CS DS SS ES FLAGS FLAGS 6

Registri General Purpose AX Accumulatore (diviso in AH e AL) BX Puntatore memoria (diviso in BH e BL) CX Contatore di cicli (diviso in CH e CL) DX Dati (diviso in DH e DL) 7

Registri speciali Instruction Register: contiene il codice operativo dell istruzione prelevata dalla memoria durante il fetch; Instruction pointer: contiene l indirizzo di memoria in cui è contenuta l istruzione immediatamente successiva a quella attuale; Stack Pointer: contiene l indirizzo di una zona di memoria interna chiamata Stack; Flag Register: gruppo di bit che forniscono una serie di informazioni sullo stato dei risultati dell ultima operazione. Address Registers: sono i registri che contengono gli indirizzi dei vari segmenti di memoria: Code Segment Data Segment Stack Segment Extra Segment 8

Registri Segment CS: Code Segment Register Contiene sempre l indirizzo di testa del segmento contenente il codice; viene inizializzato dal Sistema Operativo e non deve essere utilizzato dal programmatore. SS: Stack Segment Register Contiene sempre l indirizzo di testa del segmento contenente lo stack; viene inizializzato dal Sistema Operativo e non deve essere modificato dal programmatore. DS: Data Segment Register di solito contiene l indirizzo di testa del segmento dei dati utilizzati dal programma; deve essere inizializzato dal programmatore all interno del suo programma. ES: Extra Segment Register può essere utilizzato per definire un segmento ausiliario, per esempio per un ulteriore segmento dati; deve essere inizializzato dal programmatore 9 all interno del suo programma.

Registri Pointer SP BP SI DI IP Puntatore alla memoria di Stack (SS:SP) Di solito punta alla memoria di Stack (SS:BP) Puntatore alla memoria del segmento dati (DS:SI) Puntatore alla memoria del segmento dati esteso (ES:DI) Puntatore all indirizzo dell istruzione successiva (CS:IP) 10

Gestione della RAM Per comodità la memoria si può pensare divisa in: Paragrafi: Sono zone di memoria costituite da 16B contigui. Il sistema può gestire fino a 65536 (64K) paragrafi. I paragrafi sono numerati a partire dalla locazione di memoria00000h. I paragrafi non possono sovrapporsi. Segmenti: Sono zone di memoria costituite da 64KB contigui. Il sistema può gestire fino a 65536 (64K) segmenti; Ogni segmento inizia in corrispondenza di un paragrafo, ossia ad un indirizzo multiplo di 16 (10h). I segmenti possono sovrapporsi (Overlapping Segments). 11

Paragrafi e segmenti Indirizzo 00000h 00010h 00020h FFFFFh 12

Calcolo dell indirizzo fisico L indirizzo fisico di una cella di memoria è espresso da 20 bit; non è quindi possibile un indirizzamento mediante un solo registro a 16 bit. Esso è infatti ottenuto mediante la somma di due contributi: Segment Address: è l indirizzo di testa del segmento e viene ottenuto moltiplicando per 16 il numero del segmento (shift di 4 bit a sinistra). Offset: è l indirizzo relativo all interno del segmento. 13

Esempio di indirizzamento INDIRIZZO [SEGMENT:OFFSET] A100:0200 OFFSET 0 2 0 0 SEGMENT A 1 0 0 PHYSICAL ADDRESS A 1 2 0 0 14

Organizzazione della memoria RAM Segmenti Puntatori STACK SEGMENT Stack Segment Stack Offset CODE SEGMENT DATA SEGMENT EXTRA SEGMENT Code Segment Data Segment Extra Segment Code Offset Data Offset Extra Offset 15

La memoria di Stack Indirizzo SS:SP 0 1 0 5 0 0 1 2 0 1 0 6 2 0 1 0 5 0 0 1 0 0 1 0 6 0 0 1 0 5 0 0 0 E 0 1 0 5 E 0 1 0 5 0 0 1 0 0 1 0 6 0 16

Flag 17

Flag di stato Forniscono indicazioni relative al risultato dell ultima istruzione eseguita. Vengono automaticamente aggiornati dal processore ed il loro valore può essere testato dall utente tramite opportune istruzioni. I principali sono: Carry Flag (CF) indica se un istruzione di somma (o sottrazione) produce un riporto (o un prestito); Parity Flag (PF) indica se il risultato di una operazione contiene un numero pari di 1; usato principalmente per trasmissione dati. Zero Flag (ZF) indica se il risultato di una operazione è un valore nullo; Sign Flag (SF) ripete il valore del bit più significativo del risultato di una operazione; Overflow Flag (OF) indica se un operazione aritmetica dà origine ad una condizione di overflow. 18

Flag di controllo Il loro valore può essere forzato dall utente attraverso apposite istruzioni. In determinate situazioni sono testati dal processore che, a seconda del loro valore, si comporta in modi diversi. Trap Flag (TF) usato in ambiente di debug, causa l esecuzione single-step dei programmi Interrupt Enable Flag (IF) usato per disabilitare (quando uguale a 0) eventuali richieste di interruzioni esterne (interrupt) Direction Flag (DF) usato nelle operazioni sulle stringhe per regolare l incremento (DF=0) o il decremento (DF=1) dei Registri Indice 19

Modello di programmazione x86 Un modello di programmazione è la parte dell architettura di un microprocessore accessibile al programmatore: registri ed istruzioni L architettura x86 rappresenta il modello di programmazione dei processori 8086 e successivi (80286, 80386, 80486, Pentium, ) detti anche PC compatibili 20

Evoluzione dell 8086 21

SEGMENT POINTER GENERAL PURPOSE Registri dell x86 EAX (ACCUMULATOR) EBX (BASE) ECX (COUNTER) EDX (DATA) 31 EAX EBX ECX EDX 15 AH BH CH DH 8-7 AL BL CL DL 0 ESP (STACK POINTER) ESP SP EBP (BASE POINTER) ESI (SOURCE INDEX) EDI (DESTINATION INDEX) EBP ESI EDI BP SI DI EIP (INSTRUCTION PTR) EIP IP CS (CODE SEGMENT) CS DS (DATA SEGMENT) DS SS (STACK SEGMENT) SS ES (EXTRA SEGMENT) ES EFLAGS EFLAGS FLAGS 22