1 Aprile Elementi di Architetture e Sistemi Operativi. Esercitazione LC3

Documenti analoghi
Lezione 16: L architettura LC-3

Lezione 13: Il linguaggio assembly di LC-3

Esercitazione 4. Comandi iterativi for, while, do-while

Input/Output di numeri

Architetture dei Calcolatori

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:

Le funzioni, e le istruzioni di input/output

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

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

Stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

Caratteri e stringhe Esercizi risolti

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.

Esercizi per il recupero del debito formativo:

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 04 Input/Output

Excel Base- Lezione 3. Barbara Pocobelli Estav Nord Ovest. Il comando Trova

Laboratorio di Architettura lezione 11. La scorsa lezione. Motivi? Word e bytes

La gestione dei caratteri in C

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

Soluzione/* PROGRAMMAZIONE IN C */ #include <stdio.h> #include <stdlib.h>

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

Lettura da tastiera e scrittura su monitor

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

Sono tipicamente causati da dispositivi hardware. normale flusso di esecuzione viene interrotto, e la CPU passa a gestire l interrupt

Caratteri e stringhe

La rappresentazione delle informazioni

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Esercitazione 12. Esercizi di Ricapitolazione

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Fondamenti di Informatica T-1

Elaborazione dell informazione

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

Variabili e Istruzioni

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Esercizi Programmazione I

Stringhe di caratteri

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Università degli studi di Bergamo. Informatica II. Programmazione Object Oriented Tutorato. Lezione 1. Dott. Marco Guarnieri Dott. Eros Magri

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Elementi di informatica

Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica

Esercitazione n. 3. Dott. Salvatore Pontarelli

1. U.D.A. 1: RIPASSO CONCETTI FONDAMENTALI DEL PROGRAMMA DI SECONDA

I puntatori e l allocazione dinamica di memoria. Esercizi risolti

Guida per l utente agli organigrammi cross-browser di OrgPublisher

Breve riepilogo della puntata precedente:

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Gli Operatori. Università degli Studi di Brescia

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C

Programmazione Assembly per 8088: Esercizi svolti

Lab 10 Passaggio per riferimento

Linguaggio C: introduzione

Gestione dei file. Linguaggio ANSI C Input/Output - 13

Scrittura formattata - printf

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Programmazione I - Laboratorio

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

Laboratorio di programmazione

Introduzione al Linguaggio C

La programmazione nel linguaggio C

Il simulatore SPIM SPIM

Esercizio 1. Progettare la PO a partire dal microprogramma eseguibile e successivamente:

Formalismi per la descrizione di algoritmi

Capitolo 3 Operazioni di ingresso e uscita

Elementi di Architettura e Sistemi Operativi

Elementi di Informatica e Programmazione PPING 20 aprile 2010 Non saranno corretti elaborati scritti confusamente o con grafia difficilmente leggibile

Dati testuali. Caratteri e stringhe. Tipi di dato testuali. Dati testuali. Il sistema dei tipi C. Rappresentazione dei testi

Laboratorio di Programmazione I Compitino (Vers. C)

Lezione 5 Sottoarray di somma massima

Fondamenti di Programmazione

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Informatica 1. Prova di recupero 21 Settembre 2001

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Linguaggio macchina e linguaggio assembler

(A) CONOSCENZA TERMINOLOGICA (B) CONOSCENZA E COMPETENZA

CALCOLATORI ELETTRONICI II

Linguaggio C: Stringhe di caratteri e File

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

Esercizi di programmazione in linguaggio C English Dictionary

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Laboratorio di Algoritmi e Strutture Dati

Algoritmi e basi del C Struttura di un programma

Sistemi Operativi (M. Cesati)

Transcript:

1 Aprile 2016 Elementi di Architetture e Sistemi Operativi Esercitazione LC3 1) Scrivere un programma assembler LC3 che legge una stringa da tastiera, terminata dal tasto invio (enter) lo salva in una variabile stringa (vettore di caratteri) terminata da \0 e successivamente conta quanti caratto è lunga la stringa (ovvero da quanti caratteri è composta \0 escluso).orig X3000 ;Viene chiesto di inserire una stringa ;Trasforma tutti i caratteri maiuscoli in minuscolo AGAIN: LEA R0, STRINGA ; PREDISPONGO LA DOMANDA LEA R3, STRING LD R2, LF ; Load 10 GETC ; Request keyboard OUT ; Stampo il carattere a video ADD R1,R2,R0 ; Test for terminating BRz EXIT ; character ADD R3, R3, #1 BRnzp AGAIN ;... Continuo all'infinito EXIT: LD R0, ZERO ; Termino la stringa letta CONTA: LEA LD LD R0, STRING R2, ZERO R4, ZERO ; CONTA I CARATTERI INICONTA: LDR R1, R0, #0 ADD R3, R1, R2 ; Ho trovato \0 sulla stringa BRz FINECONTA ADD R0,R0,1 ADD R4,R4,1 BRnzp INICONTA FINECONTA: LEA R0, RISPOSTA ; PREDISPONGO LA RISPOSTA LD R1, ZEROCHAR

