La programmazione del DMC8

Esempi    Esercizi    Soluzioni    Errata corrige


3.1 Introduzione alla programmazione in assembly


3.1.2 Il linguaggio assembly del DMC8

3.1.2.1 Un esempio di programma scritto in assembly DMC8

3.1.4 La direttiva EQU

3.1.5 La direttiva ORG

3.1.6 Le direttive DB e DW

Esempio

Esempi di utilizzo delle direttive DB e DW

 

3.2 I metodi di indirizzamento


3.2.4 Indirizzamento INDIRETTO tramite REGISTRO

   Primo esempio

   Secondo esempio

 

3.3 La classificazione delle istruzioni


3.3.2 Istruzioni aritmetiche e logiche

3.3.2.1 Istruzioni aritmetiche a 8 bit

   Esempio ADD, ADC (somma a 16 bit con indirizzamento indiretto)

   Esempio CP (valutazione maggiore/uguale/minore)

   Esempio CPL, NEG (complementi a uno e due)


3.3.2.2 Istruzioni aritmetiche a 16 bit

   Esempio ADD HL (somma, utilizzando istruzioni a 16 bit)

   Esempio di algoritmo di somma a 64 bit


3.3.2.3 Istruzioni logiche

   Esempio di utilizzo della istruzione AND (1)

   Esempio di utilizzo della istruzione AND (2)

   Esempio di utilizzo della istruzione XOR


3.3.2.5 Istruzioni di Incremento e Decremento a 16 bit

   Esempio di utilizzo della istruzione DEC a 8 bit

   Esempio di utilizzo della istruzione DEC a 16 bit


3.3.3 Istruzioni di rotazione e scorrimento

   Esempio di utilizzo dell'istruzione RLC

   Esempio di utilizzo dell'istruzione SLA e RL


3.3.4 Istruzioni di manipolazione del bit

   Esempio di uso delle istruzioni BIT e RES


3.3.5 Istruzioni di salto

3.3.5.1 Salti incondizionati

   Esempio di salto all'indietro


3.3.5.3 Salti indiretti

   Esempio di utilizzo dei salti indiretti


3.3.5.4 I cicli di ritardo

   Esempio di ciclo di ritardo con contatore a 8 bit

   Esempio di cicli di ritardo annidati

   Esempio di ciclo con conteggio a 16 bit

   Verifica dei tempi di ritardo nell'emulatore


3.3.7 istruzioni di ingresso e uscita

   Esempio di utilizzo delle istruzioni IN e OUT (1)

   Esempio di utilizzo delle istruzioni IN e OUT (2)


 

3.5 Esempi di programmazione


3.5.1 Emulazione di logica combinatoria

3.5.1.1 Porta NOT

   Programma    Test su microcomputer


3.5.1.2 Porta AND a due ingressi

   Soluzione 1: Programma    Test su microcomputer

   Soluzione 2: Programma    Test su microcomputer

   Soluzione 3: Programma    Test su microcomputer


3.5.1.3 Multiplexer a due ingressi

   Soluzione 1: Programma    Test su microcomputer

   Soluzione 2: Programma    Test su microcomputer


3.5.1.4 Decodificatore (da 3 a 8)

   Soluzione 1: Programma    Test su microcomputer    (decodifica lineare)

   Soluzione 2: Programma    Test su microcomputer    (decodifica ad albero)

   Soluzione 3: Programma    Test su microcomputer    (decodifica calcolata)

   Soluzione 3: Programma    Test su microcomputer    (decodifica tramite tabella)


3.5.2 Calcolo di un polinomio

   Programma    Test su microcomputer


3.5.3 Temporizzatore

   Programma    Test su microcomputer


3.5.4 Macchina a stati finiti

   Programma    Test su microcomputer


 


3.6 Esercizi

3.6.1 Emulazione di componenti digitali

Un click sullo schema riportato sulla sinistra aprirà nel Deeds-DcS l'esempio di componente/rete logica da emulare. Al centro, un click sull'icona permette di aprire nel Deeds-McE una traccia del programma da scrivere. Infine, con un click sullo schema a destra, è possibile aprire nel Deeds-Dcs un sistema a microprocessore predisposto opportunamente, in cui caricare il programma da testare. Sarà utile per verificarne il comportamento mediante simulazione per animazione o temporale. Quando applicabile, nella finestra del diagramma temporale una sequenza di test è già impostata e sarà caricata automaticamente.

