La programmazione del DMC8

Esempi    Esercizi    Soluzioni    Errata corrige


3.1 Introduzione alla programmazione in assembly


3.1.6 Le direttive DB e DW

Un click sull'esempio aprirà il codice nel Deeds-McE:

   

 

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

Un click sullo schema riportato sulla sinistra aprirà nel Deeds-DcS l'esempio di componente/rete logica che viene emulato. Al centro, un click sull'icona permette di aprire nel Deeds-McE il programma descritto nel testo. Con un click sullo schema a destra, è possibile aprire nel Deeds-Dcs un sistema a microprocessore con lo stesso programma già predisposto per verificarne il comportamento mediante simulazione.

3.5.1.1 Porta NOT:

3.5.1.2 Porta AND a due ingressi

  Esempio 1:


  Esempio 2:

 


  Esempio 3:

 

3.5.1.3 Multiplexer a due ingressi

  Esempio 1:


  Esempio 2:

 

3.5.1.4 Decodificatore (da 3 a 8)

  Esempio 1:


  Esempio 2:

 


  Esempio 3:

 


  Esempio 4:

 

3.5.2 Calcolo di un polinomio

Un click sull'icona a sinistra permette di aprire nel Deeds-McE il programma descritto nel testo. Con un click sullo schema a destra, è possibile aprire nel Deeds-DcS un sistema a microprocessore con lo stesso programma già predisposto per verificarne il comportamento mediante simulazione.

3.5.3 Temporizzatore

3.5.4 Macchina a stati finiti

 


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.

Nota: dove il componente assegnato è sincronizzato da un clock, si suggerisce di limitare la frequenza di questo ad un valore non più grande di 10 KHz (il componente emulato via software sarà fisiologicamente più lento del componente reale). Nelle tracce qui proposte, la frequenza del clock è stata già impostata convenientemente. Invece, la velocità di animazione del clock sarà da regolare secondo le proprie esigenze.

Esercizio 1:

Esercizio 2:

Esercizio 3:

Esercizio 4:

Esercizio 5:

Esercizio 6:

Esercizio 7:

Esercizio 8:

Esercizio 9:

 


3.6.2 Funzioni aritmetiche

Un click sull'icona riportata sulla sinistra aprirà nel Deeds-McE una traccia del programma da scrivere. Infine, con un click sullo schema a destra, quando presente, è possibile aprire nel Deeds-DcS un sistema a microprocessore predisposto per potervi caricare il programma da testare. Sarà utile per verificarne il comportamento tramite la simulazione.

Esercizio 1 (traccia base):

 

Esercizio 1 (seconda traccia):

Con questa versione del chiamante è possibile calcolare la media tra i due numeri a 32 bit (A31..A0 e B31..B0) impostati sui porti di ingresso e visualizzarla sui porti di uscita (questa versione non è presente sul libro)

Esercizio 2:

Esercizio 3:

Esercizio 4:


3.6.3 Moduli e funzioni riutilizzabili

Un click sull'icona riportata sulla sinistra aprirà nel Deeds-McE una traccia del programma da scrivere. Infine, con un click sullo schema a destra, quando presente, è possibile aprire nel Deeds-DcS un sistema a microprocessore predisposto per potervi caricare il programma da testare. Sarà utile per verificarne il comportamento tramite la simulazione.

Esercizio 1:

 

Esercizio 2:

Esercizio 3:

Con la seguente versione della rete è possibile animare l'andamento della colonna di LED, grazie ad un contatore, senza cambiare codice assembly (questa soluzione non è presentata sul libro):

 

Esercizio 4:

Esercizio 5a:

Esercizio 5b:

Esercizio 6:



3.7 Soluzioni

3.7.1 Emulazione di componenti digitali

Un click sull'icona a sinistra permette di aprire nel Deeds-McE il programma descritto nel testo. Con un click sullo schema a destra, è possibile aprire nel Deeds-Dcs il sistema a microprocessore con lo stesso programma già predisposto per verificarne il comportamento mediante simulazione.

Soluzione esercizio 1:

Soluzione esercizio 2:

Soluzione esercizio 3 (prima proposta):

Soluzione esercizio 3 (seconda proposta):

Soluzione esercizio 4:

Soluzione esercizio 5:

Soluzione esercizio 6:

Soluzione esercizio 7:

Soluzione esercizio 8:

Soluzione esercizio 9:


3.7.2 Funzioni aritmetiche

Un click sull'icona a sinistra permette di aprire nel Deeds-McE la soluzione descritta nel testo. Con un click sullo schema a destra, quando presente, è possibile aprire nel Deeds-Dcs il sistema a microprocessore con lo stesso programma già predisposto per verificarne il comportamento mediante simulazione.

Soluzione esercizio 1 (prima proposta):

 

Soluzione esercizio 1 (seconda proposta):

Con questa versione del chiamante è possibile calcolare la media tra i due numeri a 32 bit (A31..A0 e B31..B0) impostati sui porti di ingresso e visualizzarla sui porti di uscita (questa soluzione non è presente sul libro)

Soluzione esercizio 2:

Soluzione esercizio 3:

Soluzione esercizio 4 (prima proposta):

Soluzione esercizio 4 (seconda proposta):


3.7.3 Moduli e funzioni riutilizzabili

Un click sull'icona a sinistra permette di aprire nel Deeds-McE la soluzione descritta nel testo. Con un click sullo schema a destra, quando presente, è possibile aprire nel Deeds-Dcs il sistema a microprocessore con lo stesso programma già predisposto per verificarne il comportamento mediante simulazione.

Soluzione esercizio 1:

 

Soluzione esercizio 2:

Soluzione esercizio 3:

Con la seguente versione della rete è possibile animare l'andamento della colonna di LED, grazie ad un contatore, senza cambiare codice assembly (questa soluzione non è presentata sul libro):

 

Soluzione esercizio 4:

Soluzione esercizio 5b:

Soluzione esercizio 6:



3. Errata Corrige (Cap. 3)

Pag. 209

Listato in assembly, in alto. Si legga:

Pag. 228

Secondo capoverso, in alto. Si legga:

Pag. 234

Esempi in assembly circa le istruzioni SET e RES, al centro pagina. Si legga:

Pag. 257

Esempio in assembly, in basso. Si legga:

Pag. 273

Esempio in assembly, in alto. Si legga:

Pag. 278

Terzultimo capoverso, in basso. Si legga:

Pag. 280

Al centro pagina, si legga:

Pag. 281

Listato in assembly, in alto. Si legga:

Pag. 290

Listato in assembly, soluzione esercizio 2. Si legga:

Pag. 292

Poco sopra il centro pagina, si legga:

Pag. 295

Listato in assembly, alla fine della soluzione dell'esercizio 6. Si legga:

Pag. 299

Listato in assembly, al fondo pagina. Si legga:

Pag. 300

Ultimo capoverso, in fondo alla pagina. Si legga:

Pag. 306

Listato in assembly, al fondo pagina. Si legga:

Pag. 308

Penultimo listato in assembly, dal fondo pagina. Si legga:

Pag. 316

Listato in assembly, al centro pagina. Si legga: