Introduzione alla programmazione assembly

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione alla programmazione assembly"

Transcript

1 Corso di Calcolatori Elettronici I A.A Introduzione alla programmazione assembly Lezione 21 Università degli Studi di Napoli Federico II Facoltà di Ingegneria

2 Organizzazione Motorola Holds address of the next instruction to be executed Program Counter (PC) 32 Effective Address Register (EAR) 32 If necessary Holds the address of memory reads/writes Internal Bus Instruction Register(IR) 16 Memory and I/O Interface Control Pipeline External Bus General Registers D0..D7 A0..A6 A7= User Stack pointer (USP) A7 =Supervisor Stack Pointer(SSP) Instruction Decode and Control Holds first word of currently executing instruction 32 Temporary Register 32 Holds operands or intermediate results Performs all logical or arithmetic Arithmetic and Logic Unit 8 operations (ALU) CCR SR ( ADD, SHIFT, etc. ) Holds result of ALU 32 Operations

3 Modello di programmazione del MC T S I 2 I 1 I 0 X N Z V C D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7 PC SR

4 Status register Ø Contiene: Ø La interrupt mask (8 livelli) Ø I codici di condizione (CC) - overflow (V), Zero (Z), Negative (N), Carry (C), e extend (X) Ø Altri bit di stato - Trace (T), Supervisor (S) Ø I Bits 5, 6, 7, 11, 12, e 14 non sono definiti e sono riservati per espansioni future

5 Esempio di generazione di codice assemblato PLC contenuto label opcode operands comments * Un commento non fa incrementare il PLC ORG $ START CLR.W SUM Riferimento in avanti MOVE.W ICNT,D C 33C ALOOP MOVE.W D0,CNT D ADD.W SUM,D C MOVE.W D0,SUM E MOVE.W CNT,D FFFF 9 ADD.W #-1,D E2 10 BNE ALOOP A 4EF JMP SYSA = SYSA EQU $ CNT DS.W SUM DS.W = IVAL EQU ICNT DC.W IVAL Symbol Table ALOOP 200C CNT 2030 IVAL 0011 START 2000 SUM 2032 ICNT 2034

6 Formato delle istruzioni assembly Le istruzioni assembly sono tipicamente costituite da un codice mnemonico seguito da uno o più operandi. Ad esempio, le istruzioni a due operandi per il trasferimento e le operazioni aritmetiche sui dati sono tipicamente nella forma: Operazione Sorgente,Destinazione Per esempio, per effettuare la somma tra due numeri si potrà scrivere: ADD A,B Questo comando realizza la somma di A e B e porrà il risultato dell operazione in B sovrascrivendone il contenuto corrente.

7 Formato Istruzioni del La prima word di una istruzione è chiamataopcode word Tuute le informazioni necessarie per decodificare un istruzione sono nell Opcode Word Contiene un opcode (cosa fa) Contiene zero,uno o due effective address fields (EA) L istruzione completa in memoria può contenere l opcode word ed altre word di istruzioni addizionali Un istruzione può richiedere fino a 5 word di memoria La forma generale della istruzione assembly è la seguente: Label OP CODE sorgente, destinazione *Comment

8 Esempio: l istruzione MOVE Volendo realizzare una copia del contenuto di un registro in un altro, ad esempio, il linguaggio assembly potrebbe richiedere di scrivere: MOVE R0,SOMMA Il codice mnenonico, in questo caso MOVE, rappresenta l azione svolta dall istruzione. L assemblatore traduce questo codice mnemonico in un codice binario di forma comprensibile al calcolatore, di solito chiamato codice operativo (OP-CODE). Segue almeno uno spazio bianco dopo il quale sono riportate le informazioni che specificano gli operandi.

9 MOVE (MOVE) L istruzione più comunemente usata per il movimento dati è MOVE Muove - Copia da una sorgente a una destinazione MOVE [sorgente], [Destinazione] Esempio MOVE.W D2, $1300 copia il contenuto del registro D2 nell'area di memoria di indirizzo esadecimale 1300

