12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive...

30
DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli DIS - Università degli Studi di Napoli “Federico II” CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) ASSEMBLER 68K parte 1

Transcript of 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive...

Page 1: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

DIS - Università degli Studi di Napoli “Federico II”

CORSO DI CALCOLATORI ELETTRONICI ICdL Ingegneria Biomedica (A-I)

ASSEMBLER 68Kparte 1

Page 2: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Supporti didattici

Fadini – Savy, Fond. Inf. 2 – parte . III, cap. III

Dispense: Cap3.pdf

Page 3: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

MC68000 (68000 transistor): processore CISC Motorola (1979) molto avanzato per l’epoca (architettura a 16/32 bit, a differenza degli altri CISC che erano ancora a 16 bit).

Arrivati tardi per i PC (IBM Compatibili), per i quali era già stato scelto l’8086dell’Intel, il 68000 si rivolse con successo al mercato:

* workstation ( Apollo, Sun fino al 1987, Silicon Graphic fino al 1986 )

* home-computer (Apple, Amiga ed Atari nel corso della seconda metàdegli anni ’80 e dei primi anni ’90).

MC 68000

Page 4: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Architettura del processore MC 68000

ALU

SRTEMP

Registri generaliD0-D7,A0-A7

Interfaccia memoria

ed I/O

PC EAR

Bus di memoria e

di I/O16 x 32

32

32 32

16

CCR8 8

Control unit

IR

Page 5: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Caratteristiche principali

Il microprocessore 68000 presenta le seguenti caratteristiche:

• 8 registri dati più 8 registri indirizzi general purpose a 32 bit;

• Data bus a 16 bit;

• Address bus a 24 bit ( spazio di indirizzamento diretto di 16 MB);

• 5 tipi principali di dati per le operazioni;

• Memory Mapped I/O;

• 14 modalità di indirizzamento;

• 2 livelli di privilegio: user e supervisor;

• 7 livelli di priorità per le interruzioni esterne.

Page 6: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

MC68000: modello di programmazione

31 16 15 8 7 0D0D1D2D3D4D5D6D7A0A1A2A3A4A5A6A7

PCSRT S I2 I1 I0 CVZNX

Page 7: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Assembler del processore MC68000

Formato delle istruzioni ASM68K: etichetta cod. operativo operando/i commento

(label) (opcode) (operand(s)) (remark)

Le istruzioni assembler si dividono in tre categorie:

»Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

»Load-time operations - sono direttive utilizzate dal programma caricatoreall’atto del caricamento in memoria del codice oggetto

»Run-time operations - sono le istruzioni del programma in linguaggio macchina da eseguire

Page 8: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

L'assemblatore mette a disposizione:» codici mnemonici – forma simbolica delle istruzioni del processor

CLR (CLEAR)MOVE (MOVE)BEQ (BRANCH ON EQUAL)ADD (ADD)

» pseudo codici - direttive per il processo di assemblaggio del programma

ORG (ORIGIN)DS (DEFINE STORAGE)DC (DEFINE CONSTANT)END (END ASSEMBLY)

Il linguaggio Assembler del processore MC 68000

Page 9: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Processo di assemblaggio in due passi

L'assemblatore scandisce il programma sorgente due volte:» Nel primo passo costruisce la tabella dei simboli

» Nel secondo passo risolve i riferimenti “in avanti”

Riferimento “in avanti”– l’operando compare prima che il suo valore sia stato definito

Page 10: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Convenzioni usate dall’assemblatore

• Gli spazi tra i campi fungono esclusivamente da separatori (vengono ignorati dall’assemblatore)

• Una linea che inizi con un asterisco (*) è una linea di commento

• Nelle espressioni assembly, gli argomenti di tipo numerico si intendono espressi in:– notazione decimale, se non diversamente specificato

– notazione esadecimale, se preceduti dal simbolo “$”

• Nell’indicazione degli operandi, il simbolo “#” denota un indirizzamento immediato

Page 11: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Un programma assembly

* Programma per sommare i primi 17 interi*

ORG $8000START CLR.W SUM

MOVE.W ICNT,D0ALOOP MOVE.W D0,CNT

ADD.W SUM,D0MOVE.W D0,SUMMOVE.W CNT,D0ADD.W #-1,D0BNE ALOOPJMP SYSA

SYSA EQU $8100CNT DS.W 1SUM DS.W 1IVAL EQU 17ICNT DC.W IVAL

END START

Page 12: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Un programma assembly

* Programma per sommare i primi 17 interi*

ORG $8000START CLR.W SUM

MOVE.W ICNT,D0ALOOP MOVE.W D0,CNT

ADD.W SUM,D0MOVE.W D0,SUMMOVE.W CNT,D0ADD.W #-1,D0BNE ALOOPJMP SYSA

