ASSEMBLER 68K parte 1



Похожие документы
Il processore Motorola (MC68000)

Introduzione al linguaggio assembly

Introduzione al linguaggio assembly

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

MC68000: programmazione assembly

Introduzione al linguaggio assembly MC68000

Pseudo-operatori. Lo pseudo-operatore ORG

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Architettura di un calcolatore: introduzione

Introduzione alla programmazione assembly

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

Architettura di un calcolatore: introduzione

Assemblaggio per il processore Motorola 68000

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000

ASSEMBLER 68K parte 2

Il Processore: i registri

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

JPD132. Microprocessore e assembly

La macchina programmata Instruction Set Architecture (1)

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Sottosistema di Ingresso/Uscita (I/O)

Lezione 16: L architettura LC-3

CALCOLATORI ELETTRONICI II

Architettura del calcolatore

La Macchina Virtuale

Tecniche di traduzione da C ad assembly Note generali

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

CPU. Maurizio Palesi

#define N = 5. / funzione funz / int funz (int a, int b) { return (a + r) b; } / fine funzione / programma in linguaggio C

Il processore Motorola (MC68000)

Esempio di moltiplicazione come somma e spostamento

Alcuni programmi assembly MC68000

Architettura hardware

Ing. Paolo Domenici PREFAZIONE

AMBIENTE DI SIMULAZIONE ASIM

Architettura del Set di Istruzioni (ISA)

Architettura di tipo registro-registro (load/store)

Lezione n.9. Introduzione al linguaggio macchina

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

Von Neumann. John Von Neumann ( )

CALCOLATORI ELETTRONICI

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

introduzione I MICROCONTROLLORI

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

I componenti di un Sistema di elaborazione. CPU (central process unit)

Lezione 3: Architettura del calcolatore

L architettura del calcolatore (Prima parte)

MIPS Instruction Set 2

Struttura del calcolatore

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

Il microprocessore 8086

Architettura degli elaboratori (A)

FONDAMENTI di INFORMATICA L. Mezzalira

Programmazione dello Z80

Esegue la sommatral'accumulatoreac e Se I=1, ilcontenutodellacelladi memoriailcui indirizzoè

Assembler di Spim. Assembler di SPIM. Struttura di un programma assembler. Direttive

INFORMATICA 1 L. Mezzalira

che vengano generati nell ordine corretto i sistema (es., la memoria, l unità aritmetico-

L architettura di riferimento

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER

Lezione n.19 Processori RISC e CISC

CALCOLATORI ELETTRONICI 15 aprile 2014

Analizzatore lessicale o scanner

Architettura di un computer

Macchina di von Neumann

Calcolatori Elettronici

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Linguaggio Assembly. Architettura di riferimento Formato istruzioni Classi di istruzioni Modalità di indirizzamento Direttive Codice macchina

Università degli Studi di Cassino Corso di Fondamenti di Informatica Codifica di dati e istruzioni. Anno Accademico 2010/2011 Francesco Tortorella

Architettura di un calcolatore: Introduzione parte 2

Introduzione all'architettura dei Calcolatori

L Assembler 80x86 Concetti Generali. M. Rebaudengo M. Sonza Reorda P. Bernardi

Architettura di un Elaboratore

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

CALCOLATORI ELETTRONICI II

Транскрипт:

ASSEMBLER 68K parte 1 CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II

Supporti didattici Fadini Savy, Fond. Inf. 2 parte. III, cap. III Dispense: Cap3.pdf

MC 68000 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 8086 dell 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).

Architettura del processore MC 68000 PC 16 x 32 Registri generali D0-D7, A0-A7 ALU 32 32 TEMP 32 EAR IR Control unit 16 SR 8 8 CCR Interfaccia memoria ed I/O Bus di memoria e di I/O

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.

MC68000: modello di programmazione 31 16 15 8 7 0 D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7 T S I 2 I 1 I 0 X N Z V C SR PC

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 caricatore all atto del caricamento in memoria del codice oggetto»run-time operations - sono le istruzioni del programma in linguaggio macchina da eseguire

Il linguaggio Assembler del processore MC 68000 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)

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

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

Un programma assembly * Programma per sommare i primi 17 interi * ORG $8000 START CLR.W SUM MOVE.W ICNT,D0 ALOOP MOVE.W D0,CNT ADD.W SUM,D0 MOVE.W D0,SUM MOVE.W CNT,D0 ADD.W #-1,D0 BNE ALOOP JMP SYSA SYSA EQU $8100 CNT DS.W 1 SUM DS.W 1 IVAL EQU 17 ICNT DC.W IVAL END START

Un programma assembly * Programma per sommare i primi 17 interi * ORG $8000 START CLR.W SUM MOVE.W ICNT,D0 ALOOP MOVE.W D0,CNT ADD.W SUM,D0 MOVE.W D0,SUM MOVE.W CNT,D0 ADD.W #-1,D0 BNE ALOOP JMP SYSA SYSA EQU $8100 CNT DS.W 1 SUM DS.W 1 IVAL EQU 17 ICNT DC.W IVAL END START commento

