;--------------------------------------------------------;
; File primo.asm                                         ;
; Il primo programma Assembly per Win32 (versione TASM). ;
; Questa versione assembla anche con TASM 2.x e 3.x.     ;
; Mostra un messaggio attraverso la finestra predefinita ;
; MessageBox.                                            ;
;--------------------------------------------------------;

; ################# direttive per l'assembler #################

.386                                ; set di istruzioni a 32 bit

; ############### dichiarazione tipi e costanti ###############

NULL               = 00000000h      ; valore nullo
MB_OK              = 00000000h      ; codice bottone 'OK'
MB_ICONINFORMATION = 00000040h      ; codice icona 'ICONINFORMATION'

; ################# prototipi delle procedure #################

EXTRN    MessageBoxA: PROC
EXTRN    ExitProcess: PROC

; #################### inclusione librerie ####################

INCLUDELIB  ..\lib\import32.lib     ; libreria generale

; ################ segmento dati inizializzati #################

_DATA       SEGMENT  DWORD PUBLIC USE32 'DATA'

strTitolo      db    'Win32 Assembly', 0
strMessaggio   db    'Il primo programma Assembly per Win32', 0

_DATA       ENDS

; ##################### segmento di codice #####################

_TEXT       SEGMENT DWORD PUBLIC USE32 'CODE'

   ASSUME   cs: _TEXT, ds: _DATA    ; assegnamento segmenti

start:                              ; entry point del programma

   push     MB_OK OR MB_ICONINFORMATION
   push     offset strTitolo
   push     offset strMessaggio
   push     NULL
   call     MessageBoxA

   push     0      
   call     ExitProcess            ; termina con exit code = 0

_TEXT       ENDS

; ##############################################################

   END      start                   ; fine del modulo