11.06.2013 Views

Conoscere EMU8086

Conoscere EMU8086

Conoscere EMU8086

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Laboratorio Architettura<br />

Esercitazione 1<br />

Obiettivo: <strong>Conoscere</strong> <strong>EMU8086</strong> e imparare ad usare le istruzioni MOV, ADD e<br />

SUB<br />

1. Creare una cartella ARCH2012 sul proprio Desktop<br />

2. Copiare il collegamento di emu8086 presente nel menu start al suo<br />

interno<br />

3. Creare una nuova cartella NOME_COGNOME nella stessa cartella<br />

ARCH2012<br />

4. Copiare in questa cartella il file myhello.asm presente sul sito<br />

http://www.di.uniba.it/~arch/laboratorio.html.<br />

5. Creare una nuova cartella BUILD all'interno di ARCH2012<br />

6. Avviate l'emulatore e chiudete la schermata di welcome<br />

7. Cliccate su “assembler”, poi cliccate su “set output directory”, togliete la<br />

spunta e cliccate su “…”<br />

8. Selezionate la cartella BUILD appena creata e premete OK.<br />

9. Adesso cliccate su Open e individuate il file myhello.asm presente nella<br />

cartella NOME_COGNOME appena creata (C:\Documents and<br />

Settings\studente\Desktop\ARCH2012\NOME_COGNOME)<br />

10. Salvate il file con nome myhello_COGNOME.asm.<br />

11. Esplorare le potenzialità dell’Emulatore attraverso le indicazioni<br />

date nella prima lezione di laboratorio.<br />

12. Modificare il programma myhello.asm in modo che stampi<br />

“Benvenuti nella programmazione Assembly” invece che “Hello World”.<br />

13. Inserire come commento il vostro “nome e cognome”<br />

nell’intestazione del file.<br />

14. Creare un nuovo messaggio che contenga il vostro nome e cognome.<br />

15. Stampare a video questo nuovo messaggio dopo il messaggio al<br />

punto 5.<br />

16. Inserire nel Code Segment un programma assembly che, utilizzando<br />

le istruzioni MOV, ADD e SUB, calcoli il valore dell’espressione y=a-­‐b+2c,<br />

dove a=9, b=5, c=3 sono tre numeri da memorizzare nei registri. Il<br />

risultato y deve essere memorizzato in AX.<br />

17. Verificare il risultato utilizzando il debug dell’emulatore.<br />

18. Calcolare la seguente espressione z= (2a+3b)-­‐3c, utilizzando gli<br />

stessi valori al punto 9 per a,b,c.<br />

HELP:<br />

a) COME INSERIRE I COMMENTI<br />

il ‘;’ è il simbolo che identifica un commento, quello che viene scritto dopo il ; è<br />

ignorato in fase di assemblaggio del programma;


) COME STAMPARE UN MESSAGGIO IN ASSEMBLER<br />

Definire una variabile che contiene il vostro messaggio<br />

Esempio: newmsg DB ‘Benvenuti'<br />

Per stampare un messaggio bisogna caricare l’indirizzo della variabile che lo<br />

contiene nel registro DX mediante l’istruzione LEA (Load Effective<br />

Address)<br />

LEA DX, newmsg<br />

Per stamparlo a video si usa l’interrupt del DOS 21h nel modo seguente:<br />

MOV AH, 9<br />

INT 21h<br />

c) MOV DST, SRC: copia SRC in DST<br />

ADD DST, SRC: esegue la somma dei due operandi e pone il risultato in DST<br />

SUB DST, SRC: sottrae SRC da DST e pone il risultato in DST.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!