Exempelsamling Assemblerprogrammering

Relevanta dokument
OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!!

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

4 Sammansatta datatyper

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

2 Pekare och dynamiska variabler.

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012

Enkla datatyper minne

Styrteknik: Binära tal, talsystem och koder D3:1

PROGRAMMERING-Java Omtentamina

Tentamen ges för: Tentamensdatum: Tid:

Digitalteknik och Datorarkitektur

Skizz till en enkel databas

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Lösningar till tentamen i EIT070 Datorteknik

Övning från förra gången: readword

Programmeringsteknik med C och Matlab

Lösningar till tentamen i EIT070 Datorteknik

Föreläsning 11. Strängar

Grundläggande programmering med C# 7,5 högskolepoäng

PROGRAMMERING-JAVA TENTAMINA

Föreläsning 13. In- och utmatning

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs Verónica Gaspes. IDE-sektionen.

tentaplugg.nu av studenter för studenter

D0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut "Hello world" på skärmen.

HI1024 Programmering, grundkurs TEN

Tecken & Strängar. Kapitel 7

Föreläsning 10. Pekare (Pointers)

Föreläsning 4: Poster

En kort text om programmering i C.

Support Manual HoistLocatel Electronic Locks

Tentamen EDAF30 Programmering i C++

F5: Högnivåprogrammering

F5: Högnivåprogrammering

HI1024 Programmering, grundkurs TEN

Hantering av textsträngar och talsträngar. William Sandqvist

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Tentamen i Introduktion till programmering

Planering Programmering grundkurs HI1024 HT 2014

rd, rs, rt Digitalteknik och Datorarkitektur 5hp ALU register) 32 bit register b 5 bit 32 Registers 32 bit MIPS is a Register-toregister

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Föreläsning 8: Aritmetik och stora heltal

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Rekursion och induktion för algoritmkonstruktion

HI1024 Programmering, grundkurs TEN

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Föreläsningsmaterial (Syntax och variabler)

Instuderingsfrågor, del D

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Uppgifter till praktiska tentan, del A. (7 / 27)

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

Deklarera en struct som kan användas för att representera en rät linje

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

PROGRAMMERING-Java TENTAMINA

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Tentamen i Algoritmer & Datastrukturer i Java

Klassdeklaration. Metoddeklaration. Parameteröverföring

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Programmeringsteknik med C och Matlab

Tentamen i Programmering

Tentamen i Grundläggande Programvaruutveckling, TDA548

Lösningsförslag till tentamen FYTA11 Javaprogrammering

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

#include <stdio.h> #include <string.h>

Symboliska konstanter const

Maskinorienterad Programmering /2011. Maskinorienterad Programmering 2010/11. Maskinnära programmering C och assemblerspråk

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

C-programmering. Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

HI1024 Programmering, grundkurs TEN

Transkript:

Exempelsamling Assemblerprogrammering I uppgifterna nedan utgå från följande programskelett: #include<iregdef.h>.data var1:.word 12 var2:.word 19 sum: prod:.float 0.set noreorder.text.globl start.ent start start: #koden läggs här #.end start Uppgift 1 Skriv ett assemblerprogram som adderar talen i var1 och var 2 och lagrar summan i sum. Uppgift 2 Skriv ett assemblerprogram som multiplicerar talen var1 och var2 och lagrar produkten i prod. GÅ INTE VIDARE FÖRRÄN DU LÖST UPPGIFTERNA 2,3 OCH 4 KAP 4 I BOKEN Uppgift 3 Ett program för att översätta ascii-tecken till positiva heltal ser ut enligt följande i C. void main() { char strtal[10]= 1248 ; int resultat=0; int temp; int counter=10; int firsttime=1; temp=strtal[counter]; while(temp!= 0) { temp=temp-48; /* gör om från alfanumeriskt till tal */ if(!firsttime) result=result*10; result=result+temp;

counter--; firsttime=0; temp=strtal[counter]; } } Översätt detta program till assembler och implementera det. Uppgift 4 Modifiera assembler programmet i uppgift 3 så att det även kan hantera negativa heltal. Uppgift 5 Skriv ett assemblerprogram som läser in två tal från tangentbordet och skriver ut summan av dessa på konsolen. Se appendix A för funktioner för in och utmatning. Använd programmet i uppgift 4 som en subrutin för att konvertera inmatningar till siffror. I uppgifterna nedan utgå från följande programskelett: #include<iregdef.h>.data var1: var2: sum: veck:.set noreorder.text.globl start.ent start start: #koden lägs här #.end start Uppgift 6 Skriv ett assemblerprogram som läser in 8 tal från tangentbordet, lagrar dessa i vektorn vekt och skriver ut summan av talen på konsolen. Uppgift 7 Gör ett tillägg till uppgift 6 så att vektorn också skrivs ut på konsolen

