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

Relevanta dokument
Maskinorienterad programmering

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

Maskinorienterad programmering

Maskinorienterad programmering

Digital- och datorteknik

Digital- och datorteknik

Digital- och datorteknik. Lars-Eric Arebrink. Betyg 4: 36 poäng Betyg 5: 48 poäng

Digital- och datorteknik. Lars-Eric Arebrink. Betyg 4: 36 poäng Betyg 5: 48 poäng

Tentamen. EDA432 Digital och datorteknik IT INN790 Digital och datorteknik GU. Måndag 23 oktober 2006, kl i V-salar

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

TENTAMEN (med svar och vissa lösningar)

Digital- och datorteknik

Digital- och datorteknik. Lars-Eric Arebrink. vid flera tillfällen. Betyg 4: 36 poäng Betyg 5: 48 poäng

Digital- och datorteknik. Lars-Eric Arebrink. Av institutionen utgiven instruktionlista FLEXIBLE INSTRUKTION SET PROCESSOR FLISP

TENTAMEN. Digital- och datorteknik. Institutionen för data- och informationsteknik Avdelningen för datorteknik LEU431. Lars-Eric Arebrink

Digital- och datorteknik. Lars-Eric Arebrink. vid flera tillfällen. Betyg 4: 36 poäng Betyg 5: 48 poäng

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

Assemblerprogrammeringsuppgifter för FLIS-processorn

TENTAMEN(Nu anpassad till FLIS- processorn)

Exempel på tentamen 1

Avbrottshantering. Övningsuppgifter

Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen. Betyg 4: 36 poäng Betyg 5: 48 poäng

TENTAMEN. Digital- och datorteknik E. Institutionen för data- och informationsteknik Avdelningen för datorteknik. Elektro Åk 1/ lp 4 EDA216/DIT790

TENTAMEN (Något redigerad)

Digital- och datorteknik

Digital- och datorteknik

Tentamen. DAT015 Maskinorienterad programmering IT. Fredag 21 april 2006, kl i V-salar

Tentamen. EDA432 Digital- och datorteknik, It DIT790 Digital- och datorteknik, GU. Onsdag 12 Januari 2011, kl

Tentamen. EDA485 Maskinorienterad programmering Z. Måndag 6 mars 2006, kl i V-salar

Digital- och datorteknik

Tentamen. DAT015 Maskinorienterad programmering IT DIT151 Maskinorienterad programmering GU. Tisdag 15 december 2009, kl

Programmering i maskinspråk (Maskinassemblering)

Exempel 3 på Tentamen

Programmering i maskinspråk (Maskinassemblering)

Tentamen i Datakunskap NT

Extrauppgifter för CPU12

Tentamen med lösningsförslag

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

Tentamen med lösningsförslag

Tentamen med lösningsförslag

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Tentamen med lösningsförslag

Tentamen med lösningsförslag

Digital- och datorteknik

LEU240 Mikrodatorsystem

Digital- och datorteknik

CHALMERS TEKNISKA HÖGSKOLA

Assemblerprogrammering del 1

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

EDA Digital och Datorteknik

Tentamen. EDA432 Digital- och datorteknik, IT DIT790 Digital- och datorteknik, GU. Måndag 18 Oktober 2010, kl

Lösningar till tentamen i EIT070 Datorteknik

Digital- och datorteknik

Tentamen med lösningsförslag

Övningsuppgifter i Mikrodatorteknik 4p/5p

Tentamen med lösningsförslag

Facit till övningsuppgifter Kapitel 13 Anslutning av minnes- och I/O-moduler till buss 13-1

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Binär kodning. Binära koder. Tal och talsystem positionssystem för basen 10. Begrepp. Begrepp Tal och talsystem Talomvandling ASCII-kod NBCD Gray-kod

Exempel 2 på Tentamen med lösningar

Tentamen 3. EDAxxx Grundläggande Datorteknik DIT791 Grundläggande Datorteknik, GU. Måndag xx Oktober 20xx, kl

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Exempel 1 på Tentamen med lösningar

Tentamen. EDA452 Grundläggande Datorteknik, D DIT790 Digital- och datorteknik, GU. Måndag 17 December 2012, kl

Assemblerprogrammering

Tentamen (Svar och lösningsförslag)

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

Tentamen med lösningar

EDA451 - Digital och Datorteknik 2009/2010. EDA Digital och Datorteknik 2009/2010. Binär Kodning, lärobokens kap.2

Avbrottshantering. Övningsuppgifter Lösningsförslag Uppgift (Reservation för diverse fel!)

Inledning. Statistisk Programmering. UNIVAC 1107 (sextio- och sjuttiotal) Hålkorten. Att använda dator

PARITETSKONTROLL. Om generatorn i vidstående exempel avkänner ett jämt antal ettor ger den en nolla ut. Detta innebär att överföringen

Assemblerprogrammets struktur; exempel

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

Grundläggande Datorteknik Digital- och datorteknik

Digital- och datorteknik

Tentamen med lösningsförslag

Digital och Datorteknik EDA /2011. EDA 451 Digital och datorteknik 2010/2011. Uppbyggnad_och_funktion.pdf

Stack och subrutiner Programmeringskonventionen

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

Maskinorienterad Programmering 2010/11

EDA215 Digital- och datorteknik för Z

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Programmering Grundkurs (HI1900) Teoridel

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

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

Lösningar till tentamen i EIT070 Datorteknik

Tentamen med lösningsförslag

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

Tentamen med lösningsförslag

Tentamen med lösningsförslag

Tentamen. EDA432 Digital- och datorteknik, It DIT790 Digital- och datorteknik, GU. Måndag 19 oktober 2009, kl

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

Adressavkodning - busskommunikation

Digital- och datorteknik

Programexempel för FLEX

Tentamen. DIT150 Maskinorienterad programmering GU DAT015 Maskinorienterad programmering IT. Söndag 17 december 2006, kl

Lösningar till tentamen i EIT070 Datorteknik

Transkript:

Institutionen för data- och informationsteknik Avdelningen för datorteknik TENTAMEN KURSNAMN Maskinorienterad programmering PROGRAM: Dataingenjör och elektroingenjör åk 1/ lp 3 Mekatronikingenjör åk 2/ lp 3 KURSBETECKNING LEU500 EXAMINATOR Lars-Eric Arebrink TID FÖR TENTAMEN Måndag 2013-03-11 kl 14.00 18.00 HJÄLPMEDEL Av institutionen utgiven Instruktionslista för CPU12 (INS2) Tabellverk eller miniräknare får ej användas. ANSV LÄRARE: Lars-Eric Arebrink tel. 772 5718 besöker tentamen DATUM FÖR ANSLAG av resultat samt av tid och plats för granskning vid flera tillfällen. När rättningen är färdig anslås resultatet med anonyma koder och tid samt plats för granskning på kursens hemsida. Lägg din anonyma kod på minnet! Den används när resultatet anslås. ÖVRIG INFORM. Tentamen omfattar totalt 60 poäng. Onödigt komplicerade lösningar kan ge poängavdrag. Svar på uppgifter skall motiveras. BETYGSGRÄNSER. 24p betyg 3 < 36 p betyg 4 < 48 p betyg 5 SLUTBETYG För godkänt slutbetyg 3, 4 eller 5 på kursen fordras betyg 3, 4 eller 5 på tentamen samt godkända laborationer.

1. Besvara kortfattat följande frågor, som alla utom h) - j) avser CPU12. 2 a) Översätt assemblerinstruktionen JMP $2345 till maskinspråk och visa hur maskinkoden placeras i minnet. (1p) b) Assemblerinstruktionen ORCC #1 kan skrivas som en alternativ assemblerinstruktion. Vilken? (1p) c) Översätt assemblerinstruktionen LDAA -25,X till maskinspråk. Visa hur maskinkoden placeras i minnet. d) En instruktion som har OP-koden på adress 3947 16 har den hexadecimala maskinkoden 04 51 00. Skriv instruktionen med assemblerspråk. (3p) e) Assemblerinstruktionen BNE $1270 har operationskoden på adressen 1300 16. Vad händer när denna instruktion assembleras? För vilka värden W (0 W 255) på minnesordet på adressen Wadr utförs hoppet i f) och g)? f) LDAA #$70 CMPA Wadr BLT Hopp g) LDAA #$70 CMPA Wadr BLO Hopp h) I CAN-system används något som kallas stuffbitar. Vad är detta? Vilken funktion fyller stuffbitarna? i) Enligt standarden IEEE 754 har flyttalstypen double ordlängden 64 bitar (1 teckenbit, 11 bitars karakteriska och 52 bitars fraction) och är uppbyggd på samma sätt som typen float (32 bitar) med formatet s/c/f. Visa approximativt hur många decimala värdesiffror (giltiga siffror) man får vid översättningen av ett flyttal med full upplösning av typen double till decimal form. j) Vad är problemet med att använda principen fully associative för cacheminnen?

2. a) I minnet i ett datorsystem med processorn CPU12 finns ett antal 8-bitars dataord lagrade i en tabell på den kända adressen DTAB och framåt (ökande adress). Tabellen avslutas med talet FF 16. Skriv en subrutin MODIFY i assemblerpråk för CPU12-processorn som inverterar bit 7 och 6, ettställer bit 5 och 4, nollställer bit 3 och 2 samt lämnar bit 1 och 0 oförändrade för alla dataord i tabellen. Slutmarkeringen FF 16 skall inte påverkas. Endast register CC får vara förändrat vid återhopp från subrutinen. För full poäng skall programmet vara korrekt radkommenterat. (4p) 3 b) Skriv ett avsnitt av ett huvudprogram som anropar subrutinen MIX i c) nedan. Blocket med data i minnet som skall bearbetas börjar på den symboliska adressen BLOCK, som antas vara definierad på annat ställe i programmet. Antalet dataord i BLOCK är 120 st. Stackpekaren antas vara initierad i början av programmet. För full poäng skall programavsnittet vara korrekt radkommenterat. c) Skriv en subrutin MIX i assemblerspråk för processorn CPU12, som byter plats på databitarna i ett block i minnet så att b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 ersätts med b 7 b 3 b 6 b 2 b 5 b 1 b 4 b 0 i hela blocket. Vid anrop av subrutinen finns antalet 8-bitars dataord i blocket i B-registret (högst 255 st) och begynnelseadressen i X-registret. Endast flaggregistret får vara förändrat vid återhopp från subrutinen. För full poäng skall programmet vara korrekt radkommenterat. (7p) 3. Ett datorsystem visas nedan: Adressbuss E A 15 -A 0 R/W CS-logik RWM CS-logik ROM CS-logik In/Utportar Processor CPU12 CS R/W RWM CS ROM Indata (8) OE 1 Utdata(8) C Register (8) Databuss Figuren ovan visar principen för anslutning av externa minnesmoduler och externa in-/utportar till processorn CPU12. En 64 kbyte ROM-modul skall i princip vara placerad från adress 0, men de första 256 adresserna i adressrummet skall inte aktivera någon minnesmodul eller port vid läsning eller skrivning. En inport och en utport skall också anslutas. De skall ha samma adress och placeras direkt efter de första 256 adresserna i adressrummet. Det innebär att inporten skall prioriteras före ROM-modulen på denna adress. En 4 kbyte RWM-modul skall placeras med start på adressen F000 16, men de sista 256 adresserna skall användas av ROM-modulen. Rita CS-logiken för minnesmodulerna och portarna. Använd fullständig adressavkodning. Endast grundläggande logikgrindar med valfritt antal ingångar får användas. (8p)

4. En maskin skall styras med hjälp av en dator med processorn CPU12. I samband med detta skall ett 16-bitars värde läsas av var femte sekund på två inportar med adresserna 600 16 och 601 16. Dessutom skall en givare (8 bitar) som är ansluten till en av datorns inportar på adressen 602 16 läsas av var tionde minut. Eftersom datorn normalt är upptagen med beräkningsarbete för maskinstyrningen skall avbrott användas för avläsningarna av inportarna. CS-signalerna till inportarna är ej tillgängliga. Adressintervallet 800 16-8FF 16 är helt tomt, dvs. inga moduler är aktiva i detta intervall. Adressintervallet 3CF0 16-3CFF 16 i RWM är ledigt och kan användas för globala variabler. Det finns en binär signal med den konstanta frekvensen 100 Hz tillgänglig för lämplig användning. a) Föreslå en koppling för avbrottsgenerering på processorns IRQ -ingång. D-vippor med positiv flanktriggning och asynkron resetingång samt standardgrindar med valfritt antal ingångar får användas. Det finns inga andra avbrottskällor i systemet. b) Skriv avbrottsrutinen IRQR som läser av inportarna enligt beskrivningen ovan och placerar 16- bitarsvärdet på adresserna 3CD0 16 och 3CD1 16 och 8-bitarsvärdet värdet på adressen 3CD2 16 i minnet. (4p) c) Skriv ett avsnitt av huvudprogrammet där IRQ-avbrott initieras. IRQ-vektorn antas vara placerad i RWM på adresserna FFF2 16 och FFF3 16. Assemblerspråk för processorn CPU12 skall användas. Radkommentarer skall finnas! 4 5. a) Du använder en korskompilator för HCS12 med följande konventioner för C-funktioner: Inparameterlistan behandlas från höger till vänster, samtliga inparametrar överförs via processorns stack. Lokala variabler som deklareras placeras på stacken i den ordning de deklareras, dvs sist behandlad finns överst i stacken. Övriga lokala variabler placeras också på stacken i den ordning behovet av dem uppstår, dvs. den sista finns överst på stacken. Varje funktion som har lokala variabler inleds med prologen LEAS -?,SP och avslutas med epilogen LEAS?,SP följt av RTS. Returparameter lämnas i D- eller B-registret beroende på storlek. För XCC gäller dessutom: char 8 bitar, short och int 16 bitar, long 32 bitar. Antag att funktionen funca anropas från main och definieras på följande sätt samt att inga övriga lokala variabler behövs: int funca( unsigned char a, unsigned int b ) { int c; char d; unsigned int e;.... } Visa stackens innehåll direkt efter det att funktionens prolog har körts. Platsen för samtliga variabler skall visas.

