Appunti per Scuola e Università
humanisticheUmanistiche
Appunti e tesine di tutte le materie per gli studenti delle scuole medie riguardanti le materie umanistiche: dall'italiano alla storia riguardanti le materie umanistiche: dall'italiano alla storia 
sceintificheScientifiche
Appunti, analisi, compresione per le scuole medie suddivisi per materie scientifiche, per ognuna troverai appunti, dispense, esercitazioni, tesi e riassunti in download.
tecnicheTecniche
Gli appunti, le tesine e riassunti di tecnica amministrativa, ingegneria tecnico, costruzione. Tutti gli appunti di AppuntiMania.com gratis!
Appunti
informatica
CComputerDatabaseInternetJava
Linux unixReti


AppuntiMania.com » Informatica » Appunti di computer » Istruzioni di salto condizionato

Istruzioni di salto condizionato




Visite: 1359Gradito:apreciate stela [ Medio appunti ]
Leggi anche appunti:

APPUNTI DI INFORMATICA TEORICA - Complessità computazionale, funzioni ricorsive, liste, alberi


UNIVERSITA' DEGLI STUDI DI PISA CORSO DI INGEGNERIA INFORMATICA (NUOVO ORDINAMENTO) APPUNTI

Elea 9003


Elea 9003 ELEA 9003 è un calcolatore dalle grandissime dimensioni e prestazioni,

La Telematica


La Telematica La parola telematica nasce dall'unione dei termini telecomunicazioni
immagine di categoria

Scarica gratis Istruzioni di salto condizionato

ISTRUZIONI DI SALTO CONDIZIONATO


AD 1° FLAG