Un programma assembly label * Programma per sommare i primi 17 interi * ORG $8000 START CLR.W SUM MOVE.W ICNT,D0 ALOOP MOVE.W D0,CNT ADD.W SUM,D0 MOVE.W D0,SUM MOVE.W CNT,D0 ADD.W #-1,D0 BNE ALOOP JMP SYSA SYSA EQU $8100 CNT DS.W 1 SUM DS.W 1 IVAL EQU 17 ICNT DC.W IVAL END START

Un programma assembly codici operativi e pseudo codici * Programma per sommare i primi 17 interi * ORG $8000 START CLR.W SUM MOVE.W ICNT,D0 ALOOP MOVE.W D0,CNT ADD.W SUM,D0 MOVE.W D0,SUM MOVE.W CNT,D0 ADD.W #-1,D0 BNE ALOOP JMP SYSA SYSA EQU $8100 CNT DS.W 1 SUM DS.W 1 IVAL EQU 17 ICNT DC.W IVAL END START

Un programma assembly * Programma per sommare i primi 17 interi * ORG $8000 START CLR.W SUM MOVE.W ICNT,D0 ALOOP MOVE.W D0,CNT ADD.W SUM,D0 operandi MOVE.W D0,SUM MOVE.W CNT,D0 ADD.W #-1,D0 BNE ALOOP JMP SYSA SYSA EQU $8100 CNT DS.W 1 SUM DS.W 1 IVAL EQU 17 ICNT DC.W IVAL END START

Il lavoro dell assemblatore 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 8 MOVE.W D0,SUM 0000801E 3039 00008030 9 MOVE.W CNT,D0 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 66E2 11 BNE ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START

Il lavoro dell assemblatore La tabella dei simboli: Symbol Table START 8000 CNT 8030 IVAL 0011 ALOOP 800C SUM 8032 ICNT 8034

Il Program Location Counter (PLC) 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 lavoro dell assemblatore 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 valore 8 corrente del MOVE.W PLC D0,SUM 0000801E 3039 00008030 9 MOVE.W CNT,D0 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 66E2 11 BNE ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START

Il lavoro dell assemblatore 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 8 MOVE.W D0,SUM 0000801E 3039 00008030 9 MOVE.W CNT,D0 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 istruzione 66E2 assemblata11 istruzione BNE simbolica ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START

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

Il lavoro dell assemblatore 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 8 MOVE.W D0,SUM 0000801E 3039 00008030 9 MOVE.W CNT,D0 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 66E2 11 BNE ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START

Il lavoro dell assemblatore 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 8 MOVE.W D0,SUM 0000801E 3039 00008030 9 MOVE.W CNT,D0 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 66E2 11 BNE ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START

Il lavoro dell assemblatore 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 8 MOVE.W D0,SUM 0000801E 3039 00008030 9 MOVE.W CNT,D0 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 66E2 11 BNE ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START

Pseudo-operatori EQU - DS - DC EQU viene usato per stabilire un identità Sintassi: LABEL EQU VALUE DS (Define Storage) viene usato per incrementare il PLC in modo da riservare spazio di memoria per una variabile Sintassi: LABEL DS.W AMOUNT DC (Define Constant) viene usato per inizializzare il valore di una variabile Sintassi: LABEL DC.B VALUE

Il lavoro dell assemblatore 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 8 MOVE.W D0,SUM 0000801E 3039 00008030 9 MOVE.W CNT,D0 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 66E2 11 BNE ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START

Il lavoro dell assemblatore 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 8 MOVE.W D0,SUM 0000801E 3039 00008030 11 9 MOVE.W CNT,D0 16 = 17 10!! 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 66E2 11 BNE ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START

Il lavoro dell assemblatore 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 8 MOVE.W D0,SUM 0000801E 3039 00008030 9 MOVE.W CNT,D0 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 66E2 11 BNE ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START

Il lavoro dell assemblatore 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 8 MOVE.W D0,SUM 0000801E 3039 00008030 9 MOVE.W CNT,D0 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 66E2 11 BNE ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START

Cosa fa questo programma? 00000000 1 * Programma per sommare i primi 17 interi 00000000 2 * 00008000 3 ORG $8000 00008000 4279 00008032 4 START CLR.W SUM 00008006 3039 00008034 5 MOVE.W ICNT,D0 0000800C 33C0 00008030 6 ALOOP MOVE.W D0,CNT 00008012 D079 00008032 7 ADD.W SUM,D0 00008018 33C0 00008032 8 MOVE.W D0,SUM 0000801E 3039 00008030 9 MOVE.W CNT,D0 00008024 0640 FFFF 10 ADD.W #-1,D0 00008028 66E2 11 BNE ALOOP 0000802A 4EF9 00008100 12 JMP SYSA 00008030 =00008100 13 SYSA EQU $8100 00008030 14 CNT DS.W 1 00008032 15 SUM DS.W 1 00008034 =00000011 16 IVAL EQU 17 00008034 0011 17 ICNT DC.W IVAL 00008036 18 END START