RICORDARSI CHE I FILE LINKATI NON SONO ANCORA I TEMPLATES, MA I FILE DELLE SOLUZIONI!!

Come procedere:
1) dapprima aprire il file .mc8 nella directory SETPL, e renderlo template, svuotandolo di quasi tutto Se esistono più versioni, lasciarne solo una (occhio ai nomi)
2) aprire il file .pbs nella directory SETPL
3) lanciare la simulazione, e salvare l'immagine nella directory Images_c3/SE, con lo stesso nome di quuello esistente, +1
4) inserire il nome dell'immagine nel file HTML 5) rendere template il file .pbs, sostituendo il microcomputer (occhio, che le "proprietà" non accettano l'incolla)

Esercizio 1:

Esercizio 2:

Esercizio 3:

FIN QUI: FATTO

DEVO ANDARE AVANTI DA QUI

Esercizio 4:

Esercizio 5:

Esercizio 6:

Esercizio 7:

Esercizio 8:

Esercizio 9:

 


3.6.2 Funzioni aritmetiche

Esercizio 1

Esercizio 2

Esercizio 3

Esercizio 4


3.6.3 Moduli e funzioni riutilizzabili

Esercizio 1

Esercizio 2

Esercizio 3

Esercizio 4

Esercizio 5

Esercizio 6

Fig_036_130_ThermometerDisplay Fig_036_135_SerialTX Fig_037_090_TestSinTableDAC

2.3.2 yyyy

2.3.2 yyyy

2.3.2 yyyy

2.3.2 yyyy

2.3.2 yyyy


 

2.3.2 yyyy

 


2.y.y kkkk pppp yyyy

Si suggerisce di limitare la frequenza di CK ad un valore vicino a 10 \textit{KHz}. \andrea{Alla fine lo lasciamo o lo togliamo da qui?} Aggiungere le considerazioni del caso nella soluzione... o nel template (ragionare)

Andrea: sottolineerei il fatto di non starsi a preoccupare della frequenza di clock massima ammessa dal componente emulato, con una frase del tipo: “Si noti che il componente emulato via software sarà fisiologicamente più lento del componente reale, per via della presenza di un microcomputer. Per questo motivo non viene richiesto di rispettare alcun vincolo temporale. \footnote{L’istruzione di scorrimento logico verso destra SRL del DMC8 richiede 8 cicli di clock per essere eseguita, mentre il registro SIPO esegue un scorrimento verso destra del suo stato in un solo ciclo di clock}.”

Esercizio 1 (traccia):

Esercizio 2 (traccia):


3.7 Soluzioni

3.7.1 Emulazione di componenti digitali

Soluzione esercizio 1:    Programma    Test su microcomputer

Soluzione esercizio 2:    Programma    Test su microcomputer

Soluzione esercizio 3 (prima proposta):    Programma    Test su microcomputer

Soluzione esercizio 3 (seconda proposta):    Programma    Test su microcomputer

Soluzione esercizio 4:    Programma    Test su microcomputer

Soluzione esercizio 5:    Programma    Test su microcomputer

Soluzione esercizio 6:    Programma    Test su microcomputer

Soluzione esercizio 7:    Programma    Test su microcomputer

Soluzione esercizio 8:    Programma    Test su microcomputer

Soluzione esercizio 9:    Programma    Test su microcomputer


3.7.2 Funzioni aritmetiche

Soluzione esercizio 1:    Programma    Programma per Test    Test su microcomputer

Soluzione esercizio 2:    Programma    Test su microcomputer

Soluzione esercizio 3:    Programma    Test su microcomputer

Soluzione esercizio 4 (prima proposta):    Programma    Test su microcomputer

Soluzione esercizio 4 (seconda proposta):    Programma    Test su microcomputer


3.7.3 Moduli e funzioni riutilizzabili

Soluzione esercizio 1:    Programma

Soluzione esercizio 2:    Programma    Test su microcomputer

Soluzione esercizio 3:    Programma    Test 1 su microcomputer    Test 2 su microcomputer

Soluzione esercizio 4:    Programma    Test su microcomputer

Soluzione esercizio 5a:    Programma    Test su microcomputer

Soluzione esercizio 5b:    Programma    Test su microcomputer

Soluzione esercizio 6:    Programma    Test su microcomputer



3. Errata Corrige (Cap. 3)


- - - - -