LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER
|
|
|
- Demetrio Romani
- 9 anni fa
- Visualizzazioni
Transcript
1 LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II
2 Istruzioni di selezione Linguaggio ad alto livello Assembler MC 68000:. if (espressione) istruzione; istruzione_successiva. istruzione può essere un compound statement. B(NOT condizione) labela istruzione.... labela istruzione_successiva
3 Istruzioni di selezione in assembler Esempio: if (D0 == 5) { D1++; D2=D1; } D2 = D0; Codifica in C CMPI.L #5,D0 ;confr. D0 con 5 BNE SKIP ;salta se D0 5 ADDQ.L #1,D1 ;esegui se D0=5 MOVE.L D1,D2 SKIP MOVE.L D0,D2 Codifica in assembler
4 Istruzioni di selezione in assembler Linguaggio ad alto livello:. if (espressione) istruzione1 else istruzione2 istruzione_successiva Assembler MC 68000: B(NOT condiz.) labela istruzione1 BRA labelb labela istruzione2 labelb istruzione_successiva
5 Istruzioni di selezione in assembler if (D0 < 5) {D0++; } else {D0=0; } D1=D0 Codifica in C CMPI.L #5,D0 *confr. D0 con 5 BHS ELSE *salta se D0 5 ADDQ.L #1,D0 *esegui se D0<5 BRA CONTN *evita ramo ELSE ELSE CLR.L D0 *esegui se D0 5 CONTN MOVE.L D0,D1 *continua Codifica in assembler
6 Strutture iterative in assembler Linguaggio ad alto livello: do istruzione; while (condizione ==TRUE); istruzione_successiva; Assembler MC 68000: labela istruzione Bcc labela istruzione_successiva
7 Strutture iterative in assembler Esempio: calcola 3^N (N>0) senza effettuare il controllo sull'overflow D0=1; D1=1; do { D0=D0*3; D1++; } while (D1<=N); MOVE.B #N,D2 ;D2 = esponente N MOVE.B #1,D1 ;D1 conta le iterazioni MOVE.W #1,D0 ;D0 inizializzato a 1 LOOP MULU.W #3,D0 ;D0 contiene i prodotti parziali ADDQ.B #1,D1 ;il contatore viene incrementato CMP.B D2,D1 ;e confrontato con N BLE LOOP ;itera il ciclo se D1 N MOVE.L D0,VAR ;memorizza il risultato
8 Strutture iterative in assembler Linguaggio ad alto livello: while (condizione == TRUE) istruzione; istruzione_successiva; Assembler MC 68000: labela labelb BRA labelb istruzione Bcc labela istruzione_successiva
9 Strutture iterative in assembler Esempio: calcola 3^N (N 0) senza effettuare il controllo sull'overflow LOOP TEST D0 = 1; D1 = 1; while (D1 <= N) { D0 = D0*3; D1++} MOVE.B #N,D2 ; MOVE.B #1,D1 ; inizializzazioni MOVE.W #1,D0 ; BRA TEST ;va ad effettuare prima il test MULU.W #3,D0 ADDQ.B #1,D1 CMP.B D2,D1 ;se N=0 non viene effettuato BLE LOOP ;alcun ciclo, e D0 contiene 1
10 DBcc Test condition, decrement, and branch DBcc Dn,<label> Dn: registro dati impiegato come contatore di iterazioni a decrescere. label: associata alla prima istruzione del ciclo. DBcc supporta le stesse condizioni logiche cc di Bcc. Sono inoltre possibili i casi DBF (cc = false) DBT (cc = true) Alcuni assemblatori usano DBRA come sinonimo di DBF.
11 DBcc Dn,<label> Semantica cc==true? NO Dn Dn-1 YES IF(condition false) THEN [Dn] [Dn] 1 {decrement loop counter} IF [Dn] = -1 THEN [PC] [PC]+2{goto next instruction} ELSE [PC] [PC] + d {take branch} ELSE [PC] [PC] + 2 {goto next instruction} NO Dn==-1? Branch to label YES Execute next instruction
12 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
13 Esercizio Assegnati due byte allocati agli indirizzi di memoria A e B, nella locazione di memoria RES viene memorizzato il numero di bit omologhi uguali di A e B. Il programma usa l'istruzione aritmetica EOR. A B D RES
14 *Area Istruzioni ORG $8000 START MOVE.B A,D0 * Sposta il primo valore in D0 MOVE.B B,D1 * Sposta il secondo valore in D1 EOR.B D0,D1 * OR esclusivo bit a bit tra D0 e D1 e risultato in D1 MOVE. B#7,D2 * Inizializza il registro contatore D2 a 7 CLR.L D3 * Azzera D3 destinato a contenere il risultato LOOP BTST D2,D1 * Controlla il D2-esimo bit di D1 BNE DEC * Se è 1 salta a DEC ADDQ #1,D3 * incrementa D3 perché i bit omologhi erano uguali DEC DBRA D2,LOOP * Decrementa D2 e ripete il ciclo se D2 >= 0 MOVE.B D3,RES * Sposta il risultato in memoria STOP #$2000 * Mette il processore in attesa di interruzioni * Area Dati ORG $8800 A DC.B % * primo byte B DC.B % * secondo byte RES DS.B 1 * area di storage del risultato END START
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
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
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
Introduzione alla programmazione assembly
Corso di Calcolatori Elettronici I A.A. 2010-2011 Introduzione alla programmazione assembly Lezione 21 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Organizzazione Motorola 68000 Holds
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
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,
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
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
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
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
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
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
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
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
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
Assemblaggio per il processore Motorola 68000
Assemblaggio per il processore Motorola 68000 Daniele Paolo Scarpazza [email protected] Politecnico di Milano Ultimo aggiornamento: 16 Maggio 2005 Assemblaggio A prima vista sembra un problema
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
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
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
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
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):
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
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
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.
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à
Il linguaggio assembly
Il linguaggio assembly Strutture di controllo P.H. cap. 2.6 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Le strutture di controllo Istruzioni di salto if then do...
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
Le strutture di controllo in C++
Le strutture di controllo in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi di Napoli
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
#define N = 5. / funzione funz / int funz (int a, int b) { return (a + r) b; } / fine funzione / programma in linguaggio C
esercizio n. 5 linguaggio macchina prima parte codifica in linguaggio macchina Si deve tradurre in linguaggio macchina simbolico (linguaggio assemblatore) 68000 il programma (main e funzione funz) riportato
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:
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
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
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
Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche
3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni
AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio
AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio
Traduzione da C a Catena di compilazione
Traduzione da C a 68000 Vittorio Zaccaria Dicembre 2009 Catena di compilazione utilizzo di linguaggi intermedi di(ir) Analisi sintattica e trattamento degli errori Generazione del codice macchina linguaggio
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
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
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
Elementi di Informatica e Programmazione
Università degli Studi di Brescia Elementi di Informatica e Programmazione PROGRAMMAZIONE Docente: Marco Sechi E mail: [email protected] Vers. 25/11/2015.B Dipartimento di Ingegneria Meccanica e Industriale
Istruzioni iterative (o cicliche)
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Istruzioni iterative (o cicliche) Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria
Struttura di programmi MAL Elementi lessicali
Elementi lessicali Ogni microistruzione è definita su una linea di programma Le linee vuote vengono ignorate Le linee con solo commenti vengono ignorate Il carattere di fine linea (RETURN ENTER INVIO)