10 L istruzione MOVE Istruzioni di movimento dati tipiche del sono: MOVE Di, Dj MOVE M, Di MOVE Di, M MOVEA - utilizza semre registri indirizzi come destinazione e non impatta lo Status Register MOVEQ - (quick move) utilizzata per il movimento di valori piccoli (fino a 8 bits, i.e to +127) nei registri dati (e.g. MOVEQ.B #3,D3)

11 Operazioni Aritmetiche Operazioni aritmetiche duali operazione sorgente, destinatario che tipicamente funziona come segue: destinatario? sorgente destinatario dove? È una delle operazioni aritmetiche (+,-,* or /) e.g. ADD D0,D1 D1 + D0 D1 SUB D0,D1 D1 - D0 D1 MUL D0,D1 D1 * D0 D1 DIV D0,D1 D1 / D0 D1

12 ADD (ADD) Aggiungi - Aggiunge un valore a una destinazione ADD [valore], [Destinazione] Esempio ADD D1, SOMMA aggiunge il contenuto del registro D1 nella variabile di memoria SOMMA

13 Gli operandi Nel nostro esempio, l operando sorgente è nel registro D1. Questa informazione è seguita dall indicazione dell operando destinazione, separato da quello sorgente attraverso una virgola. L operando destinazione è nella locazione di memoria il cui indirizzo è rappresentato dal nome simbolico SOMMA. Per creare questa associazione, ogni nome deve essere opportunamente definito nell ambito del listato creando così un associazione SIMBOLO -> INDIRIZZO.

14 Natura degli operandi Gli operandi forniti come argomento di un istruzione possono contenere informazioni di tipo differente. Può accadere che l operando contenga direttamente il valore utile per il calcolo. In questo caso si parla di operando immediato ed esso è direttamente codificato di seguito all istruzione. In altri casi l operando contiene il riferimento ad un registro del processore il quale può contenere, a sua volta, il dato o (ancora) l indirizzo di un registro della memoria in cui è contenuto il dato.

15 Natura degli operandi: esempio. Nell istruzione ADD #9,D0 il primo operando è di tipo immediato. Il suo valore viene codificato in memoria direttamente assieme all istruzione. Il secondo operando è un registro interno del processore. Nell istruzione ADD D0,D1 entrambi gli operandi sono riferimenti a registri interni. L istruzione ADD D0,#9 è priva di senso dal momento che l operando destinazione non specifica una locazione di memoria in cui porre il risultato dell operazione.

16 Esempio: la somma di due registri Supponiamo di voler realizzare l istruzione C++ C = A + B; Questa istruzione ha lo scopo di sommare il contenuto delle locazioni di memoria individuate dagli identificatori A e B e, successivamente, di porre il risultato della somma nella locazione di memoria individuata dall identificatore C. Se il linguaggio assembly rende disponibile esclusivamente un istruzione per la somma a due operandi (come in genere accade), non è possibile realizzare l elaborazione in un unico passo, ma bisognerà scrivere: MOVE B,C ADD A,C

17 Registri interni e memoria (1) Un istruzione, in generale, può coinvolgere sia i registri interni che i registri della memoria. L accesso ai registri interni è molto più veloce dell accesso ai registri della memoria, poiché i primi sono già all interno del processore e non sorge dunque la necessità di trasferimenti attraverso canali esterni. Inoltre, i registri interni sono in numero molto minore delle celle di memoria (tipicamente da 8 a 64) e quindi per essere indirizzati c è bisogno di pochi bit.

18 Registri interni e memoria (2) Ad esempio, un processore che abbia 32 registri interni, può indirizzarli utilizzando 5 bit. Poiché l uso di registri interni permette elaborazioni più rapide e produce istruzioni più corte, essi sono usati per memorizzare dati temporanei nella CPU durante l elaborazione. In alcuni casi, determinati comandi assembler possono operare esclusivamente su registri interni; operazioni su registri di memoria non sono ammesse e, su necessità, bisogna esplicitamente provvedere al trasferimento dei dati tra la memoria e i registri interni.

19 Esempio: codifica di un istruzione (1) A titolo esemplificativo prendiamo in considerazione l istruzione ADD #9,D3 che che ha come effetto la somma di 9 10 al contenuto del registro D3 e la memorizzazione del risultato di nuovo in D3. Nel caso del M68000: il comando ADD da sorgente a registro dati si codifica con L indice del registro si codifica con La modalità operando immediato si codifica con La dimensione dell operando (di default word) si codifica con: La stringa completa dà: = D67C16

20 Esempio: codifica di un istruzione (2) L assembler permette di specificare il tipo di dato a cui si sta facendo riferimento, aggiungendo un suffisso allo mnemonico del istruzione:.b per dati di tipo byte.w per dati di tipo word.l per dati di tipo long. Esempio: MOVE.W DO, D1

21 Pseudo-operatori ORG (Origin) Viene usato per inizializzare il Program Location Counter (PLC) Sintassi: ORG $HEXADDR es. ORG $1000 END Viene usato per terminare il processo di assemblaggio e saltare all entry point del programma Sintassi: END TARGETLAB

22 Altri pseudo-operatori DS (Define Space) Viene usato per incrementare il Program Location Counter (PLC), in modo da riservare spazio di memoria per una variabile Sintassi: LABEL DS.W NUMSKIPS Esempio TOP DS.B 10 * ho assegnato 10 byte per TOP DC (Define Constant) Viene usato per inizializzare il valore di una variabile Sintassi: LABEL DC.W VALUE Esempio PLUTO DS.B 10 * ho assegnato 10 a PLUTO EQU (Equate) Viene usato per stabilire un identità Sintassi: LABEL EQU VALUE Esempio PIPPO EQU 1234 ; Ogni volta che uso #PIPPO in un istruzione equivale a usare il valore 1234

23 CMP Compare Operatione: Sintassi: [destinazione] - [sorgente] CMP <ea>,dn Esempio: CMP (Test,A6,D3.W),D2 Attributi: Size = byte, word, longword Descrizione: Sottrae l operando sorgente da quello destinatario e setta i condition codes in accordo con il risultato.. Condition codes: X N Z V C - * * * *

24 CMPM Compare memory with memory Operation: [destination] - [source] Syntax: CMPM (Ay)+,(Ax)+ Attributes: Size = byte, word, longword Description: Subtract the source operand from the destination operand and set the condition codes accordingly. The destination is not modified by this instruction. The only permitted addressing mode is address register indirect with post-incrementing for both source and destination operands. Application: Used to compare the contents of two blocks of memory. Condition codes: X N Z V C - * * * *

25 SUBQ Subtract quick Operation: [destination] [destination] - <literal> Syntax: SUBQ #<data>,<ea> Attributes: Size = byte, word, longword Description: Subtract the immediate data from the destination operand. The immediate data must be in the range 1 to 8. Word and longword operations on address registers do not affect condition codes. A word operation on an address register affects the entire 32-bit address. Condition codes: X N Z V C * * * * *

26

27 L istruzione JMP

28 Il salto viene eseguito in dipendenza dello stato dei flag nello status register (SR) X N Z V C status flags Lo status Register è Sempre interessato dalla istruzione del programma appena eseguita

29 cc - condition code CC carry clear C CS carry set C NE not equal Z EQ equal Z (salta se carry bit è clear, i.e. 0) (salta se carry bit è settato, i.e. 1) (salta se zero bit è clear, i.e. 0) (salta se zero bit è settato, i.e. 1)

30 Altri condition codes PL plus N MI minus N GT greater than N V Z + N V Z LE less or equal Z + N V + N V

31 Istruzioni di selezione in assembler 1/2 Linguaggio di alto livello: if (espressione) istruzione istruzione_successiva NOTA: istruzione può essere un compound statement Linguaggio assembler (processore MC 68000): labela Esempio: B(NOT condizione) labela istruzione... istruzione_successiva CMPI.L #5,D0 if (D0 == 5) BNE SKIP D1++; ADDQ.L #1,D1 D2 = D0; SKIP MOVE.L D0,D2

32 Istruzioni di selezione in assembler 2/2 Linguaggio di alto livello: if (espressione) istruzione1 else istruzione2 istruzione_successiva Linguaggio assembler (processore MC 68000): B(NOT condizione) labela istruzione1... BRA labelb labela istruzione2... labelb istruzione_successiva

33 Strutture iterative in assembler - 1/2 Linguaggio di alto livello: do istruzione while (condizione == TRUE); istruzione_successiva Linguaggio assembler (processore MC 68000): labela istruzione... Bcc labela istruzione_successiva Esempio: calcola 3^N (N>0) MOVE.B #N,D2 D0 = 1; D1 = 1; MOVE.B #1,D1 do { MOVE.W #1,D0 D0 = D0 * 3; LOOP MULU.W #3,D0 D1++; ADDQ.B #1,D1 } while (D1 <= N); CMP.B D2,D1 BLE LOOP

34 Strutture iterative in assembler - 2/2 Linguaggio di alto livello: while (condizione == TRUE) istruzione; istruzione_successiva Linguaggio assembler (processore MC 68000): labela istruzione labelb Bcc labela BRA labelb... istruzione_successiva Esempio: calcola 3^N (N>=0) MOVE.B #N,D2 D0 = 1; D1 = 1; MOVE.B #1,D1 while (D1 <= N) { MOVE.W #1,D0 D0 = D0 * 3; BRA TEST D1++; LOOP MULU.W #3,D0 }; ADDQ.B #1,D1 TEST CMP.B D2,D1 BLE LOOP

35 Decrement and Branch always (DBRA) DBRA equivale a DBF: caso particolare di DBcc con cc=false Esempio: equivale a: MOVE.L #N,D1 MOVE.L #N,D1 SUBQ.L #1,D1 SUBQ.L #1,D1 MOVEA.L #NUM,A2 MOVEA.L #NUM,A2 CLR.L D0 CLR.L D0 LOOP ADD.W (A2)+,D0 LOOP ADD.W (A2)+,D0 DBRA D1,LOOP SUBQ #1,D1 MOVE.L D0,SOMMA BGE LOOP MOVE.L D0,SOMMA

36 Esempio di generazione di codice assemblato PLC contenuto label opcode operands comments * Un commento non fa incrementare il PLC ORG $ START CLR.W SUM Riferimento in avanti MOVE.W ICNT,D C 33C ALOOP MOVE.W D0,CNT D ADD.W SUM,D C MOVE.W D0,SUM E MOVE.W CNT,D FFFF 9 ADD.W #-1,D E2 10 BNE ALOOP A 4EF JMP SYSA = SYSA EQU $ CNT DS.W SUM DS.W = IVAL EQU ICNT DC.W IVAL Symbol Table ALOOP 200C CNT 2030 IVAL 0011 START 2000 SUM 2032 ICNT 2034

37 Link ASIM Asim.htm

38 Esempio esito del confronto $FF è maggiore di $10 se i numeri sono interpretati come unsigned, in quanto 255 è maggiore di 16 Tuttavia se i numeri sono interpretati come signed, $FF è minore di $10, in quanto -1 è minore di 16. IL PROCESSORE NON TIENE CONTO DEL TIPO DI RAPPRESENTAZIONE QUANDO SETTA I FLAG DI CONDIZIONE

39 Esempio - Moltiplicazione di due interi * Programma per moltiplicare MCND e MPY * ORG $8000 * MULT CLR.W D0 D0 accumula il risultato MOVE.W MPY,D1 D1 e' il contatatore di ciclo BEQ DONE Se il contatore e' zero e' finito LOOP ADD.W MCND,D0 Aggiunge MCND al prodotto parziale ADD.W #-1,D1 Decrementa il contatore BNE LOOP e ripete il giro DONE MOVE.W D0,PROD Salva il risultato PROD DS.W 1 Riserva spazio di memoria per PROD MPY DC.W 3 Definisce il valore di MPY MCND DC.W 4 Definisce il valore di MCND END MULT Fine ass., salto a entry point

40 Esercitazione Scrivere ed assemblare un programma che moltiplichi due interi Eseguire il programma sul simulatore e sperimentare: L effetto di DC e la rappresentazione esadecimale in memoria L effetto dell istruzione CLR su registro L effetto dell istruzione MOVE da memoria a registro L effetto dell istruzione BEQ sul PC L effetto dell istruzione ADD tra memoria e registro L effetto dell istruzione ADD tra immediato e registro L effetto dell istruzione BNE sul PC L effetto dell istruzione JMP sul PC L effetto dell istruzione MOVE da registro a memoria e la rappresentazione esadecimale in memoria

41 Soluzione mult2ints.a68 ORG $8000 MULT CLR.W D0 D0 accumula il risultato MOVE.W MPY,D1 D1 e' il contatatore di ciclo BEQ DONE Se il contatore e' zero e' finito LOOP ADD.W MCND,D0 Aggiunge MCND al prodotto parziale ADD.W #-1,D1 Decrementa il contatore BNE LOOP e ripete il giro DONE MOVE.W D0,PROD Salva il risultato PROD DS.W 1 Riserva spazio di memoria per PROD MPY DC.W 3 Definisce il valore di MPY MCND DC.W 4 Definisce il valore di MCND END MULT Fine ass., salto a entry point

42 Soluzione - Assemblaggio 68kasm.exe -l filename.a68 o in alternativa: assembla.bat

43 Soluzione - Esecuzione

44 Esercitazione Nell esempio precedente, effettuare le seguenti sostituzioni ed osservarne gli effetti DONE MOVE.W D0,PROD Salva il risultato PROD DS.W 1 Riserva spazio di memoria per PROD DONE MOVE.L D0,PROD Salva il risultato PROD DS.L 1 Riserva spazio di memoria per PROD

45 Esempio - Somma di n interi 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 CNT DS.W 1 SUM DS.W 1 IVAL EQU 17 ICNT DC.W IVAL END START

46 Esercitazione Scrivere un programma che sommi i primi n interi Assemblare ed eseguire il programma sul simulatore Sperimentare: L effetto dell istruzione CLR in memoria L effetto dell istruzione MOVE da memoria a registro L effetto dell istruzione ADD tra memoria e registro L effetto delle varie istruzioni sui codici di condizione L effetto dell istruzione BNE sul PC L effetto dell istruzione JMP sul PC

47 Soluzione - sumnnums.a68 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 $8008 CNT DS.W 1 SUM DS.W 1 IVAL EQU 17 ICNT DC.W IVAL

48 Esercitazione Scrivere un programma che esegua il prodotto scalare tra due vettori di interi Assemblare ed eseguire il programma sul simulatore

49 Soluzione scalprod.a68 ORG $8000 START MOVE.L #A,A0 MOVE.L #B,A1 MOVE.L #N,D0 SUBQ #1,D0 CLR D2 LOOP MOVE (A0)+,D1 MULS (A1)+,D1 ADD D1,D2 DBRA D0,LOOP MOVE D2,C DONE JMP DONE N EQU $000A ORG $80B0 A DC.W 1,1,1,1,1,1,1,1,1,1 ORG $80D0 B DC.W 1,1,1,1,1,1,1,1,1,1 C DS.L 1

50 Memoria scalprod.a68 START = 8000 CODICE A = 80B0 B = 80D0 VETTORE A VETTORE B

51 Esercitazione Scrivere un programma che: Riconosca un token in una stringa Ne memorizzi l indirizzo in una locazione di memoria Assemblare ed eseguire il programma sul simulatore

52 Soluzione token.a68 ORG $8000 START MOVEA.L #STRING,A0 MOVE.B #TOKEN,D0 LOOP CMP.B (A0)+,D0 BNE LOOP FOUND SUBQ.L #1,A0 MOVE.L A0,TOKENA ORG $8100 TOKEN EQU ':' STRING DC.B 'QUI QUO:QUA' TOKENA DS.L 1

Pseudo-operatori. Lo pseudo-operatore ORG

Pseudo-operatori. Lo pseudo-operatore ORG Pseudo-operatori Viene usato per inizializzare il Program Location Counter (PLC) Sintassi: ORG $HEXADDR Lo pseudo-operatore END Viene usato per terminare il processo di assemblaggio e saltare all entry

Dettagli

MC68000: programmazione assembly

MC68000: programmazione assembly Corso di Calcolatori Elettronici I MC68000: programmazione assembly Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Dettagli

Strutture di controllo del flusso di esecuzione in assembler. MC68000: Status Register

Strutture di controllo del flusso di esecuzione in assembler. MC68000: Status Register Corso di Calcolatori Elettronici I A.A. 2010-2011 Strutture di controllo del flusso di esecuzione in assembler Lezione 25 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di

Dettagli

Alcuni programmi assembly MC68000

Alcuni programmi assembly MC68000 Corso di Calcolatori Elettronici I Alcuni programmi assembly MC68000 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Dettagli

LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER

LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Istruzioni di selezione Linguaggio ad alto livello Assembler

Dettagli

Introduzione al linguaggio assembly MC68000

Introduzione al linguaggio assembly MC68000 Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly MC68000 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

Architettura di un calcolatore: introduzione

Architettura di un calcolatore: introduzione Corso di Calcolatori Elettronici I A.A. 2011-2012 Architettura di un calcolatore: introduzione Lezione 18 Prof. Antonio Pescapè Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

Dettagli

ASSEMBLER 68K parte 1

ASSEMBLER 68K parte 1 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.

Dettagli

Il processore Motorola (MC68000)

Il processore Motorola (MC68000) LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 9 Prof. Rosario Cerbone [email protected] http://digilander.libero.it/rosario.cerbone a.a. 2008-2009 Il processore Motorola 68000 (MC68000)

Dettagli

Processore M68000: ulteriori istruzioni

Processore M68000: ulteriori istruzioni Corso di Calcolatori Elettronici I Processore M68000: ulteriori istruzioni ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Shift LSL, LSR shift logico a sinistra/destra Esempio: LSL.W #2,D2

Dettagli

Introduzione al linguaggio assembly

Introduzione al linguaggio assembly Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Dettagli

Introduzione al linguaggio assembly

Introduzione al linguaggio assembly Corso di Calcolatori Elettronici I A.A. 2011-2012 Introduzione al linguaggio assembly Lezione 20 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Il linguaggio Assembly È funzionalmente

Dettagli

Passaggio di Parametri per Valore o Indirizzo

Passaggio di Parametri per Valore o Indirizzo Passaggio di Parametri per Valore o Indirizzo Come in C, l assembler permette di passare un dato per valore (copia) o per indirizzo, nel secondo caso rendendo modificabile il dato stesso da dentro una

Dettagli

Modi di indirizzamento del processore MC68000 (parte prima)

Modi di indirizzamento del processore MC68000 (parte prima) Corso di Calcolatori Elettronici I Modi di indirizzamento del processore MC68000 (parte prima) Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Modello di programmazione

Dettagli

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15 LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15 Prof. Rosario Cerbone [email protected] http://digilander.libero.it/rosario.cerbone a.a. 2005-2006 L'INDIRIZZAMENTO NEL PROCESSORE MC 68000

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Modi di indirizzamento del processore MC68000 (parte prima)

Modi di indirizzamento del processore MC68000 (parte prima) Corso di Calcolatori Elettronici I A.A. 2011-2012 Modi di indirizzamento del processore MC68000 (parte prima) Lezione 21 Prof. Antonio Pescapè Università degli Studi di Napoli Federico II Facoltà di Ingegneria

Dettagli

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div MIPS load/store word, con indirizzamento al byte aritmetica solo su registri Istruzioni Significato add $t1, $t2, $t3 $t1 = $t2 + $t3 sub $t1, $t2, $t3 $t1 = $t2 - $t3 mult $t1, $t2 Hi,Lo = $t1*$t2 div

Dettagli

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):

