7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.



Relevanta dokument
Övningsuppgifter i Mikrodatorteknik 4p/5p

F4: Assemblerprogrammering

Digital- och datorteknik

Lösningsförslag till Tenta i Mikrodator

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

Lösningsförslag till Tenta i Mikrodator

Tentamen. Datorteknik Y, TSEA28

Tentamen Datorteknik Y, TSEA28 Datum

Tentamen. Datorteknik Y, TSEA28

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Digital- och datorteknik

Programexempel för FLEX

Stack och subrutiner Programmeringskonventionen

F8: Undantagshantering

Tentamen Datorteknik D del 2, TSEA49

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Digital- och datorteknik

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Tentamen Datorteknik Y, TSEA28 Datum TER2, TER4, TERE Tid 14-18

Tentamen. Datorteknik Y, TSEA28

Datorsystem Laboration 2: Minnesmappade bussar

LEU240 Mikrodatorsystem

TSEA28 Datorteknik Y (och U)

Assemblerprogrammering del 3

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

Övning2 Datorteknik, HH vt12 - Programmering

TSEA28 Datorteknik Y (och U)

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Institutionen för elektro- och informationsteknologi, LTH

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

Föreläsningsunderlag TSEA82 Datorteknik D TSEA57 Datorteknik I

Digital- och datorteknik

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

Tentamen. Datorteknik Y, TSEA28

Laboration Datorteknik TSIU02 2. I/O-programmering

Assemblerprogrammering

EDA215 Digital- och datorteknik för Z

CE_O1. Nios II. Enkla assembler-instruktioner.

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

Föreläsningsanteckningar 3. Mikroprogrammering II

TSEA28 Datorteknik Y (och U)

Programmering av Motorola TSIU02 Datorteknik

Föreläsningsanteckningar 2. Mikroprogrammering I

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. Lars-Eric Arebrink

Att använda pekare i. C-kod

Tentamen (Exempel) Datorteknik Y, TSEA28

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

A-del motsvarande KS1

Digital- och datorteknik

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

Grunderna i stegkodsprogrammering

Lösningar till tentamen i EIT070 Datorteknik

3. Mikroprogrammering II

TSEA28 Datorteknik Y (och U)

Institutionen för datavetenskap 2014/15

Lösningar till tentamen i EIT070 Datorteknik

LABORATION. Datorteknik Y Datorkonstruktion D

Objektorienterad programmering D2

Assemblerprogrammering för ARM del 2

Extrauppgifter för CPU12

Assemblerprogrammeringsuppgifter för FLIS-processorn

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Digital- och datorteknik

Styrenheten styrsignalsekvenser programflödeskontroll

CE_O3. Nios II. Inför lab nios2time

Assemblerprogrammets struktur; exempel

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Maskinorienterad Programmering 2010/11

Tentamen. Datorteknik Y, TSEA28

16 Programmering TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Kontrollskrivning Mikrodatorteknik CDT S2-704

Maskinorienterad programmering

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen.

Tentamen (Exempel) Datorteknik Y, TSEA28

Digital- och datorteknik

Laboration 2 i Datorteknik- Assemblerprogrammering II

Lösningsförslag tenta

Digital- och datorteknik. Mekatronik-, data- och elektroingenjör Åk 1/ lp 1o2. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Exempel 3 på Tentamen

CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io.

Tentamen. EDA485 Maskinorienterad programmering Z DAT015 Maskinorienterad programmering IT. Tisdag xx yyyy 2006, kl

Tentamen TEN1 HI

Omtentamen i CDT204 - Datorarkitektur

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

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

Datorsystemteknik DVGA03 Föreläsning 5

Maskinorienterad programmering

Transkript:

1(5) Övningstentamen i Mikrodatorer och assemblerprogrammering, ELGA05 Hjälpmedel: Bifogad lista med memokoder för MC68xxx. Samtliga programmeringsuppgifter ska innehålla flödesschema med förklaringar och programkod med kommentarer. På övriga gäller: -motivering krävs för poäng Lösningarna skall förses med figurer och förklaringar så att de är lätta att följa. Observera att det är många fler frågor på övningstentan än på den riktiga. Det kommer att bli två-tre frågor på varje avsnitt. Allmänna frågor: 1a) Ett assemblerprogram byggs upp av kod, data och assemblerdirektiv. Beskriv kortfattat skillnaden mellan hur kod och assemblerdirektiv används vid assemblerprogrammering. b) Ge två exempel på olika assemblatordirektiv. 2a) Skriv en programrad som ettställer bit nr 0, nr 5 och nr 20 i dataregister D0. Registrets alla övriga bitar ska lämnas opåverkade. b) Skriv kod (högst 2 rader) som inverterar de 8 högsta och nollställer de 8 lägsta bitarna i register D3. Övriga bitar ska vara oförändrade. 3a) Motorola 68340 har ett antal olika flaggor. Nämn 3 av dessa, och beskriv när de ettställs. b) Antag att samtliga flaggor är ställda som följer: C=0, V=0, N=1, Z=1 Skriv en eller ett antal instruktioner som nollställer Z-flaggan och N-flaggan. Övriga flaggor får ej påverkas (=> 0 poäng). c) Antag att samtliga flaggor är ställda som följer: C=0, V=0, N=1, Z=1 Beskriv vilka flaggor som ändras och vilka som inte ändras, då nedanstående program exekverats. MOVE.B #$FF, D0 ADDI.B #$FF, D0 4) Antag att samtliga flaggor är nollställda före följande sekvens utförs. Vad har N, V, Z och C-flaggan för värde efteråt? a) MOVE.B #$7F, D0 ADDI.B #$0F, D0 b) MOVE.B #$00, D0 SUBI.B #$0A, D0 c) MOVE.L #$FF, D0 ADDI.L #$FF, D0 5) Skriv en bit-test som avgör om ett tal i D0 är ett udda tal. Talet i D0 är 32-bitar stort. 6) Tabellen (array) tal är definierad som: tal: DC.B 1,2,3,4 Nollställ tabellen med hjälp av endast en instruktion. 7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

2(5) Analys av programkod: 1) När nedanstående kod simuleras eller körs på kortet kommer programmet att spåra ur. Varför, d.v.s. vad är fel i nedanstående kod? main: JMP subrutin1 BRA main subrutin1: NOP RTS 2) En av nedanstående programrader (A eller B) kommer inte att fungera. Vilken och varför? (motivering krävs för poäng) org $4000 move.l (data1).l,d0 (A) move.w (data2).l,d0 (B) org $5005 data1 dc.b 1 data2 dc.b 2 data3 dc.b 3 data4 dc.b 4 3) Vilka värden på nn gör att programmet hoppar till hopp? Motivering krävs vad BMI gör. Svara i hexadecimal- eller binär form. MOVE.B #$nn,d0 BMI hopp BRA start hopp: NOP BRA hopp 4) Vilken 32-bitars adress avses med följande instruktion? MOVE.W ($8034).W,D0 5) Ett minne är initierat enligt tabell. Vad är innehållet i register D2 efter att följande instruktionsföljd exekverats? Tabell $5000 $14 $5001 $15 $5002 $16 $5003 $17 $5004 $18 $5005 $19 $5006 $1A $5007 $1B $5008 $1C $5009 $1D MOVE.L #$2,D0 MOVEA.L #$5000,A0 MOVE.W (2,A0,D0),D2

3(5) 6a) Till vilken etikett hoppar programmet, och varför, vid följande exekvering? MOVE.B #$9B,D0 CMPI.B #$08,D0 BLE hopp1 BRA hopp2 b) Till vilken etikett hoppar programmet, och varför, vid följande exekvering? MOVE.B #$F1,D0 ROR.B #$1,D0 BCS hopp1 BRA hopp2 7) Nedanstående program gör någonting. Tyvärr glömde författaren att skriva in kommentarer om vad programmet gör. Beskriv vad programmet gör. (Dock ej rad för rad). ORG $4000 Main: MOVEA.L #tabell_1,a0 MOVEA.L #tabell_2,a1 MOVEA.L #tabell_3,a2 MOVEA.L #tabell_4,a3 MOVEA.L #tabell_5,a4 BSR sub forever: BRA forever sub: MOVE.B (A0),D3 CMPI.B #$00,D3 BEQ sub_exit ADDA.L #1,A0 BSR sub sub_exit: MOVE.B -(A0),(A4)+ RTS tabell_1: DC "gnirdnav" tabell_2: DC.B $00 tabell_3: DC "dels" tabell_4: DC.B $00 tabell_5: DS.B 30

