Tutorial
|
Dettaglio Istruzioni |
Istruzioni della Cpu 80x86 |
SCHEDA n° 07 [I/ 009 di 198] |
|
![]() |
|
![]() | Questa istruzione non appartiene al Set dell'8088/86; si usa solo con 80286/486. |
![]() | Il suo compito è quello di verificare se il valore di un puntatore è compreso tra 2 valori limite. |
![]() | L'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). |
![]() | I 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. |
![]() | Per 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). |
![]() | Se 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. |
![]() | Se 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. |
![]() | L'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). |
![]() | Le sue caratteristiche sono riassunte nella
seguente tabella (leggi le istruzioni
![]() |
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 |
![]() | La tabella evidenzia che l'istruzione non
modifica alcuna flag e che ammette una
sola possibile tipologia di operandi:
|
![]() | La 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: |
|
![]() | Questa istruzione ha 2 codici operativi, 62H, seguito da quello che tiene conto degli operandi coinvolti. |
|
![]() |
Scheda n° 07 |
![]() |
Istruzioni Cpu 80x86 |
![]() |
![]() |
![]() |
||
Istruzione 009 - BOUND |
|
|
|
Home
![]() |
|
|||||||
|
Motore Ricerca |
|