Sei sulla pagina 1di 14

ASSEMBLY 8086

Il linguaggio assembly è un linguaggio a basso livello che permette la


rappresentazione in simbolico del linguaggio macchina.
Il nostro computer infatti legge solamente due valori cioè lo 0 e l’1.
Tutte le combinazioni di questi due numeri danno origine al codice binario
utilizzato dal nostro computer e quindi definito linguaggio macchina.
Il linguaggio assembly permette di trasformare il linguaggio macchina in parole.
Esistono diversi tipi di assembly in quanto varia in base al processore, quindi ogni
famiglia di processore possiede un diverso tipo di linguaggio assembly.
Un programma quando viene scritto in linguaggio assembly viene definito SORGENTE.
Una volta trasformato in linguaggio macchina viene definito OGGETTO.
Infine procedendo con l’ultima fase che si chiama LINK avremo il programma
ESEGUIBILE.
Il processore 8086 che andremo ad utilizzare per il linguaggio assembly
possiede delle caratteristiche.

Tutte le operazioni vengono svolte attraverso l’utilizzo di registri che sono delle
memorie molto veloci costruite sui nostri processori.
Il processore 8086 possiede 14 registri i quali vengono definiti registri general
purpose e quindi utilizzabili per tutti gli scopi.
TIPI DI REGISTRI
REGISTRO AX: parte alta definita AH
parte bassa definita AL
REGISTRO BX: parte alta definita BH
parte bassa definita BL
REGISTRO CX: parte alta definita CH
parte bassa definita CL
REGISTRO DX: parte alta definita DH
parte bassa definita DL
PROGRAMMI DA UTILIZZARE PER POTER
PROGRAMMARE IN ASSEMBLY
PSPAD = editor di testo che ci permette di scrivere in una serie di linguaggi con
estensione .ASM contenente il programma sorgente
TASM-TURBO ASSEMBLER = assembla i singoli file sorgente, e genera
altrettanti file oggetto, con estensione .OBJ
TLINK = permette di creare il file eseguibile con estensione .EXE
TURBO DEBUGGER = verifica e corregge gli eventuali errori
COME CREARE UN PROGRAMMA IN ASSEMBLY

1. Avviare il programma PSPAD


2. Aprire un nuovo file di tipo x86 assembly
3. Scrivere delle funzioni fisse
.MODEL SMALL
.STACK 100H
.DATA

.CODE
1. Con la prima istruzione andremo a definire un modello per il nostro
programma che può essere di vario tipo come ad esempio small, large, tiny,
medium, ecc….
2. Con la seconda si dice al compilatore quanto spazio bisogna riservare per
lo stack. Se viene omesso, il compilatore usa per default 400h (1Kb)
3. Con la terza istruzione inseriamo le variabili che in assembly sono solo due
DB = 1 BYTE = 8 BIT
DW = 2 BYTE = 16 BIT
4. Con l’ultima istruzione inseriamo tutte le istruzioni del programma
In assembly non è possibile effettuare operazioni senza usare i registri.
Quindi la prima operazione da fare per poter ad esempio sommare due
variabili è l’istruzione MOV, la quale ci permette di copiare una variabile in
un’altra o in un registro.

ESEMPIO: MOV AL, GATTO (copio gatto in AL)


ADD AL, CANE (sommo gatto con cane)

N.B. non è possibile fare la somma di due variabili. Almeno una variabile deve
essere all’interno di un registro.
ESEMPIO = MOV AL, gatto
ADD AL, CANE
MOV SOMMA, AL ; copio il valore AL in somma
Per poter terminare il programma come ultima istruzione bisogna scrivere END

Salvare l’esercizio.asm
Sotto l’istruzione .CODE aggiungiamo l’istruzione .STARTUP la quale servirà per
dire al nostro computer il punto da cui far partire il nostro programma.

Aggiungiamo poi due nuove istruzioni, molto importanti per assembly:


MOV AH, 4CH INT 21H
Con queste due ultime istruzioni diciamo a Windows che il programma è
completamente finito e non c’è più niente da eseguire.

Un ulteriore istruzione da inserire è la MOV BL, SOMMA la quale servirà a


visualizzare il risultato della somma.
ESEMPIO:
.MODEL SMALL
.STACK 100H
.DATA
gatto DB 3
cane DB 2
somma DB ?
.CODE
.STARTUP
MOV AL, gatto ; copio gatto in AL
ADD AL, cane ; sommo cane in AL
MOV somma, AL ; copio il valore di AL in somma
MOV BL, somma
MOV AH, 4CH ; dico a windows che il programma è finito
INT 21H ; restituisco il controllo al DOS
END
COMPILAZIONE DI UN PROGRAMMA CON
ASSEMBLY
1. Avviare da start la funzione ESEGUI
2. Scrivere CMD e cliccare OK
3. Fare doppio click per avviare il DOSBOX
4. Scrivere Z:mount g:G\
5. Comparirà la scritta «drive G is mounted as local directory G:\»
6. Scrivere Z:\>G:\
7. G:\>cd(nome cartella)
8. G:\(nome cartella)>TASM\TASM(nomefile.asm)/L/ZI (funzione necessaria per assemblare il file)
Il passo successivo sarà quello di linkare l’oggetto che è stato creato durante la fase di
assemblaggio.
Tornare quindi al prompt dei comandi e scrivere:
G:\nomecartella>TASM\tlinknome.OBJ/V
Tornando alla cartella vedremo che si sono creati due nuovi file di cui uno .EXE cioè il
programma che noi andremo ad eseguire.
Ritornando al prompt dei comandi scriveremo:
G:\nomecartella>TD\TDnomefile.EXE
Premendo invio apparirà il programma.
Andiamo su VIEW e clicchiamo prima su register e dopo su variables.
Per poter attestare che il nostro programma funziona, lo andiamo ad eseguire passo
passo premendo F7.