Processore M68000: ulteriori istruzioni
|
|
|
- Letizia Orlando
- 9 anni fa
- Visualizzazioni
Transcript
1 Corso di Calcolatori Elettronici I Processore M68000: ulteriori istruzioni ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica
2 Shift LSL, LSR shift logico a sinistra/destra Esempio: LSL.W #2,D2 ROL, ROR rotazione a sinistra/destra Esempio: ROL #1,D0 ASL, ASR shift aritmetico (con propagazione del segno) a sinistra/destra Esempio: ASR.B #4,D6
3 Test e Bit-Test TST verifica se l operando è negativo o zero, influenzando opportunamento il registro di stato Esempio: TST D2 BTST Verifica se un determinato bit è 1 Esempio: BTST #1,D0 BCHG, BCLR, BSET testano un bit e, rispettivamente, lo invertono, lo pongono a 0, lo pongono a 1 Esempio: BCLR #4,D6
4 Operazioni di scambio EXG Scambia il contenuto di due registri Esempio: EXG D3,D7 SWAP Scambia la parte bassa e la parte alta di un registro Esempio: SWAP D0
5 ADD/SUB Quick Spesso occorre effettuare incrementi/decrementi di piccole quantià Un istruzione però può codificare valori immediati soltanto con 16 o 32 bit ciò può implicare un certo spreco di memoria ADDQ, SUBQ somma/sottrae un immediato codificabile su tre bit (valori da 1 a 8, escludendo lo 0, che non serve) L immediato è codificato direttamente nei 16 bit dell istruzione Esempio: ADDQ #8,D2 SUBQ #7,D6
6 Operazioni con immediati l assemblatore sceglie la codifica migliore disponibile (ad esempio ADDQ invece che ADD) ADDI, SUBI somma/sottrae un immediato ad un operando dest. Esempio: ADDI #9,D2 ANDI, ORI, EORI, etc. applica le corrispondenti funzioni logiche Esempio: ANDI #$FE,(A0) CMPI confronta un immediato con un operando destinazione Esempio: CMPI #100,D6
7 Moltiplicazione e divisione MULU, DIVU moltiplica/divide due operandi considerandoli come unsigned Esempio: MULU (A2),D2 MULS, DIVS moltiplica/divide due operandi come signed Esempio: DIVS D3,D2 La moltiplicazione opera sempre su operandi a 16 bit, in modo che il risultato richieda al massimo 32 bit
8 Manipolazione indirizzi MOVEA E una MOVE specializzata nel trasferimento di indirizzi Opera solo su registri Ax A differenza della MOVE ordinaria, non altera il registro di stato Esempio: MOVEA.L #$8100,A7 MOVEA.L A6,A5 ADDA Similmente, applica l addizione su un registro indirizzo Esempio: ADDA.L #$10,A3
9 Trasferimenti multipli: MOVEM MOVEM trasferisce in blocco interi gruppi di registri E possibile scegliere un sottoinsieme qualsiasi dei registri generici Dx/Ax Si utilizza in combinazione con una modalità di indirizzamento con autoaggiornamento Esempio: MOVEM.L D0-D4/A0/A2-A4,-(A7) MOVEM.L (A7)+,D0-D4/A0/A2-A4
10 Confronto memoria-memoria CMPM E l unica variante della CMP che consente confronti con entrambi gli operandi in memoria E ammessa solo la modalità di indirizzamento indiretto con post-incremento E tipicamente usata per confrontare vettori, ovvero sequenze di locazioni di memoria tutte della stessa dimensione Esempio: CMPM (A4)+,(A3)+
11 DBcc: test, decrement, and branch DBcc Fintantoché la condizione cc rimane falsa, decrementa il registro Dx fornito all istruzione, e se questo non era zero prima del decremento (ovvero se ora non vale -1) salta all etichetta fornita all istruzione. Negli altri casi, passa all istruzione seguente. Fornisce un modo sintetico per gestire i cicli, sostituendo con un unica istruzione il decremento di un contatore e la verifica di una condizione, che normalmente richiedono diverse istruzioni separate. Supporta tutti i cc usati in Bcc. Inoltre, ammette anche le forme DBF e DBT (F = false, e T = true) per ignorare la condizione ed usare solo il registro di conteggio. Esempio: DBT D0,LOOP [Dn] [Dn] - 1 IF [Dn] >= 0 [PC] [PC] + d ELSE [PC] [PC] + 2
12 Istruzioni STOP, NOP STOP Modifica il registro di stato e pone il processore in una condizione di attesa Sfrutta il meccanismo delle interruzioni Esempio: STOP #% NOP Non fa nulla! Esempio: NOP E un istruzione vuota Può talvolta essere utile per il debug dei programmi, o per occupare parti dell area codice con spazio vuoto
13 Esercizio: DBcc File: programma016.a68 Scrivere un programma che sommi gli N elementi di un vettore Assemblare ed eseguire il programma sul simulatore Sperimentare l uso dell istruzione DBcc
14 Esercizio: DBcc File: programma016.a68 ORG $8000 START MOVE.L #(N-1),D1 MOVEA.L #VET,A2 CLR.L D0 LOOP ADD.W (A2)+,D0 DBRA D1,LOOP MOVE.L D0,SUM N EQU 8 VET DC.W 1,4,2,3,5,3,-1,2 SUM DS.W 1 END START versione con DBcc (DBRAequivale a DBF: caso particolare di DBcc con cc=false) ORG $8000 START MOVE.L #(N-1),D1 MOVEA.L #VET,A2 CLR.L D0 LOOP ADD.W (A2)+,D0 SUBQ #1,D1 BGE LOOP MOVE.L D0,SUM N EQU 8 VET DC.W 1,4,2,3,5,3,-1,2 SUM DS.W 1 END START versione senza DBcc
15 Esercizio: DBcc File: programma016.a68 ORG $8000 START MOVE.L #(N-1),D1 MOVEA.L #VET,A2 CLR.L D0 LOOP ADD.W (A2)+,D0 DBRA D1,LOOP MOVE.L D0,SUM N EQU 8 VET DC.W 1,4,2,3,5,3,-1,2 SUM DS.W 1 END START versione con DBcc (DBRAequivale a DBF: caso particolare di DBcc con cc=false) Inizializza il contatore D1con il valore (immediato) 7. In questo modo, in virtù del funzionamento della DBRA, il ciclo sarà ripetuto per valori di D1pari a 7, 6, 5, 4, 3, 2, 1, 0(compreso), ovvero 8volte Decrementa D1e salta a LOOPfino a quando D1 diventa -1
16 Esercizio: prodotto scalare File: programma017.a68 Scrivere un programma che esegua il prodotto scalare tra due vettori di word, etichettati A e B A e B allocati staticamente ed inizializzati con DC Assemblare il programma con ASIMTOOL ed eseguirlo sul simulatore ASIM
17 Esercizio: prodotto scalare ORG $8000 START MOVE.L #A,A0 MOVE.L #B,A1 MOVE.L #N-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,0,3,1,8,4,0,3,0,-1 ORG $80D0 B DC.W 2,1,-3,0,1,-2,11,-3,10,0 C DS.L 1 END START File: Inizializza i due puntatori A0 e A1con i valori degli indirizzi dei due vettori programma017.a68 prelievo degli elementi dei due vettori nella stessa posizione tramite i puntatori A0e A1, moltiplicazione, incremento dei due puntatori per farli puntare alla successiva coppia di elementi Gestione del ciclo tramite il contatore D0 Sposta il risultato nella locazione C
18 Esercizio: stringhe Scrivere un programma che: File: Riconosca un token in una stringa programma018.a68 Ne memorizzi l indirizzo in una locazione di memoria Assemblare ed eseguire il programma sul simulatore
19 Esercizio: stringhe File: programma018.a68 ORG $8000 START MOVEA.L #STRING,A0 MOVE.B #TOKEN,D0 LOOP TST.B (A0) BEQ DONE CMP.B (A0)+,D0 BNE LOOP FOUND SUBQ.L #1,A0 DONE MOVE.L A0,TOKENA STOP #$2700 ORG $8100 TOKEN EQU STRING DC.B TOKENA DS.L 1 END START ':' 'QUI QUO:QUA',0 Usa A0 per puntare ai caratteri della stringa Verifica di non essere arrivato al terminatore di stringa. Questo accade quando il byte puntato dal registro A0contiene il carattere 0. In questo caso esce dal ciclo Confronta il byte puntato dal registro A0con il token da cercare, contenuto nel registro D0. Nel caso lo trovi, copia l indirizzo nella locazione TOKENA Per la stringa qui si adotta la convenzione di far terminare la sequenza dei caratteri con un valore speciale, che è 0, il terminatore. In questo modo, non è necessario conoscere a priori la lunghezza della stringa
20 Esercizio: EQU e DC File: programma019.a68 Riprendere il programma che sommava le word di un vettore di lunghezza N usando la DBcc La dimensione N del vettore era data attraverso una costante EQU per cambiare la dimensione, occorre riscrivere e riassemblare il programma Riscrivere il programma in modo che la dimensione del vettore sia essa stessa una variabile in memoria (definita tramite DC) è quindi possibile cambiare dinamicamente la dimensione del vettore che verrà effettivamente usato
21 Esercizio: EQU e DC File: programma019.a68 ORG $8000 START MOVE.L #(N-1),D1 MOVEA.L #VET,A2 CLR.L D0 LOOP ADD.W (A2)+,D0 DBRA D1,LOOP MOVE.L D0,SOMMA N EQU 8 VET DC.W 1,4,2,3,5,3,-1,2 SOMMA DS.L 1 END START versione con EQU ORG $8000 START MOVE.L N,D1 SUBQ #1,D1 MOVEA.L #VET,A2 CLR.L D0 LOOP ADD.W (A2)+,D0 DBRA D1,LOOP MOVE.L D0,SOMMA N DC.L 8 VET DC.W 1,4,2,3,5,3,-1,2 SOMMA DS.L 1 END START versione con DC Confrontare i due listati generati dai due programmi. Nel programma che usa la EQU, il PLC non sarà incrementato in corrispondenza dell etichetta N poiché essa non corrisponde ad una locazione fisicamente allocata in memoria
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
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
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
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
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
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,
Motorola 68000: primi programmi assembly
Corso di Calcolatori Elettronici I A.A. 2012-2013 Motorola 68000: primi programmi assembly ing. Alessandro Cilardo Accademia Aeronautica di Pozzuoli Corso Pegaso V GArn Elettronici Organizzazione dei dati
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
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
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
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
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
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
Introduzione alla famiglia Motorola 68000
Introduzione alla famiglia Motorola 68000 Maurizio Rebaudengo Matteo Sonza Reorda Politecnico di Torino Dipartimento di Automatica e Informatica Sommario Storia Introduzione Registri interni Modi di indirizzamento
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
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
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]
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
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
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)
#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
Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento
Architettura degli Elaboratori, a.a. 2005-06 Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Esercizio 1 (svolto) a) Compilare in assembler Risc (Cap. V) un programma
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
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
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):
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
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
Istruzioni MIPS per floating point
Istruzioni MIPS per floating point Architetture dei Calcolatori (lettere A-I) Coprocessore per floating point L architettura MIPS ha un coprocessore (indicato con il numero 1) che opera sui numeri in virgola
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
Processore Danilo Dessì. Architettura degli Elaboratori.
Processore 888 Architettura degli Elaboratori Danilo Dessì [email protected] 888 L 888 è un processore che è stato progettato dalla Intel nel periodo 1978/1979 La sua architettura è simile a quella
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
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
Capitolo 2 Istruzioni macchina
Capitolo 2 Istruzioni macchina 2.1. No; ogni sequenza binaria si può interpretare come un numero o come un istruzione. 2.2. Il contenuto dei byte in esadecimale, a partire dalla locazione 1000, sarà 43,
Il linguaggio Assembly
Il linguaggio Assembly Linguaggio macchina Linguaggio definito da un insieme di istruzioni, codificate come stringhe di bit, che il processore può interpretare ed eseguire direttamente Linguaggio Assembly
ARM esempi di programmi ASM
03.d ARM esempi di programmi ASM C. Fantozzi, A. Gardich (revisione di S. Congiu) EsA1: copia di un vettore Nel progettare un programma che esegua la copia di un vettore vanno definiti: i dati su cui il
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:
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à
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
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 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
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
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
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
Elaborazione dell informazione
Elaborazione dell informazione Primo esempio Ricominciamo dai numeri (45 + 25) è definita rigorosamente Un primo calcolatore (a) Figura 1.1 Configurazione del pallottoliere (a) prima e (b) dopo l esecuzione
Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo
Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Istruzioni del processore Abbiamo visto in precedenza alcuni esempi di istruzioni
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