(Con l'operando G si intende un indirizzo di memoria un registro A o D)

(D = registri dati D; A = registri indirizzi A)

Flag C    (riporto)


BCS       Salta se c'è riporto C=1

BCC       Salta se non c'è riporto C=0


Flag V (overflow)


BVS       Salta se c'è overflow V=1

BVC       Salta se non c'è overflow V=0


Flag Z (zero)


BEQ       Salta se gli operandi sono uguali Z=1

BNE       Salta se gli operandi non sono uguali Z=0


Flag N (negativo)


BMI       Salta se la differenza è negativa N=1

BPL       Salta se la differenza è positiva N=0

(il flag X con l'istruzione CMP non viene alterato)


ISTRUZIONI DI SALTO CONDIZIONATO

A PIU FLAG


~ SIGNED ~


BLT Salta se D<S

BGE Salta se D≥S

BGT Salta se D>S

BLE Salta se D≤S


~ UNSIGNED ~


BLS Salta se D≤S

BHI Salta se D>S (Questa istruzione in ASIM non funziona)

BLO Salta se D<S

BHS Salta se D≥S



Istruzione: CMP S,D (Sorg.,Dest.)






ISTRUZIONI DI SET E DI TEST


ISTRUZIONI CHE LAVORANO SU BIT


BTST     #im,G Testa il bit puntato da im e opera sul flag Z se il bit im=0 Z=1

BCLR    #im,G Opera come BTST ma in oltre azzera il bit puntato

BSET     #im,G Opera come BTST ma in oltre pone il bit puntato =1

BCHG   #im,G Opera come BTST ma in oltre complementa il bit puntato


ISTRUZIONI CHE LAVORANO SU: BYTE, WORD, LONGWORD


CLR       G Istruzione di pulitura o azzeramento dell'operando (B,W,L)

TST       G Testa l'operando e imposta opportunamente i flag N e Z

TAS       G Opera come TST ma solo su dato di tipo byte, inoltre pone il bit più significativo pari a 1.

EXG      Rx,Ry Scambia il contenuto dei due registri generali l'istruzione funziona solo come longword e non altera i flag dello SR.


ISTRUZIONI DI CONFRONTO


CMP      G,D Equivale al SUB opera D-G, i flag sono tutti coinvolti tranne X

Z=1 se D=G

N=1 se la sottrazione da luogo a numero negativo msb=1

C=1 per gli US indica D<G per gli US indica overflow

V=1 per i SI indica overflow

CMPA   G,A Lavora solo su registri di tipo W o L funziona come il CMP.

CMPI     im,G Confronta un valore immediato con G: opera G-im funziona come il CMP.

CMPM.B           (Ax)+,(Ay)+ Confronta il contenuto di un registro con un altro e incrementa i puntatori di un byte, in questo caso.


La funzione EXT e SWAP

EXT.L  D estende il valore del segno da B a W e da W a LW (come in questo caso).

Tale istruzione va a settare a 0 i flag V e C mentre imposta opportunamente i flag N e Z.

SWAP    D Lavora su estensioni di tipo W, tale istruzione serve a scambiare la parte

più significativa del registro con quella meno significativa.

Tale istruzione va a settare a 0 i flag V e C mentre imposta opportunamente i flag N e Z.


MOLTIPLICAZIONE

Il 68000 prevede due tipi di moltiplicazione, una per la numerazione signed (o numerazione in complementi) ed una per la numerazione unsigned (senza segno).


MULU   G,D per la numerazione unsigned

MULS   G,D per la numerazione signed


Entrambe operano su 16 bit (word) e danno un risultato su 32 bit (longword).

La cosa più importante da capire è come gestire l'overflow, in quanto non esiste alcun flag che ci indica tale avvenimento in seguito ad una moltiplicazione. Allora si ragiona in questo modo, si suppone il registro destinazione D diviso in due parti ciascuna di 16 bit, la parte meno significativa, che si trova a destra, è chiamata P mentre la parte più significativa viene chiamata Q, se la moltiplicazione è piccola il risultato viene memorizzato nella parte P del registro, se la moltiplicazione è grande e il risultato occupa più di 16 bit allora c'è stato overflow e quindi la parte Q non è più = 0.


Per la moltiplicazione tra numeri con segno il discorso cambia, si divide sempre il registro D in due parti uguali, però anche se il risultato può essere contenuto in 16 bit viene esteso su tutto il registro da 32 bit con un'estensione in segno. Se il bit più significativo del risultato è 1 tutta la parte Q, e ciò che rimane della parte P vengono settati a 1, se il bit più significativo del risultato è 0 allora tutta la parte Q, e ciò che rimane della parte P vengono settati a 0.

In caso di overflow la parte Q del registro D non sarà più un'estensione in segno del risultato e quindi non sarà settata a 1 o a 0 quindi il risultato ha sconfinato nella parte Q provocando un overflow.

Segmento di codice per verificare l'overflow per i numeri signed.

ORG $8000

MOL MULS D0,D1

MOVE D1,D2 Copia la parte meno significativa di D1 in D2

EXT D2 Estendi in segno D2

CMP.L D1,D2 Confronta i due registri

BNE OVERFLOW salta se gli operandi non sono uguali


LE SUBRUTINES


Ci sono due istruzioni di salto per subrutines:


JSR       Label Decrementa lo stack di una logword e vi salva all'interno l'indirizzo di memoria dell'istruzione successiva a JSR nel programma chiamante (Salto assoluto).

BSR      Label Stesso funzionamento di JSR ma meno usata (Salto relativo).

RTS                  Ritorna alla locazione di memoria puntata dallo stack, la quale era stata allocata dall'istruzione JSR.



COSTRUZIONE DI UNA SUBRUTINES

E FRAMEPOINTER


Quando c'è bisogno di saltare ad un sottoprogramma, all'interno del programma chiamante, si incomincia ad allocare lo spazio nello stack per le variabili di output e di input.

Svolto il punto 1 si utilizza il comando JSR e si salta alla subrutines, tale istruzione alloca nello stack una longword che conterrà l'indirizzo dell'istruzione successiva a JSR, quello sarà l'indirizzo del PC necessario per tornare dalla subrutines.

Saltati nella subrutines si esegue subito l'istruzione di LINK che conterrà il framepointer che spiegheremo dopo.

In seguito si incominciano a salvare nello stack, tramite il MOVEM, i vari registri che utilizzeremo nella subrutines.

Prima di chiudere il sottoprogramma bisognerà ripristinare, in ordine inverso dallo stack, tutti i registri e i risultati, creati nella subrutines, anche il framepointer verrà ripristinato tramite l'istruzione UNLK .

Tornati nel programma chiamante si continuerà a ripulire lo stack da ciò che è stato creato dal programma chiamante fino a far tornare lo stack alla locazione di partenza che corrisponde a $9200.




ISTRUZIONI DI LINK E UNLK, PEA e MOVEM


LINK     A,#im Tale istruzione incrementa lo stack di una longword e vi salva all'interno il contenuto del registro A che abbiamo scelto, ne registro A vi verrà salvato il valore dello stack pointer in quel momento, a tale punto lo stackpointer assumerà il valore del framepointer il quale resterà salvato nel registro A. Il valore #im serve a creare un ulteriore piazzamento all'interno dello stack.

UNLK   A Questa istruzione servirà alla fine della subrutines per ripristinare il valore contenuto all'interno del registro A usato come framepointer.

PEA       M Alloca nello stack una longword e inserisci in essa l'indirizzo di memoria M

MOVEM.L       D0-D3/A0-A4,-(SP) Tale istruzione, usata nelle subrutines, salva nello stack i registri da D0 a D3 e i registri da A0 a A4 è un'istruzione molto rapida per il salvataggio dei registri.

MOVEM.L       (SP)+,D0-D3/A0,A4 Istruzione inversa alla precedente che ripristina il contenuto dei registri alla fine della subrutines.


SIMBOLO

SIGNIFICATO

D

D0-D7: un qualsiasi registro dati

A

A0-A7: un qualsiasi registro indirizzi

R

Un qualsiasi registro dati o indirizzi

im

Operando immediato

M

Operando in memoria

G

Operando generale: può essere in memoria, immediato o registri

CCR

Registro dei flag

SR

Registro di stato

SP

Stack pointr






































CODICE ASCII 


codice

equivalente

equivalente


codice

equivalente

equivalente

carattere

ASCII

esadecimale

numerico

carattere

ASCII

esadecimale

numerico

NUL




spazio




SOH








STX








ETX








EOT








ENQ








ACK




&




BEL








BS








TAB








LF


4A




2A


VT


4B




2B


FF


4C




2C


CR


4D




2D


SO


4E




2E


SI


4F




2F


DLE








DC1








DC2








DC3








DC4








NAK








SYN








ETB








CAN








EM








SUB


5A




3A


ESC


5B




3B


FS


5C


<


3C


GS


5D




3D


RS


5E


>


3E


US


5F




3F



CODICE ASCII 


codice

equivalente

equivalente


codice

equivalente

equivalente

carattere

ASCII

esadecimale

numerico

carattere

ASCII

esadecimale

numerico









A




a




B




b




C




c




D




d




E




e




F




f




G




g




H




h




I




i




J


4A


j


6A


K


4B


k


6B


L


4C


l


6C


M


4D


m


6D


N


4E


n


6E


O


4F


o


6F


P




p




Q




q




R




r




S




s




T




t




U




u




V




v




W




w




X




x




Y




y




Z


5A


z


7A




5B




7D




5E


~


7E




5F




7F


LE DIRETTIVE


ORG e Program Locatio Countr PLC

Il PLC è una variabile interna, di 32 bit, del programma assemblatore. Essa si incrementa di un numero di byte, corrispondente al valore di ogni istruzione in codice macchina (comprendendo anche il valore dei dati). La direttiva ORG serve per inizializzare il PLC (che non ha nulla a che vedere con il PC). Il PC dà l'indirizzo di memoria di ogni istruzione, mentre il PLC alla fine del programma ci dice quanto occupa in memoria l'intero programma. Ritornando all'ORG si trova tipicamente all'inizio di ogni programma oppure inizializza un'area assestante del programma tipo l'area dati. 

Direttive DS e DC


Direttiva DS tale direttiva serve per allocare spazio per una variabile o una costante definita da programma.

Es:           ALFA DS.B 1 Tale istruzione allocherà lo spazio di un byte (.B 1) ad una precisa locazione di memoria. Il PLC durante l'assemblaggio riserverà lo spazio di un byte, in questo caso, per poi riempirlo, quando sarà fatto da programma, con il dato relativo.

Direttiva DC la direttiva DC serve per dichiarare le costanti singole o anche i vettori di tipo B, W o LW.

Es:           BETA DC 1,3,5 In questo caso è stato dichiarato un vettore costante di 3 elementi che, a partire da una data locazione di memoria, ad ogni word inserirà il valore corrispondente fin che non verrà allocato in memoria tutto il vettore.

Le stringhe verranno allocate come costanti di tipo B e racchiuse da apici con un terminatore detto tappo =0.

Es : STR DC.B 'casa',0


Direttiva END

Tale direttiva messa alla fine del programma dichiara la chiusura di quest'ultimo, a tale direttiva andrà associata la label di partenza.

Es: END START


Direttiva EQU

Tale direttiva serve per assegnare un valore ad una label che potrà esse usata in seguito durante il programma, in genere essa è adoperata per assegnare i valori dell'offset dello stack pointer dal frame pointer.



Scarica gratis Istruzioni di salto condizionato
Appunti su:



Scarica 100% gratis e , tesine, riassunti



Registrati ora

Password dimenticata?
  • Appunti superiori
  • In questa sezione troverai sunti esame, dispense, appunti universitari, esercitazioni e tesi, suddivisi per le principali facoltà.
  • Università
  • Appunti, dispense, esercitazioni, riassunti direttamente dalla tua aula Universitaria
  • all'Informatica
  • Introduzione all'Informatica, Information and Comunication Tecnology, componenti del computer, software, hardware ...