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

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