cerca
IdeeETipsDiMIXAL
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Idee E Tips Di MIXAL

- 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 --------------------------------------------*