|
Wiki
UniCrema
Materie per semestre
Materie per anno
Materie per laurea
Help
|
|
Uni.TettyMixal History
Hide minor edits - Show changes to output
Changed line 44 from:
* venti ''dispositivi di input / output'' denotati con le sigle '''u'_0_'''', '''u'_1_'''', ..., '''u'_20_'''', grazie ai quali la macchina MIX comunica con l'esterno. Per convenzione il dispositivo ''u'_19_''' è la console del calcolatore.
to:
* ventuno ''dispositivi di input / output'' denotati con le sigle '''u'_0_'''', '''u'_1_'''', ..., '''u'_20_'''', grazie ai quali la macchina MIX comunica con l'esterno. Per convenzione il dispositivo ''u'_19_''' è la console del calcolatore.
Changed lines 336-338 from:
[[Torna alla pagina di Programmazione degli Elaboratori -> Uni.ProgrammazioneElaboratori]] ---- [[!UniCrema]]
to:
[[Torna alla pagina di Programmazione degli Elaboratori -> Uni.ProgrammazioneElaboratori]]
Changed line 3 from:
[[Torna alla pagina di Tetty -> Tetty]]
to:
[[Torna alla pagina di Programmazione degli Elaboratori -> Uni.ProgrammazioneElaboratori]]
Changed line 336 from:
[[Torna alla pagina di Tetty -> Tetty]]
to:
[[Torna alla pagina di Programmazione degli Elaboratori -> Uni.ProgrammazioneElaboratori]]
Changed lines 5-6 from:
!Istruzioni e direttive MIXAL
to:
%titolo%''':: Integrazione: Istruzioni e direttive MIXAL ::'''
Changed lines 335-337 from:
[[Torna alla pagina di Tetty -> Tetty]]
to:
[[Torna alla pagina di Tetty -> Tetty]] ---- [[!UniCrema]]
Changed lines 1-2 from:
(:title Tetty MIX e MIXAL:)
to:
(:title Dispense Tetty - Integrazione MIXAL:) [[#su]]
Deleted line 4:
Changed lines 5-6 from:
to:
!Istruzioni e direttive MIXAL
Changed lines 10-11 from:
-> 1.2 Com'è composta una parola -> 1.3 Com'è composta un'istruzione
to:
-> 1.2 Com'è composta un'istruzione
Changed lines 28-56 from:
L'assembly è il linguaggio di programmazione più vicino al linguaggio macchina vero e proprio. In questa integrazione verrà preso in considerazione il MIXAL, l'assembler della macchina immaginaria MIX, inventata da Donald E. Knuth.
MIX e MIXAL sono semplificazioni dell'architettura dei microprocessori CISC e relativi assembler, ma pur essendo fittizi ne forniscono una buona e potente approssimazione.
!!!!1.1 Com'è composta la macchina MIX
Nella macchina MIX il byte è composto da 6 bit, ovvero 64 valori possibili per byte. Essi rappresentano l'unità base di immagazzinamento delle informazioni.
Una parola di memoria è definita come un insieme di 5 byte più un bit di segno.
La macchina MIX dispone di nove registri: * rA, registro A, o accumulatore. Contiene una parola, generalmente l'operando di un'operazione aritmetica o di scrittura della memoria; * rX, registro X, o extension. Contiene una parola ed è generalmente usato come estensione a destra di rA; * rJ, registro di salto. Contiene due byte (il segno è sempre positivo) che rappresentano l'indirizzo della cella a cui il programma deve saltare; * rIn (dove n = 1, 2, ... , 6), sei registri indice. Contengono due byte più segno, usati per mantenere degli indici per il calcolo degli indirizzi effettivi delle celle di memoria.
Ci sono inoltre: * l'indicatore di overflow OV, che indica il superamento della capacità di un registro. Può avere valore on o valore off; * l'indicatore di confronto CM, che può valere > (o G), = (o E) e < (o L); * venti dispositivi di input / output denotati con le sigle u0, u1, ..., u20, con i quali la macchina MIX comunica con l'esterno. Per convenzione il dispositivo u19 è la console del calcolatore.
La macchina MIX ha infine 4000 celle di memoria, ognuna delle quali ha le dimensioni di una parola ed è caratterizzata da un indirizzo.
!!!!1.2 Com'è composta una parola
Una parola di memoria è definita come un insieme di 5 byte più un bit di segno. I byte sono numerati da 1 a 5, mentre il bit di segno ha indice 0:
to:
Il MIXAL è l'assembler della macchina immaginaria MIX, inventata da Donald E. Knuth.
Nella macchina MIX il ''byte'' è composto da 6 bit, ovvero 64 valori possibili per byte.
Una ''parola di memoria'' è definita come un insieme di 5 byte più un bit di segno. E' possibile individuare sottoparole scrivendo una ''specifica di campo'' della forma (L:R), dove L è l'indice del primo byte ed R dell'ultimo (estremi inclusi). Ad esempio: (0:0) individua il solo segno; (3:5) individua gli ultimi tre byte. La specifica di campo è rappresentata internamente come risultato dell'operazione "8L + R". Ad esempio: (3:4) = 3*8 + 4 = 28 (che è sempre delle dimensioni di un byte).
La macchina MIX dispone di ''nove registri'': * '''rA''', ''registro A''. Contiene una parola, generalmente l'operando di un'operazione aritmetica o di scrittura della memoria; * '''rX''', ''registro X''. Contiene una parola ed è generalmente usato come estensione a destra di rA; * '''rJ''', ''registro di salto''. Contiene due byte (il segno è sempre positivo) che rappresentano l'indirizzo della cella a cui il programma deve saltare; * '''rI'_n_'''' (dove n = 1, 2, ... , 6), sei ''registri indice''. Contengono due byte più segno, usati per mantenere degli indici per il calcolo degli indirizzi effettivi delle celle di memoria.
Vi sono inoltre: * l' ''indicatore di overflow'' '''OV''', che indica il superamento della capacità di un registro. Può avere valore "on" o "off"; * l' ''indicatore di confronto'' '''CM''', che può valere '''>''' (o ''G''), '''=''' (o ''E'') e '''<''' (o ''L''); * venti ''dispositivi di input / output'' denotati con le sigle '''u'_0_'''', '''u'_1_'''', ..., '''u'_20_'''', grazie ai quali la macchina MIX comunica con l'esterno. Per convenzione il dispositivo ''u'_19_''' è la console del calcolatore.
La macchina MIX ha infine ''4000 celle di memoria'', ognuna delle quali ha le dimensioni di una parola ed è caratterizzata da un indirizzo.
!!!!1.2 Com'è composta un'istruzione
Le istruzioni della macchina MIX sono parole così strutturate:
Changed lines 59-63 from:
(:cell align=center:)1 byte
(:cell align=center:)1 byte
(:cell align=center:)1 byte
(:cell align=center:)1 byte (:cell align=center:)1 byte
to:
(:cell colspan=2 align=center:)INDIRIZZO (:cell align=center:)INDICE (:cell align=center:)MOD (:cell align=center:)COD.OP.
Deleted lines 64-85:
In questo modo è possibile individuare sottoparole scrivendo una specifica di campo della forma (L:R), dove L è l'indice del primo byte ed R dell'ultimo (estremi inclusi). Ad esempio: (0:0) individua il solo segno; (3:5) individua gli ultimi tre byte.
La specifica di campo è rappresentata internamente come risultato dell'operazione "8L + R". Ad esempio: (3:4) = 3*8 + 4 = 28 (che è sempre delle dimensioni di un byte).
!!!!1.3 Com'è composta un'istruzione
Le istruzioni della macchina MIX sono parole così strutturate:
(:table align=center width=50%:) (:cellnr align=center bgcolor=#e6e6f6:)'''0''' (:cell align=center bgcolor=#e6e6f6:)'''1''' (:cell align=center bgcolor=#e6e6f6:)'''2''' (:cell align=center bgcolor=#e6e6f6:)'''3''' (:cell align=center bgcolor=#e6e6f6:)'''4''' (:cell align=center bgcolor=#e6e6f6:)'''5''' (:cellnr align=center:)+ / - (:cell colspan=2 align=center:)INDIRIZZO (:cell align=center:)INDICE (:cell align=center:)MOD (:cell align=center:)COD.OP. (:tableend:)
Changed line 13 from:
-> [[#cm21|Direttive MIXAL]]
to:
-> [[#cm21|2.1 Direttive MIXAL]]
Changed lines 13-24 from:
-> 2.1 Direttive MIXAL
-> 2.2 Operatori di caricamento
-> 2.3 Operatori di storing
-> 2.4 Operatori aritmetici
-> 2.5 Operatori di trasferimento di indirizzo
-> 2.6 Operatori di comparazione
-> 2.7 Operatori di salto
-> 2.8 Operatori di shift
-> 2.9 Operatori vari
-> 2.10 Operatori di input / output
-> 2.11 Operatori di conversione
to:
-> [[#cm21|Direttive MIXAL]] -> [[#cm22|2.2 Operatori di caricamento]] -> [[#cm23|2.3 Operatori di storing]] -> [[#cm24|2.4 Operatori aritmetici]] -> [[#cm25|2.5 Operatori di trasferimento di indirizzo]] -> [[#cm26|2.6 Operatori di comparazione]] -> [[#cm27|2.7 Operatori di salto]] -> [[#cm28|2.8 Operatori di shift]] -> [[#cm29|2.9 Operatori vari]] -> [[#cm210|2.10 Operatori di input / output]] -> [[#cm211|2.11 Operatori di conversione]]
Changed line 110 from:
to:
Added lines 125-128:
[[#su|[-'''Torna su'''-]]]
[[#cm21]]
Added lines 145-148:
[[#su|[-'''Torna su'''-]]]
[[#cm22]]
Added lines 165-168:
[[#su|[-'''Torna su'''-]]]
[[#cm23]]
Added lines 188-191:
[[#su|[-'''Torna su'''-]]]
[[#cm24]]
Added lines 208-211:
[[#su|[-'''Torna su'''-]]]
[[#cm25]]
Added lines 237-240:
[[#su|[-'''Torna su'''-]]]
[[#cm26]]
Added lines 255-258:
[[#su|[-'''Torna su'''-]]]
[[#cm27]]
Added lines 285-288:
[[#su|[-'''Torna su'''-]]]
[[#cm28]]
Added lines 306-309:
[[#su|[-'''Torna su'''-]]]
[[#cm29]]
Added lines 322-325:
[[#su|[-'''Torna su'''-]]]
[[#cm210]]
Added lines 346-349:
[[#su|[-'''Torna su'''-]]]
[[#cm211]]
Changed line 27 from:
to:
Added lines 109-319:
[[#cm21]] !!!2. Istruzioni e direttive MIXAL
Abbiamo già detto che il MIXAL è l'assembler della macchina MIX, il cui compito è quello di assemblare il suo codice in una sequenza di istruzioni direttamente eseguibili dalla macchina.
Un programma MIXAL può contenere istruzioni o direttive. Le istruzioni sono quelle componenti del programma che vengono tradotte in istruzioni macchina, mentre le direttive sono quelle parti del codice che, pur non essendo direttamente tradotte in istruzioni, influenzano il modo in cui l'assemblatore effettua il suo compito. Sia le istruzioni che le direttive hanno il seguente formato:
->''Etichetta MNEMONICO Operando Commento''
dove: * l'etichetta è un simbolo alfanumerico che identifica la locazione corrente e che può essere utilizzato per riferirsi ad essa; * lo MNEMONICO è il nome dell'istruzione. Di seguito verrà chiamato “operatore”; * i commenti al codice, automaticamente ignorati dall'assemblatore, necessari come documentazione interna. Si scrivono a destra dell'operatore e dell'eventuale operando, oppure cominciando una linea di programma con un asterisco.
!!!!2.1 Direttive Mixal
Le direttive MIXAL sono le seguenti:
''ORIG xxxx''\\ specifica che l'assemblatore dovrà cominciare a inserire le istruzioni macchina in memoria a partire dalla cella di indirizzo xxxx. Ad esempio ORIG 1000 fissa l'indirizzo di partenza del caricamento del programma nella cella 1000;
''EQU''\\ definisce un simbolo e gli assegna un valore numerico. Ad esempio: GIORNO EQU 23 significa che GIORNO varrà 23 nell'assemblatore;
''ALF abcde''\\ mette il codice dei cinque caratteri “abcde” nella locazione corrente di memoria. Ad esempio: ALF GATTO;
''END locazione''\\ segnala la fine delle righe del programma. “locazione” è l'indirizzo da cui dovrebbe iniziare l'esecuzione una volta caricato il codice in memoria. Esempio: END INIZIO.
!!!!2.2 Operatori di caricamento
Gli operatori di caricamento sono i seguenti:
''LDA''\\ "load A". Rimpiazza il contenuto di rA (o parte di rA) con [M], ovvero V. Riempie i campi di rA a partire da destra;
''LDX''\\ "load X". Si comporta come sopra, ma carica in rX;
''LDi'' (LD1, LD2, LD3, LD4, LD5, LD6)\\ si comporta come sopra, ma carica in rIi. Dal momento che rI ha due byte e non cinque, si assume che i byte 1, 2 e 3 siano a zero;
''LDAN - LDXN - LDiN''\\ si comportano come sopra, ma invertendo il segno.
!!!!2.3 Operatori di storing
Gli operatori di storing sono i seguenti:
''STA''\\ "store A". Rimpiazza [M] con il contenuto di rA (o parte di rA). I campi di rA che vengono usati sono presi a partire da destra, quindi se ad esempio stabilissi che MOD. = (2:3) , il campo 2 della cella M conterrà il campo 4 di rA, ed il campo 3 di M conterrà il campo di 5 di rA;
''STX''\\ “store X”. Si comporta come sopra, ma per rX;
''STi'' (ST1, ST2, ST3, ST4, ST5, ST6)\\ si comporta come sopra, ma per rIi. Dal momento che rI ha due byte e non cinque, si assume che i byte 1, 2 e 3 siano a zero;
''STJ''\\ salva il contenuto del registro di salto nei primi due bytes di V, quelli riservati all'indirizzo. Ha quindi (0:2) come campo di specifica di default;
''STZ''\\ azzera la cella M nei campi specificati.
!!!!2.4 Operatori aritmetici
Gli operatori aritmetici hanno MOD. (0:5) di default, e sono:
''ADD''\\ aggiunge V al contenuto del registro rA. Utilizzando le specifiche di campo è possibile individuare un particolare byte di V da aggiungere ad rA. Se il valore ottenuto è troppo grande per rA, si accenderà la spia dell'overflow. Alcuni esempi: ADD 2000, ADD 1500(4:4), ADD 3000(1:1);
''SUB''\\ sottrae V al contenuto del registro rA, o meglio, aggiunge “-V” ad rA;
''MUL''\\ moltiplica V al contenuto del registro rA e scrive il risultato su rA ed rX (modificando di conseguenza il segno di entrambi i registri);
''DIV''\\ divide il valore di rA con V e scrive il quoziente in rA ed il resto in rX. Se il divisore V è uguale a 0 o se il quoziente non ci sta in 5 byte, rA ed rX vengono riempiti con valori spazzatura e si accende la spia di overflow.
!!!!2.5 Operatori di trasferimento di indirizzo
Gli operatori di trasferimento di indirizzo trattano M come numero con segno, e sono:
''ENTA''\\ carica la quantità M in rA. Se M è uguale a 0 ne carica solo il segno;
''ENTX - ENTi''\\ si comportano come sopra ma rispettivamente con rX ed rIi;
''ENNA - ENNX - ENNi''\\ si comportano come sopra ma caricando il segno opposto;
''INCA''\\ aggiunge M ad rA. Ad esempio: INCA 0,1 significa che viene sommato al registro rA il valore M (che ha in questo caso INDIRIZZO 0 e INDICE 1);
''INCX''\\ aggiunge M ad rX;
''INCi''\\ aggiunge M ad rIi. Se il risultato di “M+rIi” non è rappresentabile in due bytes, non verrà definito;
''DECA - DECX - DECi''\\ sottraggono M rispettivamente ad rA, rX ed rIi.
!!!!2.6 Operatori di comparazione
Gli operatori di comparazione confrontano il contenuto di un registro con il contenuto di una cella. Il risultato viene riportato nell'identificatore di confronto. \\ Gli operatori di comparazione sono:
''CMPA''\\ confronta il campo specificato di rA con lo stesso campo di [M]. Se il segno non è specificato nel MOD., entrambi i valori sono presi come positivi;
''CMPX''\\ si comporta come sopra ma con rX;
''CMPi''\\ si comporta come sopra ma con rIi. Dal momento che rI ha due byte e non cinque, si assume che i byte 1, 2 e 3 siano a zero.
!!!!2.7 Operatori di salto
Ogni volta che si salta, l'istruzione successiva a quella del salto viene salvata in rJ. Ma se i salti sono più di uno occorre salvare rJ da qualche parte in memoria. \\ Gli operatori di salto sono i seguenti:
''JMP''\\ salto incondizionato all'istruzione M;
''JSJ''\\ salto incondizionato all'istruzione M, ma senza modificare rJ;
''JOV - JNOV''\\ rispettivamente, saltano ad M se c'è stato o se non c'è stato un overflow;
''JL - JE - JG - JGE - JNE - JLE''\\ rispettivamente, saltano ad M se l'identificatore di confronto indica: L (minore), E (uguale), G (maggiore), “maggiore o uguale”, “diversi”, “minore o uguale”. Da notare che tali istruzioni non modificano lo stato dell'identificatore;
''JAN - JAZ - JAP - JANN - JANZ - JANP''\\ rispettivamente, saltano ad rA se l'operatore è: “negativo”, “zero”, “positivo”, “non negativo”, “non zero”, “non positivo”;
''JXN - JXZ - JXP - JXNN - JXNZ - JXNP''\\ si comportano come sopra, ma saltando ad rX;
''JiN - JiZ - JiP - JiNN - JiNZ - JiNP''\\ si comportano come sopra, ma saltando ad rIi.
!!!!2.8 Operatori di shift
Negli shift M indica il numero di byte da shiftare. Il segno non viene mai toccato. \\ Gli operatori di shift sono:
''SLA''\\ shifta rA a sinistra di M bytes;
''SRA''\\ shifta rA a destra di M bytes;
''SLAX - SRAX''\\ trattano rA ed rX come se fossero un unico registro, con rX a destra di rA. SLAX shifta a sinistra di M bytes, mentre SRAX a destra;
''SLL - SRC''\\ trattano rA ed rX come se fossero un unico registro, ma unito circolarmente (ciò che esce da un lato rientra dall'altro). SLL shifta a sinistra, SRC a destra.
!!!!2.9 Operatori vari
''MOVE ''\\ il campo MOD. indica quante parole si vogliono spostare a partire dalla locazione M fino alla locazione specificata dal contenuto di rI1. \\ Se ad esempio ho il registro rI1 = 800 ed ho l'istruzione “MOVE 1000,3” , il contenuto della cella 1000 viene spostato alla cella 800, quello della cella 1001 nella 801 e quello della cella 1002 in 802, per un totale di 3 parole spostate;
''NOP''\\ “no operation”, ovvero nessuna operazione;
''HLT''\\ “halt”, ferma la macchina.
!!!!2.10 Operatori di input / output
Generalmente un'istruzione di input / output coinvolge una parola alla volta. La macchina MIX ha però 20 unità I/O, e ognuna di esse ha uno specifico numero di parole che può spostare in un'unica operazione (block size). Ad esempio il block size dell'unità 19, corrispondente al terminale, vale 14. \\ Gli operatori di input / output sono i seguenti:
''IN''\\ riceve dati dall'unità input specificata dal MOD., e sposta un certo numero di celle (che dipende dal block size) in locazioni consecutive a partire dalla cella di memoria con indirizzo M;
''OUT''\\ il contrario di prima, restituisce un output sull'unità specificata dal MOD.;
''IOL''\\ attende che l'unità indicata dal MOD. sia libera, quindi esegue un controllo;
''JRED''\\ effettua un salto se l'unità indicata dal MOD. è ready;
''JBUS''\\ effettua un salto se l'unità indicata dal MOD. è busy.
!!!!2.11 Operatori di conversione
Gli operatori di conversione sono:
''NUM''\\ converte da carattere a numero. Prende i 10 bytes concatenati di rA e rX considerando ognuno come se fosse un numero e li codifica secondo la tabella dei caratteri. Quindi, senza toccare i segni, rimette i singoli numeri in rA ed rX;
''CHAR''\\ converte il valore di rA in codici carattere e li rimette in rA ed rX.
Sia NUM che CHAR ignorano l'eventuale operando M.
[[#su|[-'''Torna su'''-]]]
Changed line 8 from:
1 [[#cm1|Elementi di base]]\\
to:
1 [[#cm1|Elementi di base]]
Added lines 1-110:
(:title Tetty MIX e MIXAL:) [[Torna alla pagina di Tetty -> Tetty]] ---- [[#su]] !MIX e MIXAL
!!!Indice 1 [[#cm1|Elementi di base]]\\ -> 1.1 Com'è composta la macchina MIX -> 1.2 Com'è composta una parola -> 1.3 Com'è composta un'istruzione 2 [[#cm2|Istruzioni e direttive MIXAL]] -> 2.1 Direttive MIXAL -> 2.2 Operatori di caricamento -> 2.3 Operatori di storing -> 2.4 Operatori aritmetici -> 2.5 Operatori di trasferimento di indirizzo -> 2.6 Operatori di comparazione -> 2.7 Operatori di salto -> 2.8 Operatori di shift -> 2.9 Operatori vari -> 2.10 Operatori di input / output -> 2.11 Operatori di conversione
----
[[#c11]] !!!1. Elementi di base
L'assembly è il linguaggio di programmazione più vicino al linguaggio macchina vero e proprio. In questa integrazione verrà preso in considerazione il MIXAL, l'assembler della macchina immaginaria MIX, inventata da Donald E. Knuth.
MIX e MIXAL sono semplificazioni dell'architettura dei microprocessori CISC e relativi assembler, ma pur essendo fittizi ne forniscono una buona e potente approssimazione.
!!!!1.1 Com'è composta la macchina MIX
Nella macchina MIX il byte è composto da 6 bit, ovvero 64 valori possibili per byte. Essi rappresentano l'unità base di immagazzinamento delle informazioni.
Una parola di memoria è definita come un insieme di 5 byte più un bit di segno.
La macchina MIX dispone di nove registri: * rA, registro A, o accumulatore. Contiene una parola, generalmente l'operando di un'operazione aritmetica o di scrittura della memoria; * rX, registro X, o extension. Contiene una parola ed è generalmente usato come estensione a destra di rA; * rJ, registro di salto. Contiene due byte (il segno è sempre positivo) che rappresentano l'indirizzo della cella a cui il programma deve saltare; * rIn (dove n = 1, 2, ... , 6), sei registri indice. Contengono due byte più segno, usati per mantenere degli indici per il calcolo degli indirizzi effettivi delle celle di memoria.
Ci sono inoltre: * l'indicatore di overflow OV, che indica il superamento della capacità di un registro. Può avere valore on o valore off; * l'indicatore di confronto CM, che può valere > (o G), = (o E) e < (o L); * venti dispositivi di input / output denotati con le sigle u0, u1, ..., u20, con i quali la macchina MIX comunica con l'esterno. Per convenzione il dispositivo u19 è la console del calcolatore.
La macchina MIX ha infine 4000 celle di memoria, ognuna delle quali ha le dimensioni di una parola ed è caratterizzata da un indirizzo.
!!!!1.2 Com'è composta una parola
Una parola di memoria è definita come un insieme di 5 byte più un bit di segno. I byte sono numerati da 1 a 5, mentre il bit di segno ha indice 0:
(:table align=center width=50%:) (:cellnr align=center bgcolor=#e6e6f6:)'''0''' (:cell align=center bgcolor=#e6e6f6:)'''1''' (:cell align=center bgcolor=#e6e6f6:)'''2''' (:cell align=center bgcolor=#e6e6f6:)'''3''' (:cell align=center bgcolor=#e6e6f6:)'''4''' (:cell align=center bgcolor=#e6e6f6:)'''5''' (:cellnr align=center:)+ / - (:cell align=center:)1 byte (:cell align=center:)1 byte (:cell align=center:)1 byte (:cell align=center:)1 byte (:cell align=center:)1 byte (:tableend:)
In questo modo è possibile individuare sottoparole scrivendo una specifica di campo della forma (L:R), dove L è l'indice del primo byte ed R dell'ultimo (estremi inclusi). Ad esempio: (0:0) individua il solo segno; (3:5) individua gli ultimi tre byte.
La specifica di campo è rappresentata internamente come risultato dell'operazione "8L + R". Ad esempio: (3:4) = 3*8 + 4 = 28 (che è sempre delle dimensioni di un byte).
!!!!1.3 Com'è composta un'istruzione
Le istruzioni della macchina MIX sono parole così strutturate:
(:table align=center width=50%:) (:cellnr align=center bgcolor=#e6e6f6:)'''0''' (:cell align=center bgcolor=#e6e6f6:)'''1''' (:cell align=center bgcolor=#e6e6f6:)'''2''' (:cell align=center bgcolor=#e6e6f6:)'''3''' (:cell align=center bgcolor=#e6e6f6:)'''4''' (:cell align=center bgcolor=#e6e6f6:)'''5''' (:cellnr align=center:)+ / - (:cell colspan=2 align=center:)INDIRIZZO (:cell align=center:)INDICE (:cell align=center:)MOD (:cell align=center:)COD.OP. (:tableend:)
dove: * INDIRIZZO dà appunto l'indirizzo della parola; * INDICE è il modificatore dell'indirizzo. Se vale 0 non modifica nulla, mentre se è un numero compreso tra 1 e 6 indica uno dei sei registri indice, il cui contenuto andrà sommato a INDIRIZZO; * MOD. è il modificatore dell'operatore, di solito una specifica di campo (L:R). Quando è omesso, generalmente significa che l'istruzione associata si applica alla parola intera; * COD.OP. è il codice operativo che identifica l'istruzione vera e propria da eseguire. Ha come sintassi generale: MNEMONICO INDIRIZZO,INDICE(MOD) , dove MNEMONICO è il nome dell'istruzione.
Alcune notazioni: * con M s'intende l'indirizzo di memoria ottenuto sommando a INDIRIZZO il contenuto del registro indice specificato da INDICE. Essendo 4000 le celle di memoria della macchina MIX, potrà avere un valore compreso tra 0 e 3999; * con V ci si riferisce al valore della sottoparola indicata da MOD. nella cella di memoria di indirizzo M; * per riferirsi al valore contenuto in un registro o in una parola di memoria di cui si conosce solo l'indirizzo, si mette il suo nome tra parentesi quadre. Ad esempio il valore contenuto nel registro rA si richiama con [rA], mentre ad esempio [1234] indica il valore contenuto alla cella di memoria con indirizzo 1234; * con X ← Y si intende che X (un registro, una parola di memoria, ecc.) assumerà il valore di Y (un registro, una parola di memoria, ecc.) come effetto dell'esecuzione dell'istruzione.
[[#su|[-'''Torna su'''-]]]
---- [[Torna alla pagina di Tetty -> Tetty]]
|
|