Dettagli

AMBIENTE DI SIMULAZIONE ASIM

AMBIENTE DI SIMULAZIONE ASIM LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 10 Prof. Rosario Cerbone [email protected] http://digilander.libero.it/rosario.cerbone a.a. 2008-2009 AMBIENTE DI SIMULAZIONE ASIM Digitazione

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Modi di indirizzamento del processore MC68000 parte 1

Modi di indirizzamento del processore MC68000 parte 1 Corso di Calcolatori Elettronici I Modi di indirizzamento del processore MC68000 parte 1 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle

Dettagli

Fondamenti di programmazione in linguaggio assembly del Motorola 68000

Fondamenti di programmazione in linguaggio assembly del Motorola 68000 Fondamenti di programmazione in linguaggio assembly del Motorola 68000 Daniele Paolo Scarpazza [email protected] Politecnico di Milano Ultimo aggiornamento: 10 Maggio 2005 Bibliografia Libro

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Linguaggio macchina e assembler (caso di studio: processore MIPS) slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Architettura degli Elaboratori 1 1 Istruzioni

Dettagli

Istruzioni di trasferimento dati

Istruzioni di trasferimento dati Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:

Dettagli

ORG $8800 N DC 9,11,1,4,5,7,2

ORG $8800 N DC 9,11,1,4,5,7,2 ESEMPI DI ASSEMBLY M68000 Esercizio 1 Scrivere un programma non segmentato in linguaggio macchina (simbolico), con sintassi nativa M6800, che rispetti la seguente specifica. Dati 7 numeri di tipo Word,

