Quintuple > Assembly
Le quintuple sono poco leggibili!
00H1n
01H0n
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
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
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
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
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
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
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
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,
...
INC, DEC,
AND, OR, NOT,
...
Si arriva a una macchina dotata di un linguaggio assembly con decine di istruzioni...