Trasformano un file di testo su cui è scritto un programma in assembler x86, in un file eseguibile DOS (*.exe).
TASM : compilatore
Converte
un file di testo su cui è scritto un programma in assembler x86 solitamente con
estensione .asm ad un file intermedio con
estensione .obj
Se richiesto durante la conversione, tasm produce altri file utili
allo sviluppatore per il debugging del proprio programma. Uno dei più noti è .lst
TLINK: linker
Converte un file uno o più files .obj in
unico file con estensione .exe o .com.
TD: debugger
Permettere di testare il programma: esecuzione passo-passo, controllo dei
registri della CPU, memoria, .....
Formato del file contenente il sorgente
assembly del programma:
E' un comune file di testo con estensione
.asm il nome deve seguire le specifiche (DOS!). Può
essere modificato da qualsiasi editor di testo (notepad,edit..). Esistono degli
editor specializzati che mettono in evidenza la sintassi assembler (ultraedit).
title Test ;Titolo del programma
.model small ;Modello di utilizzo della memoria
.stack ;Occupazione del segmento di stack
.data ;Segmento dati qui si definiscono le variabili utilizzate
messaggio db 'Ciao !',10,13,'$'
.code ;Segmento codice: da quì in poi si scrive il programma
.startup ;Modulo di inizializzazione prima dello start del programma
mov ah,09h
mov dx,offset messaggio
int 21h
.exit ;Modulo di chiusura del programma
end
Primo programma esempio:
Realizzare un programma che una volta lanciato scriverà "Ciao!"
sullo schermo del PC (il sorgente è visualizzato qui sopra).
Lista delle operazione da effettuare:
Esercizio 2:
test1.asm
title Test1 ;Titolo del programma
.model small ;Modello di utilizzo della memoria
.stack ;Occupazione del segmento di stack
.data ;Segmento dati qui si definiscono le variabili utilizzate
.code ;Segmento codice: da quindi si scrive il programma
.startup ;Modulo di inizializzazione prima dello start del programma
;Stampa l'intero set di caratteri sullo schermo
mov cx,255
ciclo:
mov ah,02h
mov dl,cl
int 21h
loop ciclo
.exit ;Modulo di chiusura del programma
end
Esercizio 3:
test2.asm
title Test2 ;Titolo del programma
.model small ;Modello di utilizzo della memoria
.stack ;Occupazione del segmento di stack
.data ;Segmento dati qui si definiscono le variabili utilizzate
mess_piu_grande db 'Piu'' grande !',10,13,'$'
mess_piu_piccolo db 'Piu'' piccolo !',10,13,'$'
mess_indovinato db 'Indovinato dopo: ','$'
mess_tentativi db ' tentativi',10,13,'$'
mess_damm_num db 'Dammi un numero: ','$'
acapo db 10,13,'$'
Tentativi db 0
.code ;Segmento codice: da quindi si scrive il programma
.startup ;Modulo di inizializzazione prima dello start del programma
mov ax,0
mov si,46Ch
push ds
mov ds,ax
mov bx,[si]
pop ds
shl bl,5
shr bl,5
add bl,30h
ciclo:
mov ah,09
mov dx,offset mess_damm_num
int 21h
mov ah,01
int 21h
push ax
mov ah,09
mov dx,offset acapo
int 21h
pop ax
inc Tentativi
cmp al,bl
ja maggiore
jb minore
mov ah,09
mov dx,offset mess_indovinato
int 21h
mov dl,Tentativi
add dl,30h
mov ah,2
int 21h
mov ah,09
mov dx,offset mess_tentativi
int 21h
.exit ;Modulo di chiusura del programma
maggiore:
mov ah,09
mov dx,offset mess_piu_piccolo
int 21h
jmp ciclo
minore:
mov ah,09
mov dx,offset mess_piu_grande
int 21h
jmp ciclo
end