Want to create interactive content? It’s easy in Genially!
X86 e Assembly basic
GIOVANNA PALLOTTA
Created on February 20, 2024
Start designing with a free template
Discover more than 1500 professional designs like these:
Transcript
Architettura x86
X86 è una famiglia di architetture di set di istruzioni per computer con set di istruzioni complesse (CISC) inizialmente sviluppate da Intel sulla base del microprocessore Intel 8086 e della sua variante 8088 . L'8086 è stato introdotto nel 1978 come estensione completa a 16 bit del microprocessore Intel 8080 a 8 bit , con la segmentazione della memoria come soluzione per indirizzare più memoria di quella che può essere coperta da un semplice indirizzo a 16 bit. Il termine "x86" è nato perché i nomi di diversi successori del processore Intel 8086 terminano con "86", inclusi i processori 80186 , 80286 , 80386 e 80486 . Colloquialmente i loro nomi erano "186", "286", "386" e "486".
Intel 8086
L'Intel 8086 possiede 14 registri da 16 bit, di cui quattro registri per uso generico (AX, BX, CX, DX), a cui si può accedere anche come se fossero otto registri a 8 bit (AH e AL, BH e BL, CH e CL, DH e DL), due registri indice per indirizzare in memoria (SI, DI) e due registri dedicati alla gestione dello stack (BP e SP). A questi si aggiungono altri quattro registri detti di segmento (CS, DS, SS e ES), dedicati specificatamente all’indirizzamento della Memoria. Completano il set di registri l’Instruction Pointer IP (e’ il program counter) e il registro PSW (Program Status Word), denominato Flag register.
Architettura
Organizzazione della memoria
La cpu 8086 si compone di un bus indirizzi a 20 linee (20 bit, ogni linea è un bit) •Si possono generare 220 indirizzi • In generale la memoria può contenere 220 locazioni, dove ogni locazione di memoria ha un indirizzo di 20 bit (nonostante il processore sia a 16 bit, quindi i registri, anche quelli che trasportano gli indirizzi di memoria, sono a 16 bit, ma sorge il problema dell’indirizzamento della memoria
Gestione Memoria Ram
La memoria può essere suddivisa in: – Paragrafi(zone di memoria con 16 byte, si possono gestire fino a 64k di paragrafi,e sono numerati a partire dalla locazione 00000h di memoria). – Segmenti(zone di memoria con 64k byte,si può gestire fino a 64k segmenti e ogni segmento inizia in corrispondenza con un paragrafo).
Vantaggi della segmentazione
- Spazio di indirizzamento pari a 2^20,ma su 16 bit
- Separazione tra dati,codice e stack
- Possibilità di avere più segmenti dello stesso tipo
- Possibilità di sovrapposizione tra segmenti
- Rilocabilità
Come si risolve il problema dell’indirizzamento di una locazione di memoria?
• Indicare il segmento che la contiene e all’interno del segmento la locazione desiderata • Dunque un indirizzo di memoria viene indicato con una coppia di valori dove • Il primo valore è detto base = indirizzo di inizio del segmento (indicato con 4 cifre esadecimali) • IL secondo è detto spiazzamento o offset che è l’indirizzo della locazione all’interno del segmento (indicato con 4 cifre esadecimali)
Cosa c’è in un segmento?
•Il segmento è una porzione di RAM • La Ram dunque è suddivisa in tanti segmenti per cui si dice che è segmentata •In tali segmenti viene suddiviso un programma software a seconda del tipo di informazioni che lo compongono: o dati o istruzioni • La CPU 8086 ha 4 tipi di segmento • Code Segment : contiene il codice (indirizzo di inizio è nel registro CS) • Data Segment: contiene i dati (indirizzo di inizio è nel registro DS) • Extra Segment: contiene dati (indirizzo di inizio è nel registro ES) • Stack segmente: contiene dati (indirizzo di inizio è nel registro ss)
ASSEMBLY tutte le istruzioni
- MOV destinazione, sorgente
- INC: incrementa di uno – es: INC AX
- DEC: decrementa di uno - es: DEC AX
- NEG: negazione
- CMP: confronta con una sottrazione e setta i flag S e Z
- del PSW
- ADD: somma due operandi
- SUB: Sottrazione
- JG etichetta: salta se il primo operando è maggiore del
- secondo
- JE etichetta: Salta se i due operandi sono uguali
- JMP etichetta: Salta incondizionatamente
Altre istruzioni
Input: MOV AH,07h INT 21h
Stampa: MOV DL,65 MOV AH,02h INT 21H