Tutorial Sezione Assembler

Dettaglio Istruzioni 

Le Schede del Tutorial

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [I/ 009 di 198] 

    

    BOUND - Verifica che un dato sia compreso tra 2 valori limite
     
bulletQuesta istruzione non appartiene al Set dell'8088/86; si usa solo con 80286/486.
bulletIl suo compito è quello di verificare se il valore di un puntatore è compreso tra 2 valori limite.
bulletL'indirizzo (numero con segno) da verificare è passato come operando destinazione in un registro indice (come DI o EDI): rappresenta il puntatore corrente all'interno di una ben delimitata zona di memoria (array).
bulletI suoi 2 valori limite sono predisposti in memoria a partire dall'indirizzo specificato dal operando sorgente, in sequenza, rispettivamente prima il valore iniziale (limite superiore) e poi quello finale (limite inferiore); di norma questi bytes sono posti all'inizio dell'array che rappresentano, dentro il quale deve potersi "muovere" il puntatore sotto verifica.
bulletPer tutti i processori il registro di riferimento è a 16 bit (come SI o DI) e la memoria di riferimento è a 32 bit (2 word, 4 locazioni); per i più recenti (80386/486) è invece possibile coinvolgere operandi di misura doppia, cioè confrontare un registro a 32 bit (come ESI o EDI) con una memoria di 64 bit (2 doubleword, otto locazioni).
         
bulletSe il valore del registro indice è minore del valore finale e maggiore del valore iniziale l'istruzione non ha effetto e consuma i tempi indicati in tabella.
bulletSe invece è esterno all'intervallo dei limiti viene generata ed eseguita automaticamente l'istruzione INT 05H e i tempi vanno integrati con quelli di servizio INT.
bulletL'indirizzo a cui tornare, salvato nello stack poco prima dell'esecuzione della procedura di servizio e recuperato al termine dalla sua IRET, è quello della stessa istruzione BOUND, invece di quello previsto in questi casi (cioè quello dell'istruzione successiva).
bulletLe sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni Legenda della Tabella):
         
BOUND Destinazione, Sorgente
BOUND Registro, Limiti
  Puntatore Indice di Array  BOUND suoi Valori Limite
 

Esempio di Applicazione

Cicli di Clock Mem
Acces
N°
Bytes
Flag   influenzate
Mnemonico Operandi 86 268 386 486 O D I T S Z A P C

BOUND

SI,[Depo03]

no 13 10 7 no 6                  
         
bulletLa tabella evidenzia che l'istruzione non modifica alcuna flag e che ammette una sola possibile tipologia di operandi:
bullet tra registro e memoria
          
bulletLa figura seguente mostra le risorse richieste da questa istruzione in funzione degli operandi coinvolti (leggi le istruzioni); da notare che, per evitare errori di compilazione, è necessario specificare, all'inizio del sorgente, la pseudoOperazione .386:
          

Addr

Codifica Masm

Sequenza Bytes

Istruzione

.386
0100 12345678 78 56 34 12 Depo03 DD 12345678H
---- ---------------- ----------------- ------- ----------------------
0104
010B
62 35 00000100
62 3D 00000100
62 35 00 01 00 00
62 3D 00 01 00 00
BOUND SI,[Depo03]
BOUND DI,[Depo03]
         
bulletQuesta istruzione ha 2 codici operativi,  62H, seguito da quello che tiene conto degli operandi coinvolti.

    

Pagina Precedente Scheda n° 07 Pagina Successiva Istruzioni Cpu 80x86 Torna al Menu delle Schede del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
Istruzione 009 - BOUND

    

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