Maskinorienterad programmering

Relevanta dokument
Maskinorienterad programmering

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

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

Maskinorienterad programmering

Digital- och datorteknik

TENTAMEN (med svar och vissa lösningar)

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

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. Mekatronik-, data- och elektroingenjör Åk 1/ lp 1o2. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen

Digital- och datorteknik

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

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

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

Avbrottshantering. Övningsuppgifter

TENTAMEN(Nu anpassad till FLIS- processorn)

Assemblerprogrammeringsuppgifter för FLIS-processorn

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

Exempel på tentamen 1

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

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

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

Digital- och datorteknik

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

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

Tentamen i Datakunskap NT

Digital- och datorteknik

Programmering i maskinspråk (Maskinassemblering)

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

Exempel 3 på Tentamen

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

Digital- och datorteknik

Programmering i maskinspråk (Maskinassemblering)

CHALMERS TEKNISKA HÖGSKOLA

LEU240 Mikrodatorsystem

Tentamen med lösningsförslag

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 3. EDAxxx Grundläggande Datorteknik DIT791 Grundläggande Datorteknik, GU. Måndag xx Oktober 20xx, kl

Extrauppgifter för CPU12

Tentamen med lösningsförslag

EDA Digital och Datorteknik

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

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

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

Tentamen med lösningar

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

Tentamen med lösningsförslag

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

Exempel 1 på Tentamen med lösningar

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

Övningsuppgifter i Mikrodatorteknik 4p/5p

Lösningar till tentamen i EIT070 Datorteknik

Digital- och datorteknik

Tentamen (Svar och lösningsförslag)

Digital- och datorteknik

Tentamen med lösningsförslag

Grundläggande Datorteknik Digital- och datorteknik

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

Assemblerprogrammering del 1

EDA215 Digital- och datorteknik för Z

Exempel 2 på Tentamen med lösningar

Digital- och datorteknik

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

Högskolan i Halmstad Digital- och Mikrodatorteknik 7.5p. Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

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

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

Tentamen med lösningsförslag

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

Tentamen med lösningsförslag

Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Adressavkodning - busskommunikation

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

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Lösningsförslag tenta

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

Assemblerprogrammering

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

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

Programmering Grundkurs (HI1900) Teoridel

Stack och subrutiner Programmeringskonventionen

Tentamen med lösningsförslag

F5: Högnivåprogrammering

F5: Högnivåprogrammering

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

Lösningar till tentamen i EIT070 Datorteknik

Programexempel för FLEX

Lösningsförslag till Tenta i Mikrodator

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

LV6 LV7. Aktivera Kursens mål:

Assemblerprogrammets struktur; exempel

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

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-08-27 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 772 5718 besöker tentamen vid flera tillfällen DATUM FÖR ANSLAG av resultat samt av tid och plats för granskning När rättningen är färdig anslås resultatet med anonyma koder och tid för granskning på kursens hemsida. ÖVRIG INFORM. Lägg din anonyma kod på minnet. Den används när resultatet anslås! 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 j) - m) avser CPU12. 2 a) Översätt assemblerinstruktionen EXG SP,Y till maskinspråk och visa maskinkoden i minnet. b) Vilken assemblerinstruktion har den hexadecimala maskinkoden 18 07? c) En instruktion med den hexadecimala maskinkoden 0F F2 42 3A 07 60 är placerad med operationskoden på adressen 1800 16. Skriv instruktionen med assemblerspråk. d) Assemblerinstruktionen LSLA kan skrivas som en alternativ assemblerinstruktion. Vilken? e) Översätt assemblerinstruktionen COM -$90,X till maskinspråk. Visa maskinkoden i minnet. f) Assemblerinstruktionen LBNE $8000 har operationskoden på adressen 1500 16. Visa maskinkoden i minnet. För vilka värden W (0 W 255) utförs hoppet i g) och h)? g) LDAA #$50 SUBA #W BHI Hopp h) LDAB #W ADDB #$50 BPL Hopp (Tänk på att overflow kan inträffa!) i) Processorn CPU12 använder en 16-bitars adressbuss, men kan ändå använda mera arbetsminne än 64 kbyte. Vad kallas denna princip? Förklara kortfattat hur detta går till. j) Vilken är den principella skillnaden mellan synkron och asynkron seriell överföring av data? k) Förklara vad som menas med frame i samband med asynkron seriell överföring av data. l) I ett styrsystem är ett antal CAN-noder sammankopplade med en buss där logikvärdet 0 dominerar. Vid ett tillfälle blir fyra av noderna samtidigt färdiga att sända var sitt meddelande med identifierarna 635A 16, 636B 16, 6343 16 och 63FF 16. Visa i vilken ordning meddelandena sänds. Visa också hur det går till när det avgörs i vilken ordning meddelandena sänds. m) Visa approximativt det decimala värdet för det största och det minsta (ej talet 0) positiva flyttalet med full upplösning enligt IEEE-standard 754-1985 (23 bitar av mantissan och 8 bitars karakteristika).

2. a) Skriv en subrutin EPTST i assemblerspråk för CPU12, som söker igenom en nollterminerad textsträng med ASCII-tecken i minnet och kontrollerar att paritetsbiten (b 7 ) för jämn paritet är korrekt. Jämn paritet innebär att kodordet inklusive paritetsbiten har ett jämnt antal ettor. Vid anrop av subrutinen skall startadressen till textsträngen finnas i X-registret. När ett paritetsfel upptäcks skall återhopp göras direkt med C-flaggan ettställd och adressen till det felaktiga tecknet i X-registret. Om textsträngen är felfri skall återhopp göras med C-flaggan nollställd. Vid återhopp får endast flaggregistret och X-registret vara förändrat. Du får använda en färdig subrutin, ACNT, som räknar antalet ettor i A-registret och returnerar detta antal i A-registret. Subrutinen ACNT påverkar endast flaggorna och A-registret. (7p) b) Skriv ett huvudprogram som sätter stackpekaren till värdet 2000 16, anropar subrutinen EPTST och sedan hoppar till adressen 1400 16. Textsträngen, med ett innehåll som du själv bestämmer, skall placeras direkt efter huvudprogrammet. Den skall placeras i minnet när huvudprogrammet laddas i minnet. Huvudprogrammets startadress skall vara 1000 16. 3 Assemblerspråk för CPU12 skall användas. För full poäng skall programmen vara korrekt radkommenterade. 3. Ett datorsystem visas nedan: Adressbuss E A 15 -A 0 R/W RWM ROM 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 minnesmoduler och in-/utportar till processorn CPU12. Hela adressrummet skall i princip fyllas ut med en 64 kbyte ROM-modul, men på vissa adresser skall in- och utportar och en 8 kbyte RWM-modul vara placerade. Dessutom skall de första 1000 16 adresserna inte aktivera någon port eller minnesmodul vid läsning eller skrivning. RWM-modulen skall ha startadressen 8000 16. Två inportar och två utportar skall placeras på adresserna 4000 16 och 4001 16. Rita en 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. (6p)

4 4. Avbrottssystemet i CPU12 skall användas till att köra två olika program, Prog_0 och Prog_1, pseudoparallellt. Programmen som utgörs av evighetsslingor har startadresserna 1000 16 resp. 8000 16. De använder var sin stack med BOS på adresserna 7000 16 resp. F000 16. En händelsedetektor som genererar en binärpuls vid varje händelse skall också ge avbrott. Vid varje sådant avbrott skall en 16- bitars variabel EVENT i minnet ökas med ett. Man har tillgång till en digital binär signal med frekvensen 200 Hz. En oanvänd inport som får användas finns på adressen INPORT. CS-signalen för inporten är inte tillgänglig. a) Rita ett kopplingsschema som visar hur man dels kan generera avbrott med frekvensen 200 Hz och dels då pulser kommer från händelsedetektorn. Det får förutsättas att adressområdet 7FF0 16 7FFF 16 är tomt. Det finns inga övriga avbrottskällor att ta hänsyn till i systemet! Processorns IRQ - ingång skall användas. D-vippor, AND-, NAND och NOT-grindar får användas. b) Prog_0 inleds med en del som bara körs vid starten och fortsätter sedan med en evighetsslinga. I den första delen av Prog_0 görs nödvändiga initieringar av avbrottssystemet för de två avbrottskällorna och för processbytet vid varje 200Hz-avbrott. Det förutsätts att systemet startar med reset av processorn och att Prog_0 då startas. Skriv programmet Prog_0. Utrymme för globala variabler finns på adresserna 7E00 16-7E0F 16. IRQ-vektorn finns i ett flyktigt minne på adresserna FFF2 16 och FFF3 16. (4p) c) Skriv avbrottsrutinen som uppdaterar variabeln EVENT och utför processbyte. (4p) Adressen INPORT ovan är definierad på annat ställe i programmet. Assemblerspråk för processorn CPU12 skall användas. Radkommentarer skall finnas! 5. Du använder korskompilatorn XCC för CPU12, som har följande konventioner för C-funktioner: Inparameterlistan behandlas från höger till vänster och 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 (16- eller 8-bitars) 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. a) Översätt hela C-programmet till höger till assemblerspråk för CPU12. Visa även hur stacken ser ut när for-satsen börjar utföras. (6p) b) Vilket värde returneras från funktionen func? Motivera svaret! char func(char xx, char yy); char z = 0x60; void main(){ func(10,20); } char func(char x, char y){ char i; for ( i = 0; i <= 15; i = i + 3) if(i < x) y = z + y; return y; }

Assemblerspråket för CPU12. 5 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