Dettagli

ASSEMBLER 68K parte 2

ASSEMBLER 68K parte 2 ASSEMBLER 68K parte 2 CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Classi di istruzioni Un calcolatore deve avere istruzioni in grado

Dettagli

Istruzioni di Controllo del Flusso Istruz. di Controllo di Flusso

Istruzioni di Controllo del Flusso Istruz. di Controllo di Flusso Istruzioni di Controllo del Flusso Istruz. di Controllo di Flusso Salto Non Condizionato Salto Condizionato JMP jump BRA branch non condizionato BEQ branch if Equal BNE branch if Not Equal BCS branch if

Dettagli

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri. Sottoprogrammi: richiami

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri. Sottoprogrammi: richiami Corso di Calcolatori Elettronici I Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

Dettagli

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Corso di Calcolatori Elettronici I Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

Dettagli

Architettura di un calcolatore: Introduzione parte 2

Architettura di un calcolatore: Introduzione parte 2 Corso di Calcolatori Elettronici I Architettura di un calcolatore: Introduzione parte 2 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle

Dettagli

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Architettura degli Elaboratori Lezione 20 Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Prof. F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Richiamo sull

Dettagli

Lezione 12. Assembly II. Set di Istruzioni MIPS Strutture di controllo in Assembly

Lezione 12. Assembly II. Set di Istruzioni MIPS Strutture di controllo in Assembly Architettura degli Elaboratori e delle Reti Lezione 12 Assembly II Set di Istruzioni MIPS Strutture di controllo in Assembly Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università