Uppgift 8 Skriv ett assemblerprogram som initierar vektorn vek till {1,2,3,5,10,11,4,6}och sedan utför linjärsökning på vektorn baserad på en fråga till användaren. Uppgift 9 Skriv ett assemblerprogram som initierar vektorn vek till {1,2,3,5,10,11,4,6}och sedan sorterar vektorn enligt bubblesort. Till nedanstående uppgifter finns inga skelett utan du måste konstruera dem själv. Uppgift 10 Översätt följande C kod till assembler. #include<stdio.h>; int raisedto(int base, int exponent) { if (exponent== 0) return 1; else return base * raisedto(base, exponent-1); } main() { int inbas,inexp; printf( ange basen : ); scanf( %d,&inbas); printf( ange exponent: ); scanf( %d,&inexp); printf( Resultatet är: %d, raisedto(inbas, inexp)); } Uppgift 11 Kombinera uppgift 6,7 och 8 på ett sådant sätt att linjärsökning och sortering blir separata subrutiner och låt användaren välja om han/hon skall söka eller sortera. Resultatet efter varje val skall skrivas ut på konsolen. Uppgift 12 Gör om uppgift 11 men låt arrayen innehålla pekare till structar av följande typ. struct person{ char namn[14]; int alder; }; Låt användaren söka på namn eller ålder. Om flera personer har samma ålder returneras den första. Uppgift 13 Lös och implementera övningsuppgift 3 i kap 5 i kursboken.

Uppgift 14 (Det är lämpligt att lösa uppgift 5.8.5 i boken innan du löser denna uppgift.) Modifiera programmet i uppgift 4 så att det kan generera en interupt om något otillåtet tecken (inte en siffra eller minustecken) finns i strängen. Uppgift 15 Konstruera ett program i assembler för att hantera länkade listor. Varje nod i den länkade lista skall kunna innehålla ett heltal och en referens till nästa nod i listan. Det skall vara möjligt att ta bort och lägga till noder samt söka efter en viss nod. Utnyttja det faktum att du vet var datasegmentet slutar till att hantera din egen heap.

Appendix A printf Formatted print to standard output (the console). a0 - address to format string a1..a3 - arguments 1..3 (sp+n) - arguments 4..n Switches: Linking a argument to the text is accompliced by inserting a %-sign followed by a character signifying the desired formate of the argument. Example of possible switches: d- argument is formated to a decimal string s- argument is interpreted as an address to an string. f- argument is formated to a float string.asciiz "Number %d of %d" la a0, string1 li a1, 12345 li a2, 67890 jal printf Will print the string "Number 12345 of 67890" to standard output. putchar Print a character to standard output (the console). a0 - character li a0, A jal putchar Will print character A on standard output. getchar

Get a character from standard input (the keyboard). v0 - character puts Print a null-terminated string to standard output (the console). a0 - address to string.asciiz "MIPS is fun!" la a0, string1 jal puts Will print the string "MIPS is fun!" to standard output. gets Get a string from standard input (the keyboard). a0 - address to string v0 - address to string.space 128 la jal a0, string1 gets

. promstrcmp Compare two null-terminated strings. a0 - address to string 1 (s) a1 - address to string 2 (t) v0 - result <0 if s<t, >0 if s>t, 0 if s=t.asciiz "I'm bigger than you are" string2:.asciiz "No, you aren't!" la a0, string1 la a1, string2 jal promstrcmp Register v0 will have a value less than zero. promstrlen Determine the number of characters in a null-terminated string. a0 - address to string v0 - length of the string.asciiz "How long am I?" la a0, string1 jal promstrlen Register v0 will be 14.

install_normal_int Install user exception/interrupt handler. The interrupt handler should return non-zero if it processed the interrupt, otherwise it should return zero. The return value is set in register v0. a0 - address to interrupt handler my_handler: # check if interrupt is NOT for me, if so return 0 li v0, 0 j li v0, 1 j ra ra # otherwise do something useful and return non-zero la jal a0, my_handler install_normal_int fptodp Converts arguments from single precision floating-point to double precision. Needs to be called before passing a floating-point argument to printf. a0 - floating-point argument v0 - msb of double precision v1 - lsb of double precision.asciiz "Number %f" li.s a0, 3.5 jal fptodp la move move jal a0, string1 a1, v0 a2, v1 printf Will print the string "Number 3.5" to the standard output.