4(5) Stacken, stackhantering och avbrott: 1) Beskriv vad stacken är och vad den används till. 2) Beskriv hur stacken används vid ett subrutinanrop. Ge exempel. 3) Hur ser stacken ut när programmet kommer till etiketten A, innan instruktionen RTS har exekverats? Antag att stackpekaren står på $8000 vid programstarten main. Redovisa stacken med två kolumner, en som visar stackadressen och en som visar stackinnehållet. En byte per rad. (i svåraste laget?) 00004000 2. ORG $4000 3. 00004000 3F39 0000 4044 4. main: MOVE.W (svar).l,-(sp) 00004006 2F3C 0000 4040 5. MOVE.L #var1,-(sp) 0000400C 2F3C 0000 4042 6. MOVE.L #var2,-(sp) 00004012 4EB9 0000 402A 7. JSR subrutin1 00004018 302F 0008 8. MOVE.W (8,SP),D0 0000401C 33C0 0000 4044 9. MOVE.W d0,(svar).l 00004022 DFFC 0000 000A 10. ADDA.L #10,SP 00004028 60FE 11. loop: BRA loop 12. 0000402A 13. subrutin1: 0000402A 4CEF 0300 0004 14. MOVEM.L (4,SP),A0-A1 00004030 203C 0000 0000 15. MOVE.L #0,D0 00004036 D050 16. ADD.W (A0),D0 00004038 D051 17. ADD.W (A1),D0 0000403A 3F40 000C 18. MOVE.W D0,(12,SP) 0000403E 4E75 19. A: RTS 20. 00004040 0041 21. var1 DC.W $0041 00004042 0001 22. var2 DC.W $0001 00004044 0000 23. svar DC.W $0000 4) Beskriv de båda avbrottsmetoderna autovektoravbrott och vektoravbrott så att skillnaderna klart framgår. Programmeringsuppgifter: 1) Skriv en subrutin som beräknar antalet 1:or i dataregister D3. Antalet returneras via dataregister D5. 2) Skriv en subrutin BER som beräknar X-Y. Registren D0 och D1 innehåller talen och resultatet ska levereras i D2. 3) En subrutin använder registren D0-D2 och A0. Skriv de rader i subrutinen som behövs för att huvudprogrammet inte ska påverkas.

5(5) 4) Skriv en subrutin som beräknar summan av 8 stycken tal som finns lagrade i en tabell. Tabellen ska användas vid beräkning. Resultatet ska lagras i variabeln summa. tal: DC.B 1, -2, 3, 5, -8, 4, 3, 2 summa: DC.B 0 5) Ett bevakningssystem styr motorn på en kamera. Samma system har också en digital ingång som varnar för brand. Om brand uppstått ska systemet automatisk ringa 112. Ett sätt att skriva en sådan kontroll är att hela tiden kontrollera om ingången för brandlarmet löst ut, vilket är tämligen ineffektivt. Föreslå ett annat, mer effektivt sätt att anropa en programbit som ringer upp 112 i händelse av brand. 6) Skriv en subrutin som utför följande algoritm: Läs inport Översätt inport enligt tabell (invärde till utvärde) Om värdet finns, skriv ut det översatta värdet till utporten. Om värdet ej finns, skriv värdet 255 till utporten Med tanke på tabellens storlek, ska översättningen göras med hjälp av en tabell i minnet (RWM) och inte med ett antal villkorliga hopp. Tabell 1: in ut 0 36 20 52 38 88 50 100 60 102 85 127 100 153 150 200 175 225 övriga värden 255 + ev uppgifter från labbarna!