cerca
IdeeETipsDiMIXAL
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Return to Idee E Tips Di MIXAL  (Edit)

Uni.IdeeETipsDiMIXAL History

Hide minor edits - Show changes to output

Added lines 1-210:
- Idee e Tips (Codice Mixal) -


[ STORE ]




*------------------------------------ cut code --------------------------------------------*

ENTA 5 rA [+|0|0|0|0|5]

STA 1000 cella 1000 [+|0|0|0|0|5]

*------------------------------------ cut code --------------------------------------------*

ENTA 5 rA [+|0|0|0|0|5]

STA 1000(3:4) cella 1000 [+|0|0|0|5|0]
^ ^
|-|
CELLE 3:4

La stessa cosa potrebbe essere fatta così:

STA 1000(28) cella 1000 [+|0|0|0|5|0]

*------------------------------------ cut code --------------------------------------------*





[ LOAD ]





*------------------------------------ cut code --------------------------------------------*

ENTA 65 rA [+|0|0|0|1|1]
rI2 [+| |0|0]

STA 1000 cella 1000 [+|0|0|0|1|1]

LD2 1000 rI2 [+| |1|1]

*------------------------------------ cut code --------------------------------------------*





[ COMPARE / JMP ]





*------------------------------------ cut code --------------------------------------------*

ENTA 12 rA [+|0|0|0|0|12]


STA 1000 cella 1000 [+|0|0|0|0|12]

CMPA 3100 >> il contenuto della cella 3100 e' uguale al contenuto di rA quindi CMPA restituirà EQUAL <<

JE CICLO >> il contenuto è uguale (come detto dalla istruzione compare) quindi salta a CICLO (e' una etichetta
definita nel programma in Mixal) <<


*------------------------------------ cut code --------------------------------------------*






[ DIRETTIVA CON ]






*------------------------------------ cut code --------------------------------------------*

ORIG 1000


ENT1 5 >> ENT1 è all'indirizzo 1000 e ovviamente inserisce il valore 5 in rI1 <<


CON 1 >> con invece e' alla locazione di memoria 1000+1 (1001); ove copia il valore 1 <<
cella 1001 [+|0|0|0|0|1]


*------------------------------------ cut code --------------------------------------------*





[ MUL e DIV ]




*------------------------------------ cut code --------------------------------------------*


ENTA 5 rA [+|0|0|0|0|5]


STA 1000 cella 1000 [+|0|0|0|0|5]

MUL 1000 rA [+|0|0|0|0|0] |
| ==> 5 x 5 = 25 (rAX = 25)
rX [+|0|0|0|0|25] |


[ NB ]

MUL 1000 -> 1000 e' la locazione di memoria dove ho inserito il valore 5.


*------------------------------------ cut code --------------------------------------------*



*------------------------------------ cut code --------------------------------------------*


ENTX 16 rA [+|0|0|0|0|16]

ENT1 5 rI1 [+| |0|5]

ST1 1000 cella 1000 [+|0|0|0|0|5]

DIV 1000 rA [+|0|0|0|0|3] ===> rA contiene il risultato 16:5 = 3 [5x3 = 15]

rX [+|0|0|0|0|1] ===> rX contiene il resto 16 mod 5 = 1 [16:3 = 15 + "1" = 16]


[ NB ]

DIV 1000 -> 1000 e' la locazione di memoria dove ho inserito il valore 5.


*------------------------------------ cut code --------------------------------------------*





[ SOMME ]




*------------------------------------ cut code --------------------------------------------*


ENT1 1 rI1 [+|0|0|0|0|1]
ENT2 2 rI2 [+|0|0|0|0|2]

INC1 0,2 rI2 [+|0|0|0|0|3] ===> Somma in rI1 il contenuto di rI1 + rI2 = 3


INC1 1 rI1 [+|0|0|0|0|4] ===> Incrementa rI1 di 1

*------------------------------------ cut code --------------------------------------------*





[ INDIRIZZI IN MIXAL ]




*------------------------------------ cut code --------------------------------------------*


ORIG 1000
ind. 1000
ind. 1001
ind. 1002

[...]

ENT2 LABEL rI2 [+| |15|47]
ind. 1007 LABEL CON 1234

[...]

In rI2 verrà inserito l'indirizzo di LABEL (NON IL SUO CONTENUTO; NON E' UNA LOAD!!).

L'indirizzo viene "ricavato" con l'operazione seguente:

1007 / 64 = 15,734..
0,734 x 64 = 47

Ed effettivamente rI2 e' uguale a 15|47 !!


*------------------------------------ cut code --------------------------------------------*