Quintuple > Assembly


Le quintuple sono poco leggibili!

00H1n
01H0n


Riscriviamo le due quintuple...

0: se (0) allora scrivi #1 e vai in H
   se (1) allora scrivi #0 e vai in H
H: Halt


Nello stato 0 si possono verificare due eventi diversi, spezziamo l'istruzione in due parti che verranno eseguite per sequenzialità

0: se (0) allora scrivi #1 e vai in 2
1: se (1) allora scrivi #0
2: Halt


L'istruzione se... controlla due azioni, scrivi ... e vai in ....
Decidiamo che l'istruzione se … può solo cambiare stato in modo condizionato oppure incondizionato
scrivi ... e vai ... diventano istruzioni indipendenti

0: se (1) allora vai in 2
1: se (0) allora vai in 4
2: scrivi #0
3: vai in 5
4: scrivi #1
5: Halt


In Inglese

0: JUMP GREATER THAN ZERO 2
1: JUMP EQUAL ZERO 4
2: OUTPUT #0
3: JUMP 5
4: OUTPUT #1
5: HALT


Si abbrevia utilizzando codici mnemonici di 3 caratteri

0: JGT 2
1: JEQ 4
2: OUT #0
3: JMP 5
4: OUT #1
5: ALT


Gli stati, gli indirizzi in prima colonna, possono avere un nome, invece di un numero.
Le istruzioni diventano delle triple
Indirizzo, Codice Mnemonico e Indirizzo/dato

      JGT Zero
      JEQ Uno
Zero  OUT #0
      JMP Fine
Uno   OUT #1
Fine  ALT


Anche per i dati si possono utilizzare nomi simbolici.
Le istruzioni diventano delle triple
Indirizzo, Codice Mnemonico e Operando

      JGT Zero
      JEQ Uno
Zero  OUT Z
      JMP Fine
Uno   OUT U
Fine  ALT
Z     DAT 0
U     DAT 1
      END


Se ad ogni indirizzo si posssono memorizzare un certo numero di bit (8, 16, 32, ...), allora tramite codifiche adeguate si possono memorizzare numeri e caratteri.

Complicando ancora il progetto si introduce l'A.L.U. (Unità Aritmetica-Logica) che svolge le operazioni più frequenti su numeri e caratteri.

ADD, SUB, MUL, DIV,
INC, DEC,
AND, OR, NOT,
...


Si arriva a una macchina dotata di un linguaggio assembly con decine di istruzioni...
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki