  | Sebbene non sia strettamente necessario
    l'inizio delle procedure dei nostri programmi può essere formalizzato con
    la PseudoOperazione PROC
    e la sua fine con la PseudoOperazione ENDP. | 
    | Le procedure appartengono ad un Segmento di
    codice e possono essere chiamate con l'istruzione CALL:
    per questo devono terminare sempre con un'istruzione 
  RET. | 
    | Le 2 direttive devono esser sempre in
    coppia: se ci si dimentica di 
  ENDP viene segnalato errore (Open procedures:<nomeprocedura>). | 
    | Di solito dopo la direttiva 
  PROC bisogna specificare l'attributo 
  NEAR o FAR:
  
      | se la procedura chiamata nello 
    stesso segmento in cui è definita (con 
  PROC e 
    ENDP) essa è di 
    tipo NEAR (vicina); in questo 
    caso l'attributo può anche essere omesso e, addirittura, può essere 
    eliminata tutta la struttura, limitandoci ad aggiungere i  
    2 punti dopo il nome della procedura. 
    
      
            
      
      
      
      Stampa
        PROC NEAR 
               ; inserire qui le istruzioni 
               RET 
        Stampa    ENDP | 
      
      Stampa: 
               ; inserire qui le istruzioni 
               RET | 
       
     
     
     |  
   
  
      
          
            | 
          
          Le etichette con i 2 punti indicano sempre locazioni di tipo 
          NEAR, per cui anche le eventuali procedure così 
          definite saranno di tipo NEAR. | 
       
     
  
      | Se la procedura dovrà essere chiamata 
    all'interno di segmenti diversi 
    da quello nel quale la stiamo definendo, deve essere dichiarata 
    FAR (lontana); in questo caso bisogna ovviamente evitare di 
    definire la procedura con i 2 punti finali:
          
      
      
      Stampa
        PROC FAR 
               ; inserire qui le istruzioni 
               RET 
        Stampa    ENDP | 
       
      |  
   
   | 
    | Nei nostri programmi eviteremo
    di far ricorso alle procedure FAR;
    la scelta di realizzare codici sorgente destinati a generare programmi
    eseguibili di tipo COM impone la necessità di un
    solo segmento, nel quale troveranno posto tutte le parti
    componenti (istruzioni, variabili e stack). | 
    | La scelta intrasegmentale
    da per scontato che tutte le procedure interne (anche quelle importate dalle
    librerie) siano di tipo vicino (NEAR),
    per cui eviteremo anche di usare la struttura PROC
    NEAR/ENDP,
    limitandoci a definire le nostre procedure con i 2 punti finali. | 
    | Per onore del vero (e per puro senso estetico)
    detta struttura sarà usata una-tantum solo per il  Main
    Program, cioè per
    dare un guscio estetico a tutto il
    nostro codice sorgente (vedi 
  
  Matrici):
        
      
      PAGE 66,132 
        _prog   
        SEGMENT   BYTE PUBLIC 'CODE' 
                 ASSUME 
        CS:_prog,DS:_prog 
                 ORG     
        0100H 
        INIZIO:  JMP      Main 
        ATTRIB   DB       0FH 
        Stampa:  ; inserire qui le istruzioni 
                 RET 
          
            Main  
                PROC    NEAR 
                 ; inserire qui le istruzioni 
                       CALL    
              Stampa 
              
                 ; inserire qui le istruzioni 
              Main     ENDP | 
           
         
      
        _prog   
        ENDS 
                 END INIZIO
        
        | 
       
      |