Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Schede del Tutorial

Home » Programma il Computer » Tutorial Assembly

Le Schede del Tutorial

  Le PseudoOperazioni di MASM

SCHEDA n° 02 [ 24  di 26] 

    

    Operatori MASM - FAR, NEAR
     
 
bulletNEAR, FAR: questi operatori sono di norma scritti insieme alle direttive EXTRN, LABEL e PROC o in aggiunta ad altri operatori, PTR e THIS, per stabilire in quale segmento sono definiti gli oggetti che hanno questo attributo; nel primo caso le variabili o le procedure sono definite nel medesimo segmento (vicine) del programma principale; nel secondo appartengono invece a segmenti diversi (lontane):
     
        EXTRN  BIOScls:NEAR ;proc. intrasegmentale
        EXTRN  RAMcls:FAR   ;proc. extrasegmentale
sonoQui LABEL  NEAR
Main    PROC   NEAR
sonoQui EQU    THIS FAR
        CALL   FAR PTR sonoQui
Una curiosità: l'operatore TYPE, usato per esempio dall'istruzione MOV AX,TYPE Main, restituisce il numero 0FFFFH, se l'indagine è condotta (come in questo caso) su etichette NEAR oppure 0FFFEH se invece l'etichetta è definita FAR.
bulletVale la pena ricordare che per indirizzare oggetti NEAR basta la parte offset (una sola word) di un indirizzo logico, dato che il segmento è in comune tra loro, mentre per i FAR serve l'indirizzo logico completo (segment:offset, per esempio CS:IP se si tratta di procedure o DS:SI se tratta di dati).
     
    Operatori MASM - LOW, HIGH, OFFSET, SEG, SHORT
     
bulletLOW, HIGH: questi operatori restituiscono rispettivamente il byte meno significativo (parte bassa) e quello più significativo (parte alta) di una espressione numerica costante a 16 bit:

      

        MOV   AL,LOW  1122H  ; mette 22H in AL
        MOV   AL,HIGH 1122H  ; mette 11H in AL

      

bulletOFFSET: questo operatore è utile perché consente di risalire alla parte offset dell'indirizzo di un simbolo (variabile o entry-point) definito nel segmento; l'istruzione che usa l'operatore è piuttosto lunga, per cui l'Autore preferisce affidarsi al codice mnemonico LEA, che fa' la stessa cosa in modo più sintetico; nell'esempio entrambe le istruzioni lasciano in SI l'indirizzo della Tabella:

      

Tabella  DB  01H
         MOV   SI,OFFSET Tabella
         LEA   SI,Tabella

      

bulletSEG: questo operatore permette di conoscere il valore della parte segment dell'indirizzo di un simbolo (variabile o entry-point) definito nel segmento; l'esempio proposto lascia in AX e BX lo stesso numero esadecimale a 16bit, corrispondente al valore del segmento (il primo libero..) in cui è stato caricato il programma dal loader:

      

_prog    SEGMENT BYTE PUBLIC 'CODE'
         ..........  

ATTRIB   DB       0FH
Main     MOV   BX,SEG ATTRIB
         MOV   AX,SEG _prog

      

bulletSHORT: questo operatore consente di ridurre a 2 il numero di bytes necessari per compilare i salti assoluti (di solito 3): l'operazione riesce solo se tra il punto in cui c'è l'istruzione di salto e il punto di arrivo sono presenti meno di 127 bytes in avanti o 128 bytes indietro, altrimenti viene segnalato errore (error A2053: Jump out of range by nnn byte(s)). Conviene sempre provare a fare salti corti: se il compilatore si offende... basta levare la parola SHORT e la compilazione si conclude senza errori:

      

        JMP  SHORT xxx00
        ;...meno di 128 bytes
xxx00:  NOP

    

Pagina Precedente Scheda n° 02 Pagina Successiva Pseudo Operazioni di MASM Torna al Menu delle Schede del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
Scheda n° 02 -  24
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

    

SCHEDE » 1.Header EXE 2.PseudoOp MASM 3.Differenza tra Macro e Procedure
4.
Tabella Vettori 5.PSP 6.Stack 7.Istruzioni 80x86
8.La misura dell'Informazione 9.Numeri e Logica Binaria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati