Maskinorienterad programmering

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

Maskinorienterad programmering

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

Maskinorienterad programmering

Digital- och datorteknik

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

Digital- och datorteknik

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

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

TENTAMEN (med svar och vissa lösningar)

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

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

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

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

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

TENTAMEN(Nu anpassad till FLIS- processorn)

Exempel på tentamen 1

Assemblerprogrammeringsuppgifter för FLIS-processorn

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)

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

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

Digital- och datorteknik

Tentamen med lösningsförslag

Digital- och datorteknik

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

Digital- och datorteknik

Tentamen i Datakunskap NT

Digital- och datorteknik

Tentamen med lösningsförslag

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

Tentamen med lösningsförslag

Tentamen med lösningsförslag

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

Exempel 3 på Tentamen

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

CHALMERS TEKNISKA HÖGSKOLA

Tentamen med lösningsförslag

Programmering i maskinspråk (Maskinassemblering)

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

Extrauppgifter för CPU12

Tentamen med lösningsförslag

LEU240 Mikrodatorsystem

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

Assemblerprogrammering del 1

EDA Digital och Datorteknik

Tentamen med lösningsförslag

Programmering i maskinspråk (Maskinassemblering)

Övningsuppgifter i Mikrodatorteknik 4p/5p

Lösningar till tentamen i EIT070 Datorteknik

Exempel 2 på Tentamen med lösningar

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

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

Digital- och datorteknik

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

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

Tentamen med lösningsförslag

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

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

Assemblerprogrammets struktur; exempel

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

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

Tentamen (Svar och lösningsförslag)

Exempel 1 på Tentamen med lösningar

Maskinorienterad Programmering 2010/11

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

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

Programmering Grundkurs (HI1900) Teoridel

Tentamen med lösningar

Adressavkodning - busskommunikation

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

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

EDA215 Digital- och datorteknik för Z

2 UPPBYGGNAD OCH FUNKTION

Grundläggande Datorteknik Digital- och datorteknik

Tentamen med lösningsförslag

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

Stack och subrutiner Programmeringskonventionen

Tentamen med lösningsförslag

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

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

Tentamen med lösningsförslag

Assemblerprogrammering

LV6 LV7. Aktivera Kursens mål:

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

Digital- och datorteknik

Tentamen med lösningsförslag

Digital- och datorteknik

Tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Assemblerprogrammering del 3

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

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Digital- och 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 2012-03-05 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 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. 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 i) - k) avser CPU12. 2 a) Översätt assemblerinstruktionen LDY $4000 till maskinspråk och visa hur maskinkoden placeras i minnet. (1p) b) En instruktion har den hexadecimala maskinkoden 18 03 24 18 FF F2. Skriv instruktionen med assemblerspråk. c) Assemblerinstruktionen ANDCC #$EF kan skrivas som en alternativ assemblerinstruktion. Vilken? d) Översätt assemblerinstruktionen STD 4,X till maskinspråk. Visa hur maskinkoden placeras i minnet. e) Assemblerinstruktionen DBEQ X,$1580 har operationskoden på adressen 1600 16. Visa hur maskinkoden placeras i minnet. På vilken adress utförs nästa instruktion om X-registret från början innehåller värdet 5? f) Vid IRQ-avbrott sätts I-flaggan automatiskt till 1. Varför sker detta? (1p) För vilka värden W (0 W 255) på minnesordet på adressen Wadr utförs hoppet i g) och h)? g) LDAA #$87 CMPA Wadr BGT Hopp h) LDAB #$AA ADDB Wadr BHI Hopp i) När CAN-noder kopplas in till en buss så ser man till att logikvärdet 0 dominerar över logikvärdet 1. Förklara vad detta innebär och varför det är nödvändigt. j) Skriv talet -130,125 som ett packat flyttal på binär och hexadecimal form enligt IEEE-standard 754 (23 bitar av mantissan och 8 bitars karakteristika). k) Varför är inte flash -minnen lämpliga att använda som RWM i en dator?

2. a) I minnet i ett datorsystem med processorn CPU12 finns ett antal 8-bitars dataord lagrade i en tabell på adressen DTAB och framåt (ökande adress). Tabellen avslutas med talet FF 16. Skriv en subrutin TEST i assemblerpråk för CPU12-processorn som tar reda på hur många av dataorden som har värdet 1 i bitpositionerna 5, 2 och 1 samt värdet 0 i bitpositionerna 6 och 3. Antalet dataord i tabellen som uppfyller detta skall finnas i D-registret vid återhopp. Endast register D och register CC får vara förändrade vid återhopp från subrutinen. (5p) 3 b) Skriv en subrutin TURN som vänder på bitarnas ordningsföljd i register A så att bit 7 blir bit 0, bit 6 blir bit 1, bit 5 blir bit 2 osv. enligt nedan: b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7. Vid anrop av subrutinen skall dataordet som skall vändas finnas i register A och vid återhopp skall det vända dataordet finnas i samma register. Endast A-registret och flaggregistret får vara förändrade vid återhopp. 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. I detta fall skall halva adressrummet med start på adress 0 i princip fyllas ut med en 32 kbyte RWMmodul och andra halvan med en 32kbyte ROM-modul, men på vissa adresser skall in- och utportar och en 4 kbyte RWM-modul vara placerade. Dessutom skall de första 100 16 adresserna inte aktivera någon port eller minnesmodul vid läsning eller skrivning. 4kbyte RWM-modulen skall vara placerad inom ROM-modulens adressområde med start på adress C000 16. En inport och en utport skall placeras på adressen 100 16. Rita CS-logiken för minnesmodulerna och portarna. Ange adressintervallen för minnesmodulerna. Använd fullständig adressavkodning. Endast grundläggande logikgrindar med valfritt antal ingångar får användas. (8p)

4 4. En process skall styras med hjälp av en dator med mikroprocessorn CPU12. I samband med detta skall en flödesgivare som är ansluten till en av datorns inportar på adressen 600 16 läsas av en gång per minut. Det avlästa värdet är ett 8-bitars tal utan inbyggt tecken och är ett mått på flödet i en rörledning. Eftersom datorn normalt är upptagen med beräkningsarbete för processtyrningen skall avbrott användas för avläsningen av flödesgivaren. CS-signalen till inporten finns ej tillgänglig. Adressintervallet 400 16-4FF 16 är helt tomt, dvs. inga moduler är aktiva i detta intervall. Adressintervallet 2FF0 16-2FFF 16 i RWM är ledigt och kan användas för globala variabler. Det finns en binär signal med den konstanta frekvensen 50 Hz tillgänglig för generering av avbrott. a) Föreslå en koppling för avbrottsgenerering på processorns IRQ -ingång. En D-vippa 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 flödesgivaren en gång per minut och placerar det avlästa värdet på adressen CF00 16 i minnet. 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! (4p) 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, char b, unsigned long c ) { char d; int e; unsigned long f;.... Visa stackens innehåll direkt efter det att funktionens prolog har körts. Platsen för samtliga variabler skall visas. (3p)

5. (forts.) 5 b) Översätt C-programmet nedan (main och funcb) till assemblerspråk för CPU12. Visa även stackens innehåll innan while-satsen börjar utföras. (Antag att konventionerna i a-uppgiften gäller.) char funcb(unsigned char var1,char var2); void main(){ funcb(100,2); char funcb(unsigned char var1, char var2){ unsigned char i = 2; char j = -1; while( j <= var2) if(i < var1) i = i + 75; else{ j = j + 2; i = i + 20; return i; (6p) c) Vilket vä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