ADD R0, R4, R1 OUT HALT ; Definizione di variabili STRINGA.STRINGZ "Digitare una parola: " ; Stringa già terminata con \0 RISPOSTA.STRINGZ "La stringa è lunga: " STRING.BLKW 10 x0042 LF.FILL xfff6 ZERO.FILL x0000 ZEROCHAR.FILL 48.END

2) Si modifichi il programma precedente, trasformando in funzione il conteggio della lunghezza della stringa. Il main si dovrà occupare di leggere da tastiera la stringa, invocare la funzione che determina la lunghezza della stringa e successivamente di stampare a video la lunghezza della stringa.

3) Scrivere una funzione LC3 che preso in input in R1 un valore decimale (non espresso in ascii ma proprio decimale/binario) < 10 (0..9) stampi a video il conto alla rovescia da quel valore a 0. Es: in R1=4 STAMPA: 43210 Si scriva inoltre un programma assembler LC3 che legge un numero < 10 (0.. 9) da tastiera, e richiami la funzione scritta in precedenza per stampare a video il conto alla rovescia..orig X3000 AGAIN: AND R1,R1,0 ; Azzero R1 LD R2,ZERONEG ; R2 <= ASCII NEG TRAP x23 ; Request ke yboard ADD R1,R0,0 ; R1 <= R0 ADD R1,R1,R2 ; trasformo il valore ASCII in binario ; ADESSO R1 contiene un valore binari/decimale NON ASCII JSR COUNTDOWN TRAP x25 COUNTDOWN: ADD R6,R7,0 ; Mi salvo il valore di ritorno TRAP Sporca il valore per tornare LD R3,ZEROPOS ; R3 <= ASCII POS INIZIO: ADD R0,R1,R3 ; R1 conntiene il valore in decimale, R3 Contiene il DELTA per ASCII ; Con la SOMMA metto in R0 il valore ASCII da stampare TRAP X21 ; Stampo a video il valore ADD R1,R1,-1 ; Decremento R1 BRZP INIZIO ; fino a che non diventa negativo R1 ADD R7,R6,0 ; Ripristino il return Value RET ZERONEG.FILL -48 ; Codice Ascii 0 da sottrarre ZEROPOS.FILL 48 ; Codice ASCII 0 da sommare UNO.FILL -1 ; Decremena.END

4) Si scriva la funzione LC3 che presa in input in R0 l indirizzo di una stringa, ne faccia il lowercase (ovvero dei SOLI caratteri in maiuscolo, vengano trasformati in minuscolo) la stringa in R0 verrà modificata (non una sua copia) Scrivere inoltre un programma assembler LC3 che legge una stringa da tastiera stampandola a video, terminata dal tasto invio (enter) la salva in una variabile stringa (terminata da \0 ) richiama la funzione tolower (scritta in precedenza) e ristampa la stringa a video..orig X3000 ;Viene chiesto di inserire una stringa ;Trasforma tutti i caratteri maiuscoli in minuscolo AGAIN: LEA R0, STRINGA ; PREDISPONGO LA DOMANDA LEA R3, STRING LD R2, LF ; Load 10 GETC ; Request keyboard OUT ; Stampo il carattere a video ADD R1,R2,R0 ; Test for terminating BRz EXIT ; character ADD R3, R3, #1 BRnzp AGAIN ;... Continuo all'infinito EXIT: LD R0, ZERO ; Termino la stringa letta LEA R0, STRING ; Metto indirizzo in R1 JSR LEA TOLOWER R0,STRING HALT TOLOWER: ;R0 <- Indirizzo Stringa LD R3, ANEG LD R4, ZNEG LD R5, UPLOW iniziow: LDR R1, R0, #0 ; R1 <- STRING[i] BRnz finew ; E' finita la stringa ADD R2, R1, R3 BRn increment ADD R2, R1, R4 BRp increment ; Se il carattere viene prima della A ; Se il carattere viene DOPO della Z ADD R1, R1, R5 STR R1, R0, #0 ; Salvo il carattere modificato increment: ADD R0, R0, #1 ; INCREMENTO IL PUNTATORE BRnzp iniziow

finew: RET ; Definizione di variabili STRINGA.STRINGZ "Digita una frase (Invio per terminare): " ; Stringa già terminata con \0 STRING.BLKW 20 ;CARATTERE.STRINGZ "Digita il caratere da cercare: " LF.FILL xfff6 ASCII.FILL 48 ZERO.FILL 0 UPLOW.FILL 32 ANEG.FILL xffbf ; -65 -A ZNEG.FILL xffa6 ; -90 -Z.END

5) Si scriva la funzione LC3 che presa in input in R0 l indirizzo di una stringa (terminata da \0 ) la inverta (sempre nella medesima stringa) Es ciao -> oaic Scrivere inoltre un programma assembler LC3 che legge una stringa da tastiera stampandola a video, terminata dal tasto invio (enter) la salva in una variabile stringa (terminata da \0 ) richiama la funzione invert (scritta in precedenza) e ristampa la stringa a video.