Dettagli

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

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Architettura di una CPU

Architettura di una CPU Massimo VIOLANTE Politecnico di Torino Dipartimento di Automatica e Informatica Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni 2 M. Violante 1.1

Dettagli

Tecniche di traduzione da C ad assembly 68000. Note generali

Tecniche di traduzione da C ad assembly 68000. Note generali Tecniche di traduzione da C ad assembly 68000 Note generali Schema di compilazione da C ad assembly 68K Ispirato a GCC Fa uso di: banco di registri classi d istruzioni modi d indirizzamento e organizzazione

Dettagli

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F. Architettura degli Elaboratori e delle Reti Lezione 16 Il linguaggio macchina Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità degli Studi di Milano L 16 1/32 Linguaggio

Dettagli

Il processore Motorola (MC68000)

Il processore Motorola (MC68000) Il processore Motorola 68000 (MC68000) Il processore Motorola 68000 è stato un processore innovativo, che ha visto la luce all inizio degli anni 80, ed il cui successo ha posto le basi per lo sviluppo

Dettagli

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini [http://www.di.univaq.it/muccini/labarch] Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a. 2005-2006 Docente: H. Muccini Lecture 2: Prime Istruzioni -Concetti Fondamentali

Dettagli

Istruzioni assembler Istruzione N Registri

Istruzioni assembler Istruzione N Registri Istruzioni assembler Istruzione N Registri Aritmetica add a, b, c a = b+c addi a, b, num a = b + sub a, b, c a = b - c mul a, b, c a = b*c div a, b, c a = b/c utilizzati Descrizione 3 Somma. Somma b e

Dettagli

Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit Caratteristiche principali dell architettura del processore MIPS Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini E un architettura RISC

Dettagli

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Introduzione all'architettura dei Calcolatori. Maurizio Palesi Introduzione all'architettura dei Calcolatori Maurizio Palesi 1 Agenda Architettura generale di un Sistema di Elaborazione La memoria principale Il sottosistema di comunicazione La CPU Miglioramento delle

Dettagli

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Salvatore Orlando Arch. Elab. - S. Orlando 1 Livelli di astrazione Scendendo di livello, diventiamo più concreti e scopriamo

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Istruzioni di controllo del flusso

Istruzioni di controllo del flusso Istruzioni di controllo del flusso Il flusso di esecuzione è normalmente sequenziale Le istruzioni di controllo cambiano la prossima istruzione da eseguire Istruzioni di salto condizionato branch if equal

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Programmazione in linguaggio assembly per architetture Intel 8088

Programmazione in linguaggio assembly per architetture Intel 8088 Programmazione in linguaggio assembly per architetture Intel 8088 Marco Di Felice 1 Università of Bologna Dipartimento di Scienze dell Informazione Corso di Architettura degli Elaboratori mail: [email protected]

Dettagli