SYSA EQU $8100CNT DS.W 1SUM DS.W 1IVAL EQU 17ICNT DC.W IVAL

END START

commento

Page 13: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Un programma assembly

* Programma per sommare i primi 17 interi*

ORG $8000START CLR.W SUM

MOVE.W ICNT,D0ALOOP MOVE.W D0,CNT

ADD.W SUM,D0MOVE.W D0,SUMMOVE.W CNT,D0ADD.W #-1,D0BNE ALOOPJMP SYSA

SYSA EQU $8100CNT DS.W 1SUM DS.W 1IVAL EQU 17ICNT DC.W IVAL

END START

label

Page 14: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Un programma assembly

* Programma per sommare i primi 17 interi*

ORG $8000START CLR.W SUM

MOVE.W ICNT,D0ALOOP MOVE.W D0,CNT

ADD.W SUM,D0MOVE.W D0,SUMMOVE.W CNT,D0ADD.W #-1,D0BNE ALOOPJMP SYSA

SYSA EQU $8100CNT DS.W 1SUM DS.W 1IVAL EQU 17ICNT DC.W IVAL

END START

codici operativie pseudo codici

Page 15: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Un programma assembly

* Programma per sommare i primi 17 interi*

ORG $8000START CLR.W SUM

MOVE.W ICNT,D0ALOOP MOVE.W D0,CNT

ADD.W SUM,D0MOVE.W D0,SUMMOVE.W CNT,D0ADD.W #-1,D0BNE ALOOPJMP SYSA

SYSA EQU $8100CNT DS.W 1SUM DS.W 1IVAL EQU 17ICNT DC.W IVAL

END START

operandi

Page 16: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Il lavoro dell’assemblatore

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

Page 17: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Il lavoro dell’assemblatore

La tabella dei simboli:

START 8000 CNT 8030 IVAL 0011ALOOP 800C SUM 8032 ICNT 8034

Symbol Table

Page 18: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

PLC (variabile interna dell’assemblatore):

Punta alla locazione di memoria in cui andrà caricata l’istruzione assemblata

Viene inizializzata dallo pseudo-operatore “origin” (ORG)

Durante il processo di assemblaggio, il suo valore è aggiornato in funzione del codice operativo o pseudo-codice

E’ possibile, all’interno di un programma, fare riferimento al suo valore corrente mediante il simbolo " * "

Il Program Location Counter (PLC)

Page 19: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Il lavoro dell’assemblatore

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

valore corrente del PLC

Page 20: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Il lavoro dell’assemblatore

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

istruzione assemblata istruzione simbolica

Page 21: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Pseudo-operatori ORG e END

ORG viene usato per inizializzare il PLC Sintassi: ORG $HEXADDR

END viene usato per terminare il processo di assemblaggio e saltare all’entry point del programma

Sintassi: END LABEL

Page 22: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Il lavoro dell’assemblatore

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

Page 23: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Il lavoro dell’assemblatore

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

Page 24: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

Il lavoro dell’assemblatore

Page 25: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

Pseudo-operatori EQU - DS - DC

DS (Define Storage) viene usato per incrementare il PLC in modo da riservare spazio di memoria per una variabileSintassi: LABEL DS.W AMOUNT

DC (Define Constant) viene usato per inizializzare il valore di una variabile Sintassi: LABEL DC.B VALUE

EQU viene usato per stabilire un’identitàSintassi: LABEL EQU VALUE

Page 26: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

Il lavoro dell’assemblatore

Page 27: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

Il lavoro dell’assemblatore

1116 = 1710 !!

Page 28: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

Il lavoro dell’assemblatore

Page 29: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

Il lavoro dell’assemblatore

Page 30: 12A Assembler 68k 1 - Ingegneria Biomedica · »Assembly-time operations - sono direttive utilizzate dal programma assemblatore all’atto della generazione del codice oggetto

DIS - Dipartimento di Informatica e Sistemistica- Università di Napoli

00000000 1 * Programma per sommare i primi 17 interi00000000 2 *00008000 3 ORG $800000008000 4279 00008032 4 START CLR.W SUM00008006 3039 00008034 5 MOVE.W ICNT,D00000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT00008012 D079 00008032 7 ADD.W SUM,D000008018 33C0 00008032 8 MOVE.W D0,SUM0000801E 3039 00008030 9 MOVE.W CNT,D000008024 0640 FFFF 10 ADD.W #-1,D000008028 66E2 11 BNE ALOOP0000802A 4EF9 00008100 12 JMP SYSA00008030 =00008100 13 SYSA EQU $810000008030 14 CNT DS.W 100008032 15 SUM DS.W 100008034 =00000011 16 IVAL EQU 1700008034 0011 17 ICNT DC.W IVAL00008036 18 END START

Cosa fa questo programma?