|
Tutorial
|
Dettaglio Istruzioni |
|
|
 |
Istruzioni
della Cpu 80x86 |
SCHEDA n° 07 [I/
070
di 198] |
 |
|
JNBE - Salta se
non è Minore o Uguale |
|
 | Questa istruzione esegue
un salto condizionato dal risultato di una operazione
aritmetico-logica tra numeri senza segno; per numeri con segno bisogna usare
l'istruzione equivalente, JG. |
 |
I
microprocessori sono in grado di prendere decisioni,
eseguendo procedure (istruzioni) alternative sulla base del
risultato di una precedente operazione aritmetico-logica;
per un processore, dunque, decidere significa saltare ad un
percorso di programma alternativo... |
 |
Fai
attenzione: i salti condizionati
sono sempre di tipo corto (Short), cioè
rispetto alla posizione in cui vengono richiesti, possono puntare le
istruzioni poste 127 locazioni in avanti
o 128 indietro. Un errore
frequente, nelle prime esperienze di programmazione è proprio
quello di inserire troppe
istruzioni tra il punto di partenza e il punto di arrivo del
salto: in queste occasioni l'assemblatore segnala l'errore "error A2053: Jump out of range by
nnn byte(s)" |
 | In realtà i processori dal 80386.consentono
salti condizionati di tipo near (vicino),
cioè nel range 32767 in avanti e 32768
indietro; se viene specificata la pseudoOperazione
.386, l'assemblatore non
segnala errore e codifica l'istruzione nel modo più corto
possibile (anche short se è possibile). |
 | Le sue caratteristiche sono riassunte nella
seguente tabella (leggi le istruzioni
): |
|
JNBE Destinazione |
Salta
alla locazione se non minore o uguale |
| |
|
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 |
JNBE |
etichetta
|
16 |
7 |
7 |
3 |
no |
2 |
|
|
|
|
|
|
|
|
|
| 4 |
3 |
3 |
1 |
no |
 | La tabella mette in evidenza che in presenza
di salto (prima riga) è necessario un numero maggiore di cicli di Clock,
anche perchè il processore è costretto a reinizializzare
la coda dell'istruzione al fine di assumere i codici
operativi dell'istruzione a cui cedere il controllo (evidentemente non
consecutiva a quella che richiede il salto..); se il salto non
viene eseguito i tempi d'esecuzione (seconda riga) sono più rapidi. |
 | Si evidenzia anche che JNBE
(salta se non minore o uguale) viene eseguita se [flag di Carry]=0
e [flag di Zero]=0; nessuna flag è
invece influenzata da questa istruzione. |
 | Il servizio di questa istruzione è identico a
quello offerto dalla JA (salta
se maggiore). |
 | L'istruzione specifica (dopo la J
di Jump) la condizione
che impone il salto, in questo caso NBE,
legata all'evento Not Below or Equal, "salta
se non è minore o uguale..."; subito dopo indica l'etichetta della
locazione a cui saltare. |
 | Naturalmente questa etichetta deve essere
presente nelle prossimità dell'istruzione che l'ha dichiarata, seguita da
":" (2 punti), per esempio (leggi le
istruzioni):
|
|
Addr |
|
Codifica
Masm |
|
Istruzione |
|
0100
0102
0103
0105
0106 |
|
77
03
90
EB 01
90
90 |
|
;---------
xxxx:
;---------
continua: |
JNBE
xxxx
;---------------------------
;
servizio minore o uguale
NOP
JMP SHORT continua
;------------------------------
; servizio
maggiore
NOP
;------------------------------
NOP |
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|