5. (forts.) 5 b) Översätt C-programmet nedan (main och funcb) till assemblerspråk för CPU12. Visa även stackens innehåll innan do-while -satsen börjar utföras. (Antag att konventionerna i a-uppgiften gäller.) char funcb(char m, char n); char k = 10; void main(){ funcb(3,30); } char funcb(char m, char n) { char j = k; unsigned char i; do for ( i = 0; i < 20; i++ ) j = j + m; while (j <= 100); return j+n; } (7p) c) Vilket talvärde returneras från funktionen funcb? Motivera svaret! (3p)

Assemblerspråket för CPU12. 6 Bilaga 1 Assemblerspråket använder sig av mnemoniska beteckningar som processorkonstruktören MOTOROLA specificerat för maskininstruktioner och instruktioner till assemblatorn, s k pseudoinstruktioner eller assemblatordirektiv. Pseudoinstruktionerna listas i tabell 1. Tabell 1 Direktiv ORG N L RMB N L EQU N L FCB N1, N2 L FDB N1, N2 L FCS ABC Förklaring Placerar den efterföljande koden med början på address N. (ORG för ORiGin = ursprung) Avsätter N bytes i följd i minnet (utan att ge dem värden), så att programmet kan använda dem. Följden placeras med början på adressen L. (RMB för Reseve Memory Bytes) Ger symbolen L konstantvärdet N. (EQU för EQUates = beräknas till) Avsätter en byte för varje argument i följd i minnet. Respektive byte ges konstantvärdet N1, N2 etc. Följden placeras med början på adressen L. (FCB för Form Constant Byte) Avsätter ett bytepar (två bytes) för varje argument i följd i minnet med mest signifikant byte på den lägsta adressen. Respektive bytepar ges konstantvärdet N1, N2 etc. Följden placeras med början på adressen L. (FDB för Form Double Byte) Avsätter en byte för varje tecken i teckensträngen ABC i följd i minnet. Respektive byte ges ASCII-värdet för A B C, etc. Följden placeras med början på adressen L. (FCS för Form Character String) ASCII-koden Tabell 2 7-bitars ASCII 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 b 6 b 5 b 4 b 3 b 2 b 1 b 0 NUL DLE SP 0 @ P ` p 0 0 0 0 SOH DC1! 1 A Q a q 0 0 0 1 STX DC2 2 B R b r 0 0 1 0 ETX DC3 # 3 C S c s 0 0 1 1 EOT DC4 $ 4 D T d t 0 1 0 0 ENQ NAK % 5 E U e u 0 1 0 1 ACK SYN & 6 F V f v 0 1 1 0 BEL ETB 7 G W g w 0 1 1 1 BS CAN ( 8 H X h x 1 0 0 0 HT EM ) 9 I Y i y 1 0 0 1 LF SUB * : J Z j z 1 0 1 0 VT ESC + ; K [Ä k {ä 1 0 1 1 FF FS, < L \Ö l ö 1 1 0 0 CR GS - = M ]Å m }å 1 1 0 1 S0 RS. > N ^ n ~ 1 1 1 0 S1 US /? O _ o RUBOUT (DEL) 1 1 1 1