|
|
|||||||||||
In questo progetto introduttivo, scriveremo e verificheremo alcuni semplici programi in assembly DMC8, guadagnando confidenza con il d-McE (Deeds - Micro Computer Emulator). a) Inizializzazione di registri Il primo programma DMC8 deve caricare il valore decimale 230 nel registro A, il valore decimale 45 nel registro B e il valore 30F0h in un registro da 16 bit, ottenuto affiancando due registri da 8 bit di vostra scelta. In questo semplice programma, alla fine del codice, inseriremo l'istruzione HALT, per fermare il processore. Il programma deve essere collegato al RESET hardware del processore, mediante le seguenti righe di codice:
Con un click qui, apriremo questa traccia di codice nel d-McE, da completare come descritto. At termine (dopo avere salvato il file con un altro nome di vostra scelta), proveremo il programma nel debugger interattivo. Suggeriamo di utilizzare la modalità di test passo-passo (step-by-step), che ci permette di eseguire le istruzioni del programma una alla volta, osservando nel frattempo cosa succede nel microcomputer. Nota: ripetere le operazioni di test per ciascuno dei punti seguenti. b) Scambio di registri Scrivere e verificare il funzionamento di un altro programma che, dopo la inizializzazione dei registri A e B, come richiesto al punto precedente, effettui lo scambio del contenuto dei due registri (è possibile usare il registro C come registro temporaneo, e copiare dal programma precedente la parte di codice simile). c) Indirizzamento diretto della memoria Realizzare e provare un'altra sequenza di istruzioni che, utilizzando l'indirizzamento diretto, carichi il decimale 55 nelle locazioni di memoria C350h e C351h e quindi il decimale 14 nella locazione C352h. Per visualizzare nell'emulatore le operazioni di scrittura in memoria, si può spostare la vista della finestra della memoria (memory panel) fino ad osservare le locazioni di memoria di interesse (si può usare allo scopo anche il menù di contesto). d) Indirizzamento indiretto della memoriaScrivere e verificare un altro codice che esegua le stesse operazioni di quello precedente, ma utilizzando il registro accoppiato HL per indirizzare in modo indiretto la memoria [utilizzare le istruzioni "LD HL,nn" , "LD (HL),A" e "INC HL"]. e) Somma e sottrazione di locazioni di memoria utilizzando il modo di indirizzamento indiretto Il programma qui richiesto richiede una inizializzazione delle locazioni di memoria dalla C350h alla C352h identica a quella del punto precedente (si può copiare la parte di codice già utilizzata). Dopo questa inizializzazione delle variabili, utilizzando sempre l'indirizzamento indiretto, il programma carica nel registro A il valore della locazione di memoria C350h, somma a questo il valore della locazione di memoria successiva (C351h) e quindi vi sottrae il valore della terza (C352h). Infine, il programma memorizza il risultato della operazione nelle locazione di memoria C353h. Per le operazioni aritmetiche si suggerisce di usare le istruzioni "ADD A,(HL)" e "SUB (HL)". |