Föreläsningsunderlag TSEA82 Datorteknik D TSEA57 Datorteknik I

Storlek: px
Starta visningen från sidan:

Download "Föreläsningsunderlag TSEA82 Datorteknik D TSEA57 Datorteknik I"

Transkript

1 Föreläsningsunderlag TSEA82 Datorteknik D TSEA57 Datorteknik I Michael Josefsson Anders Nilsson (korrektur 2014, 2015) version 2015

2

3 Innehåll 0. Introduktion Kurslitteratur Övrig information Kursupplägg Modelldatorn Blockschema Exempel Modelldatorns arkitektur Modelldatorns innehåll och arbetsgång Instruktioner och adresseringsmoder Ytterligare instruktioner Villkorsinstruktioner Exempel Statusregister Hoppinstruktioner Större adressrymd Större instruktionsbredd Variabelt instruktionsformat Ytterligare instruktioner Adresseringsmoder Underförstådd (implied) adressering Exempel Omedelbar (immediate) adressering Exempel Absolut (absolute) adressering Exempel Indirekt absolut (indirect absolute) adressering Exempel Absolut indexerad (absolute indirect) adressering Exempel Relativ (relative) adressering Exempel Exempelprogram Subrutiner och stackar Processorarkitektur Harvard/von Neumann Von Neumann

4 Innehåll Harvard Subrutiner Andra stackfunktioner Stackmodeller Sist i minnet växer mot lägre adresser Sist i minnet växer mot högre adresser Mitt i minnet Vanliga stackfel Varning 1: Felaktig/ingen returaddress Varning 2: Stack overflow Några riktiga processorer M Instruktioner, instruktioner Motorola en verklig processor Registeruppsättning Variabla operandstorlekar Minnesbredd Exempel Automatisk teckenutvidgning (sign expansion) Instruktioner Instruktionen i datablad Assembler, äntligen Adresseringsmoder Register Omedelbar Exempel Absolut Exempelprogram I Exempel Exempel Ytterligare adresseringsmoder Indexerad (Motorola: Register Indirect) Indexerad med förskjutning Indexerad med postinkrement och samma med predekrement Exempelprogram II Exempel Register indirect with index and displacement Subrutiner i Exempel Något att fundera över Avbrott, i allmänhet Vem avbröt mig? Pollning Daisy-chain Avbrott i Avbrott eller inte avbrott

5 Innehåll 5. Binär aritmetik I Talbaser Addition Exempel Exempel Talrepresentationer Exempel Basen Exempel Höger- och vänsterskift Omvandling från binär till decimal form och tvärtom Exempel Hexadecimal representation Omvandling binär till hexadecimal form Exempel Olika skrivsätt Omvandling hexadecimal till decimal form Exempel Negativa binära tal Tecken-belopprepresentation Exempel Exempel komplement Exempel komplement Exempel Två anmärkningar Exempel Enkla operationer. Addition och skift Ett hjälpmedel: cirkulärgrafen Exempel Spill Hårdvara D/A- och A/D-omvandlare Inledning D/A-omvandlare Omvandlare med resistorstege Belastningsimpedansens inverkan Felkällor A/D-omvandlare Flash-omvandlaren Approximerande omvandlare Omvandlare med successiv approximation Sample & Hold Exempel Differentiella ingångar Felkällor

6 Innehåll 7. Binär aritmetik II multiplikation Multiplikation snitsigare metod Matematisk beskrivning av metoden Men tvåkomplement då? Utökat talområde Exempel Spillkompensering av (a + b)/ Metod 1 Med utökat talområde Exempel Metod 2 Utan utökat talområde Exempel Robertsons algoritm Exempel A. Robertsons algoritm 97 Exempel Metod 2 genom användning av spillflaggan Exempel Exempel

7 0. Introduktion I denna föreläsning bl. a.: presentation av kursen, modelldatorn, algoritm, flödesschema, operationer, instruktioner, instruktionsformat, register, minne, programmerarmodell. Välkomna! Jag hoppas att det här kommer att bli en nyttig och rolig kurs. Det är inte varje dag man får möjlighet att titta in under skalet på en dator och det är definitivt inte varje dag (eller kurs heller för den delen) man tillåts studera exakt hur digitalteknik och datorteknik hör ihop. Detta är första delen av ett större kurspaket som fortsätter med TSEA83, Datorkonstruktion och på sätt och vis avslutas i projektkursen TSEA29 Konstruktion med mikrodatorer. Tidigare har de två första delarna varit innehållna i en egen kurs men fortsättningskursens prägel, att verkligen konstruera en dator, motiverar nuvarande uppdelning. För att få ut största möjliga nöje ur kursen måste man ha sin digitalteknik i ganska fräscht minne. Den är grunden och utan den kommer vissa delar av den här kursen att kanske verka svårare än det egentligen är. Därmed inte sagt att man måste vara guru på Karnaughdiagram. Inte ett enda sånt kommer vi att behandla! Speciellt inför avsnitten med binära koder, binär aritmetik och senare också mikroprogrammering kommer vi att vara betjänta av digitalteknikkunskaper. Om du känner på dig att du inte har full koll på detta rekommenderas varmt att du läser motsvarande kapitel i digitalteknikboken när vi kommer till dessa områden. Vart leder allt det här då? Ja, till exempel bör du, efter genomgången kurs, kunna avgöra om detta är ett lämpligt datorsystem för kommande projektkurser: Atmel 8-bit microcontroller ATmega16 16K Bytes of In-System Self-Programmable Flash 1K Byte Internal SRAM 512 Bytes EEPROM Up to 16 MIPS Throughput at 16 MHz On-chip 2-cycle Multiplier Three counter/timers Four PWM channels 8-channel, 10-bit ADC Programmable Serial USART Two-wire Serial Interface Master/Slace SPI Serial Interface 7

8 0. Introduktion eller finns det några argument emot detta? Under kursens gång kommer vi beröra olika aspekter på kompromisser som konstruktörerna av en sådan mikrokontroller också tvingats göra Kurslitteratur Den officiella kurslitteraturen utgörs av Alan Clements The Principles of Computer Hardware. Den återfinns i bokhandeln. Till kursen hör också labhandledningar, samt det som du håller i handen just nu, det så kallade föreläsningsunderlaget Övrig information Kursen har en egen hemsida. Den finns vid Där ligger upp nogrannare planering, rekommenderad läsning, diverse sista-minuten-tips osv. Eventuellt kompletterande material som delas ut på föreläsningarna återfinns också i kursens kursfack, beläget vid Datortekniks (ISY/DA) studentinformationstavla Kursupplägg Kursen innehåller åtta föreläsningar och obligatoriska laborationer samt laborationsförberedande lektioner. Labbarna börjar rätt tidigt så de första fyra-fem föreläsningarna är speciellt viktiga. Det känns egendomligt att rekommendera vissa föreläsningar på bekostnad av andra. Men så är det: De första är viktigast inför laborationerna. Det ser alltså ut så här, i denna läsperiod: 8 st Föreläsningar Le 1 Huvudsakligen labförberedande övningar (dvs läs labhandledningen innan). Lab 1 Infraröd länk Lab 2 I/O-programmering, a.k.a. Morselabben Lab 3 Digitalur Lab 4 Spel Som påpekats kommer första labben tidigt, så det är intensivt med föreläsningar till en början. Man måste anmäla sig till labbarna. Det görs elektroniskt och mail kommer ut med mer information om det. Vi tänker att man lär sig bättre om ämnet blir belyst från flera håll. Att det är nödvändigt med andras åsikter och synpunkter även om dom har fel! Därför innehåller hemsidan en del bredvidläsning, länkar till närliggande områden osv. Dessa ingår inte i kursen per se. Men det är förrädiskt att anta att kursen bara går ut på att resultera i ett antal avklarade labbar. Huvudpoängen är ju faktiskt att den ska resultera i kunskaper, inte bara lösa bitar av fakta staplade ovanpå varann. Man måste se och begripa relationen mellan olika fakta och dessutom få en överblick över helheten. 8

9

10

11

12

13

14

15 2. Instruktioner och adresseringsmoder I denna föreläsning: villkorsinstruktioner, statusflaggor, statusregister, hoppinstruktioner, ytterligare instruktionsformat, adresseringsmoder: underförstådd, omedelbar, absolut, indirekt, indexerad och relativ Ytterligare instruktioner Om man försöker programmera något med den instruktionsrepertoar som presenterades förra gången märker man snart att det inte går nåt vidare. Processorn är alldeles för liten och för enkel för att kunna användas till nåt egentligt nyttigt. Idag ska vi öka på innehållet i processorn något, så att den faktiskt går att använda till något. Det är framförallt på tre områden processorn måste hyfsas till: Först och främst saknas det instruktioner. Det borde finnas en instruktion som laddar konstanter. Vi har antagit att Gud på nåt sätt placerat konstanterna vi behöver på de rätta ställena. Vi kan ju inte i allmänhet i alla fall förlita oss på gudomlig intervention. Med 8-bitars programräknare kan man adressera 256 adresser, dvs ett program på som mest 256 rader kod. Det kan räcka för enklare tillämpningar men duger inte för WoW. Vi måste lösa detta problem. I modelldatorn kunde vi utföra villkorliga hopp om AR > 0. Det är bra. Villkorliga hopp är en nödvändighet för att kunna programmera beslut. Men ofta är villkoret AR > 0 inte det bästa. Vi ska lägga till ett antal ytterligare villkor Villkorsinstruktioner Vi betar av listan bakifrån och börjar med att lägga till fler villkor. Hoppinstruktionen kikar just nu på AR för att avgöra om hopp ska ske eller ej. Utan närmare förklaring inför vi här fyra ytterligare villkor med medföljande instruktioner. Om villkoren uppfyllts eller inte kan man läsa av från speciella vippor i processorn, som vi också får lägga till. Dessa vippor brukar kallas flaggor och signalerar olika tillstånd i processorn: 15

16 2. Instruktioner och adresseringsmoder De sista kanske behöver ett förtydligande? Exempel Addera med användning av fyrabitars ord! 0110 = = = 4! Hallå där, det stämmer ju inte! Något är skumt här... (Talområdet överskreds och information om detta finns i minnesbiten.) Statusregister För att hålla ordning på dessa fyra bitar brukar man lägga dom i ett villkors- eller statusregister, SR, även kallat CCR (Conditon Code Register) eller PSW (Program Status Word) Hoppinstruktioner Nu kan vi med statusflaggorna införa ytterligare hoppinstruktioner JMPZ Hopp om senaste resultat = 0, dvs om Z-flaggan = 1. 16

17 2.2. Större adressrymd JMPC Hopp om minnessiffra finns, dvs om C-flaggan = 1. JMPN Hopp om senaste resultat < 0, dvs om N-flaggan = 1. JMPV Hopp om senaste resultat gav spill, dvs om V-flaggan = 1. Dessa nya villkor ger oss betydligt vettigare möjligheter att utföra hopp än JMPP. Samtliga flaggor antar sina värden för varje instruktion som körts Större adressrymd Nästa steg är att lägga till en större adressrymd och faktiskt därmed samtidigt möjliggöra fler instruktioner. Vi såg förra gången att opkoden innehöll både operation och operand i samma 8-bitars fält. Redan där kan man se antydan till en metod att erhålla större adressrymd: Gör ordet bredare! Större instruktionsbredd Med bredare opkod kan enkelt större adressrymd erhållas. En fullt möjlig väg enkel och snabb. Men det visar sig finnas följdeffekter till detta angreppssätt som inte är attraktiva just nu: det äter resurser i form av digitalteknikkomponenter. Med bredare instruktion måste även IR (instruktionsregistret) breddas, minnet breddas mm. Vi är snåla för tillfället och letar en alternativ lösning Variabelt instruktionsformat Mindre resurskrävande är variabelt instruktionsformat. Vi inför tre olika instruktionsformat. Kan vi inte ta instruktionen på bredden enligt ovan får vi väl ta den på höjden då: 17

18 2. Instruktioner och adresseringsmoder 2.3. Ytterligare instruktioner Fler instruktioner slutligen. Våra nuvarande åtta instruktioner är lite handikappande. Vi måste ha fler. Det visar sig att de normalt sönderfaller i några bestämda kategorier: De instruktioner som kanske är lite krångligare än andra är de logiska. Här finner vi tre skift-instruktioner och några bitvis logiska instruktioner. Med detta som ledning presenteras här en mer komplett lista utökad till 20 mer sannolika instruktioner 1 1 Listan än inte färdig på något sätt. Den kan minskas eller utökas beroende på vad man som konstruktör är ute efter för profil på sin processor. 18

19 2.4. Adresseringsmoder Instruktion Verkan Status Antal bytes Antal cykler N Z C V LDA addr AR := M(addr) * * STA addr M(addr) := AR ADC addr AR := AR + M(addr) + C * * * * SBC addr AR := AR M(addr) C * * * * INC AR := AR + 1 * * * * 1 1 DEC AR := AR 1 * * * * 1 1 CMP addr AR M(addr) * * * * CLC C := ASR AR := AR/2 * * * ASL AR := AR 2 * * * * 1 2 LSR logiskt högerskift av AR 0 * * AND addr AR := AR and M(addr) * * OR addr AR := AR or M(addr) * * JMP addr P C := addr JMPN addr P C := addr om N = JMPZ addr P C := addr om Z = JMPC addr P C := addr om C = JMPV addr P C := addr om V = IN AR := IN * * OUT UT := AR Symbolerna för statusflaggorna i tabellen skall tolkas enligt: - = påverkas inte, * = påverkas, 1 eller 0 = flaggan tvingas till detta tillstånd. Kolumnen Antal cykler anger för en viss realisering av denna arkitektur det antal klockcykler instruktionen tar i anspråk. Här underförstås att de enklaste instruktionerna kan både hämtas och exekveras på en klockcykel. Detta visar sig senare vara en rätt optimistisk uppskattning det tar normalt några klockcykler redan för att hämta en instruktion men duger i våra hittills lätt oprecisa termer. Skall man vara noggrann anger kolumnen alltså det antal maskincykler som respektive instruktion kräver. En maskincykel är en abstrahering på högre nivå där man inte bryr sig om exkat hur hårdvaran löser det. Med maskincykelbegreppet ser vi att de enklaste instruktionerna tar en sådan cykel, medan de instruktioner som också behöver ett argument tar ytterligare en eller två cykler beroende på om argumentet är kort (en byte) eller långt (två byte). Med så här många instruktioner behöver vi fler än våra tidigare tre bitar av opkoden för att peka ut instruktionen. Fyra bitar ger 16 instruktioner och fem bitar 32 instruktioner. Tydligen behöver vi i det här fallet 5 bitar av opkoden för att peka ut en instruktion Adresseringsmoder Nu kommer det krångliga: Hur ska man kunna peka ut operander? Exempel på olika rimliga sätt är: 19

20 2. Instruktioner och adresseringsmoder LDA 20 som anger adressen (20) till det datum vi vill ladda LDA #20 som laddar konstanten 20 till AR Det är en väsentlig skillnad mellan dessa. Den första är absolut adressering och den sista exempel på omedelbar adressering (som förvirrande nog också kallas direkt adressering ibland). Lägg märke till vad 20 är i de båda fallen, en adress eller ett faktiskt data. Utöver dessa två ganska vanliga sätt att peka ut operanden finns ytterligare några stycken vi måste lära oss. Alla adresseringsmoder leder fram till att den s.k. effektiva adressen, EA, beräknas. Den effektiva adressen är alltså den adress som är resultatet när adresseringsmoden avkodats/vecklats upp så mycket som möjligt. Totalt ska vi nu lära oss 6 stycken grundläggande adresseringsmoder. Lägg speciellt märke till vilken EA som blir resultatet i varje enskilt fall Underförstådd (implied) adressering Exempel INC Omedelbar (immediate) adressering Exempel LDA #20 20

21 2.4. Adresseringsmoder Absolut (absolute) adressering Exempel LDA Indirekt absolut (indirect absolute) adressering Exempel JMP (20) 21

22 2. Instruktioner och adresseringsmoder Absolut indexerad (absolute indirect) adressering Exempel LDA 20,X Denna instruktion kräver ytterligare hårdvara för att kunna verkställas. Vi utökar processorn med ett indexregister, X samt några instruktioner för att kunna hantera detta speciella register: Relativ (relative) adressering Exempel BRA 39 22

23 2.4. Adresseringsmoder Denna adresseringsmod används ofta för relativa hopp. Kod som enbart hoppar med relativa hopp är relokerbar dvs den kan placeras var som helst i minnet: 23

24 2. Instruktioner och adresseringsmoder 2.5. Exempelprogram Bara för att visa på att vi inte är helt ute och cyklar kommer här ett litet program som du kan prova att nästla upp. Exakt vad gör programmet egentligen 2? LDX $200 DEX LOOP LDA ($201),X STA ($203),X DEX BNE LOOP LDA $200 CLC ADC $203 STA $203 adress $200 $201 $202 $203 $204 $205 $206 $207 $208 $209 $20A minne adress $20B $20C $20D $20E $20F $210 $211 $212 $213 $214 $215 minne adress $216 $217 $218 $219 $21A $21B $21C $21D $21E $21F $220 minne 2 Tips:!vläjs tu atsil ud råf 402$ 302$ nem sserdatrats ne 202$ 102$,latna tte rehllåhenni 002$ 24

25 3. Subrutiner och stackar I denna föreläsning: processorarkitekturvarianter, Harvard, von Neumann, subrutiner, returstack, stackmodeller, några vanliga felkällor 3.1. Processorarkitektur Vår mikroprocessor håller på att ta form. En processor med det utseende vi arbetade fram under förra föreläsningen är fullt tillräcklig för en hel massa uppgifter. Den gick ju till och med att programmera till slut. Faktum är att 90% av alla processorer som tillverkas idag ser ut ungefär som den. Det finns variationer i instruktionsuppsättningen förstås, men den sortens processorer med s k ackumulatorarkitektur är de förhärskande. En så enkel processor kanske inte sitter i din PC på skrivbordet men ytterst få av alla tillverkade processorer finns på skrivborden. De allra flesta sitter inbyggda i någon apparat: det finns säkert flera i din TV, tvättmaskin, torktumlare, klocka, en i varje tangentbord, mobiltelefonen har flera osv. Och med stor säkerhet skulle vi känna igen dessa processorers instruktionsuppsättning och allmänna upplägg. De har register vi känner igen PC, IR, AR osv de har säkert åtminstone en del av adresseringsmoderna, men kanske inte alla. Men flera av adresseringsmoderna är så fundamentala att de inte går att komma förbi om vi ska kunna peka ut operanderna på ett effektivt sätt Harvard/von Neumann Innan vi ska avsluta beskrivningen av vår processor kan det vara intressant att kika lite på de två stora arkitekturvarianter som finns, Harvard- och Von Neumann-arkitekturerna. I huvudsak kan en processor klassas utefter vilken arkitektur den följer. Numera har utvecklingen dock gått så många och varierande spår att den enkla uppdelningen kanske inte gäller helt och hållet för varje processor, man kan ha lånat praktiska delar ur den konkurrerande arkitekturmodellen. Von Neumann John Von Neumann var en ungerskfödd matematiker som var verksam i USA från 30-talet och fram till sin död Han var bland annat involverad i utvecklingen av vätebomben och var mycket medveten om den mycket stora mängd simuleringar och beräkningar som måste till stånd för att utveckla den. Av en slump kom han i kontakt med andra inom amerikanska försvaret som ville automatisera beräkningar. Han började omedelbart skissa på en beräkningsmaskin med arkitektur där bland annat program och data delade på samma minne. 25

26 3. Subrutiner och stackar Arkitekturen har stått emot tidens tand mycket väl. Det är känt att den är behäftad med åtminstone en stor nackdel, den prestandanedsättande s k Von Neumannska flaskhalsen som är ett resultat av att både program och data delar på den tillgängliga bandbredden mot minnet: Man kan inte hämta programinstruktioner och data samtidigt utan måste utföra dessa operationer efter varann. Även om flaskhalsen är prestandanedsättande är inte läget sådant att man inte kan göra något åt det. Till exempel med hälp av förhämtning av flera instruktioner när tillfälle ges. Mer om detta kommer vi att nämna vid den speciella försläsningen om alternativa arkitekturer. Harvard Samtidigt med Von Neumann höll ett forskarlag på Harvard att utveckla en beräkningsapparat (Harvard Mk I), men längs ett annat spår. Man separerade program- och dataminnet. Denna uppdelning ger möjlighet att läsa från programminnet samtidigt med läsningar/skrivningar mot dataminnet. Man kommer då bort från att både program och data belastar samma buss. I och med att man kan utföra minnesoperationer samtidigt kan man tänka sig att man erhåller dubbla prestanda med denna arkitektur jämfört med von neumann-arkitekturen. Fördelar och nackdelar existerar med båda arkitekturerna. Exempelvis kan ju inte den ortodoxa harvardarkitekturen skriva till sitt egna program något vi ofta betraktar som en självklarhet. I vissa tillämpningar är harvardmodellen mer lämplig. I inbyggda system exempelvis, där processorn programmeras en gång för alla och aldrig mer. Då kan harvardarkitekturen vara lämplig och det är ingen slump att många mikrokontrollers är uppbyggd enligt denna. 26

27 3.2. Subrutiner 3.2. Subrutiner Vår dator kan göra mycket men det finns en finess som bara måste med: Subrutiner. Det är utrymmesbesparande att inte repetera kod utan att istället anropa den från olika ställen. Det färdiga programmet tar mindre plats i programminnet, men den riktigt stora vinsten är att subrutinerna ger stor hjälp att strukturera programmet på ett bra sätt. Till detta kommer att eventuella fel bara behöver rättas på ett ställe, inte på flera. Alla riktiga assemblerprogram använder subrutrutiner. För att kunna använda subrutiner måste vi konstruera några ytterligare instruktioner. Två är uppenbara: JSR addr, hopp och RTS, återhopp. Den första (Jump to SubRoutine) utför det speciella hoppet och den andra (ReTurn from Subroutine) hanterar återhoppet till det anropande programstycket. Följer vi ett programflöde märker vi snart att det kan vara olika återhoppsadress varje gång (beroende på varifrån JSR sker). Vi måste hålla ordning på denna återhoppsadress. Det är precis det återhoppsinstruktionen RTS utför. RTS-instruktionen är något egendomlig. Betrakta följande program: Man ser att det är praktiskt att kunna nästla subrutinanrop, dvs låta subrutiner ha möjligheten att anropa subrutiner i sin tur. Detta medför att vi måste hålla ordning på mer än en återhoppsadress. Lite begrundande ger att vi återhoppar i omvänd ordning till rutinanropen. Hittills har vi löst alla processorns tillkortakommanden genom att lägga till ytterligare register (har ni tänkt på det?). Kan det rädda oss även här? I och med att vi återhoppar i omvänd ordning till rutinanropen duger en stack för att lagra våra återhoppsadresser: 27

28 3. Subrutiner och stackar Enklast är att lägga stacken i det vanliga (data)minnet, då räcker det att processorn förses med ett register som pekar ut senaste återhoppsadress som alltså ligger i minnet. Ett processorregister, stackpekaren, SP, införs med denna uppgift. Eftersom det i princip bara är JSR och RTS som använder SP kan vi helt sonika bestämma att dessa instruktioner, och inga andra, automatiskt petar på SP så att allt blir bra. 1 En fråga som uppstår är om man ska låta SP peka på sist lagrade returaddress eller nästa användbara minnesposition? Det spelar i praktiken ingen roll, så länge man vet vad man gör och parar JSR med motsvarande RTS. Det är under alla förhållanden inget vi som användare kan göra något åt. Processortillverkaren har valt ett sätt åt oss. Mekanismen vid JSR och RTS blir således 2 : JSR addr RTS M(SP):=PC, PC:=addr, SP:=SP-1 SP:=SP+1, PC:=M(SP) eller JSR addr RTS SP:=SP-1, M(SP):=PC, PC:=addr, PC:=M(SP), SP:=SP+1 Den uppmärksamme läsaren märker nu att ovanstående beskrivning förutsätter att PC inte pekar på den assemblerrad som innehåller JSR utan på den närmast efter. Om PC pekade på JSR skulle ju programflödet vid RTS styras tillbaka till det hopp som just gjordes, vilket alltså skulle göras igen och igen, och igen osv Andra stackfunktioner Förutom att använda stacken för att lagra återhoppsadresser kan man nyttja stacken för att snabbt spara undan annan data. Vi inför för detta två nya instruktioner PHA, PusH Accumulator, och PLA, PulL Accumulator. Den senare kallas även ofta för POP, funktionen är dock densamma. Adresseringsmoden är tydligen underförstådd (implied) eftersom inga operander behövs. Instruktion PHA PLA Innebörd M(SP):=AR, SP:=SP-1 SP:=SP+1, AR:=M(SP) Stackmodeller Hur implementerar vi nu denna stack? Det finns flera lösningar, olika stackmodeller: 1 Exakt hur det går till kommer vi till senare när vi studerar mikroprogrammering. 2 Här antas i båda fallen att stacken växer mot mindre adresser. Det är vanligtvis så stackarna (!) är gjorda, men det finns naturligtvis inget som hindrar att de kan tillverkas så att de växer mot större adresser. 3 Att det trots detta inte står PC+1 eller något sådant beror dels på att det inte är säkert att nästa instruktion finns på nästa byte efter JSR, dels på att processorn i sin hämt- och avkodningsfas själv petar på PC så att den efter instruktionen faktiskt är uppräknad till ett korrekt väre. Vi kommer till det i kapitlen om mikrokod. 28

29 3.2. Subrutiner 1. Sist i minnet växer mot lägre adresser Här har stacken placerats sist i det tillgängliga minnet och tillåts växa mot lägre adresser. En fördel med denna placering är att stacken inte har en förutbestämd största storlek. En förutbestämd storlek på stacken skulle omedelbart sätta restriktioner på antalet nästlade subrutinanrop processorn klarar av 4 eller ett tak på antalet värden som kan lagras på stacken med PHA-instruktionen. 2. Sist i minnet växer mot högre adresser Stacken tillåts här växa mot högre adresser och beroende på var stackpekaren initieras kan detta vara en tillräckligt stor stack eller inte! 3. Mitt i minnet En generell implementation av en stack tillåter naturligtvis att stacken placeras var som helst i minnet. Detta kan vara en fördel i och med att det är flexibelt men innebär därmed inte att det är avgjort bättre än de tidigare Vanliga stackfel Förutom att vara oerhört praktiska, är subrutiner en källa till irritation och emellanåt stor förvåning även hos erfarna programmerare. Eftersom stackhanteringen sker automatiskt, utom synhåll från programmeraren, är det lätt att missa följdverkningarna. Det kan alltså vara på sin plats att varna för ett par vanliga fel som är relaterade till stackhantering. Fel som vi naturligtvis aldrig kommer att göra, eller? 4 Varför bara restriktioner på antalet nästlade anrop och inte totala antalet subrutinanrop? 29

30 3. Subrutiner och stackar Varning 1: Felaktig/ingen returaddress Varning 2: Stack overflow Om fel uppstått kan man överväga om stacken måste rensas. I varje fall bör stackpekaren initieras på nytt så att den inte pekar utanför stackens tilldelade område. Det var allt nämnvärt om stack och subrutiner. Läs mer i kursboken om det inte är kristallklart. På labbarna kommer subrutiner att användas, mycket blir enklare då. Försök inte snedda över kursen genom att hoppa över subrutinerna Några riktiga processorer Nu är det också dags att kolla hur ett antal riktiga processorer ser ut. Titta på läsanvisningarna på kurshemsidan för några datablad. 30

31 3.3. Några riktiga processorer Där finns ett datablad för Motorola 68000, den som laborationerna baseras på 5, men de övriga är bara för ren nöjesläsning. Kolla speciellt på saker som ordbredd, minnesmängd, adressrymd, registeruppsättning, instruktionsuppsättning m m. 5 För de som redan kan det här: Labbarna körs på egentligen på så programmeraromgivningen är densamma). 31

32

33 4. M68000 I denna föreläsning bl. a.: Motorola Interna register, operandstorlekar, minnesbredd, assembler, adresseringsmoder, subrutiner, avbrott, pollning, trap, avbrottsnivåer Instruktioner, instruktioner... Vi har i de första föreläsningarna ägnat vår uppmärksamhet åt en hypotetisk modelldator och sett hur den fungerar. Vi har sett hur programinstruktionerna pekas ut och hämtas in till instruktionsregistret, hur eller i varje fall att instruktionen därefter avkodas och körs, allt enligt modellen hämta avkoda utför. Beroende på vad vi vill åstadkomma med processorn har vi också sett att vi, vid konstruktionen av den, har stora möjligheter att välja instruktionsrepertoar. I vårt fall föreslog vi följande instruktionslista: Instruktion Verkan Status Antal bytes N Z C V LDA addr AR := M(addr) * * STA addr M(addr) := AR ADD addr AR := AR + M(addr) * * * * 2-3 SUB addr AR := AR M(addr) * * * * 2-3 INCA AR := AR + 1 * * * * 1 DECA AR := AR 1 * * * * 1 CMP addr AR M(addr) * * * * 2-3 CLRA AR := ASRA AR := AR/2 * * * - 1 ASLA AR := AR 2 * * * * 1 LSRA logiskt högerskift av AR 0 * * - 1 AND addr AR := AR and M(addr) * * OR addr AR := AR or M(addr) * * JMP addr P C := addr JMPN addr P C := addr om N = JMPZ addr P C := addr om Z = JMPC addr P C := addr om C = JMPV addr P C := addr om V = IN AR := IN * * OUT UT := AR Detta är vår assemblerarsenal att lösa programmeringsuppgifterna med. Är instruktionerna väl valda och den underliggande arkitekturen förnuftigt gjord kan hela processorn exekvera vår assemblerkod mycket effektivt har vi dabbat oss med endera, kanske den blir en högst medioker apparat som inte gör nån större nytta. Det är väl fullt klart nu att det är svårt, till mycket svårt, att konstruera en processor från grunden utan att ha tänkt till ordentligt innan. 33

34 4. M68000 Då är det knappast en överraskning att andra tänkt klart åt oss och bara lämnat en programmerarmodell åt oss att sätta oss in i. Som exempel på hur man gjort ska vi ägna oss åt Motorolas M Motorola en verklig processor M68000, även kallad 68k, är en efterföljare till Motorolas tidigare mikroprocessor M6800 som mer liknade den ackumulatorarkitektur vi hittills studerat. Man ser att 6800 är en s.k. 8-bitars processor eftersom ackumulatorbredden är 8-bitar. Av praktiska skäl är andra register 16-bitar breda: Det är åtminstone dubbelt så snabbt att peka ut ett datum i minnet med en full 16-bitarsaddress än att peka ut den med två på varandra följande 8-bitars adressvärden. Ett knep konstruktörerna dessutom använt är att inte bara ha en ackumulator utan faktiskt två. På detta sätt hoppas man kunna hålla mellanlagragringsvärden kvar i processorn för nästa användning istället för att lämpa ut dom till minnet och sedan behöva ta in dom igen efter en stund. Det är rätt smart och det visar lite på hur ingenjörerna på Motorola tänkte då de efter ett par års framgång med 6800 tog sig an problemet att konstruera Motorolas nästa generations mikroprocessor den förväntans tystnad! inte mindre än 16-bitars 68000! På sin tid, 1977, var processorn ungefär vad man som bäst kunde tillverka med någon ekonomisk framgång. Det var på den tiden oerhört svårt att klämma in alla transistorer på den lilla millimeterstora kiselplattan som fanns till förfogande. Åtminstone om man ville ha rimligt stor del av de tillverkade som faktiskt fungerade efteråt. Som av en tanke fast dom säger att det är en slump innehåller just 68 tusen transistorer! Nuförtiden klämmer man in miljoner och åter miljoner transistorer i en vanlig processor 1 men var precis på gränsen till det möjliga Två ackumulatorer i 6800 visade lite på hur Motorolafolket tänkte. Om man tyckte att två ackumulatorer var bättre än en vad vore då bättre ännu flera ackumulatorer? Inte mycket tydligen, för det var precis vad man gjorde. Inte mindre än 8 ackumulatorer fick man plats med. Varje enda av dessa kan göra vad man förväntar sig av en ackumulator (ADD/SUB/MULT/logiska operationer osv). Men en processor består inte av ackumulatorer allena. Åtminstone en stackpekare behövs. Kanske vill programmeraren ha fler stackar? Låt honom isåfall ha det, tänkte man. Vill man ha ett eller flera indexregister? Låt honom ha det. Var generell. Man var så generell att man tillät inte mindre än 8 stycken adressregister för just denna sorts pekare 1 Sådan som sitter i en vanlig dator d v s som exempelvis Intel, Amd och IBM tillverkar. 34

35 4.2. Motorola en verklig processor och annat. Ett av de 8 registren reserverade man för systemets stackpekare resten kan programmeraren använda som han vill, för egna stackar och indexregister m m. Slutligen såg programmerarmodellen ut såhär: Vi ser att det bland annat finns en hel radda register som kallas dataregister, D0 D7. Med vår nomenklatur skulle vi kalla alla dessa för ackumulatorer. Adressregistren, A0 A7 är de som kan användas till stackpekare eller indexpekare eller bara mellanlagring av data om man så önskar. Mycket lite av registrens funktion är slagen i sten jämfört med en traditionell ackumulatormaskin, som modellprocessorn vi studerat hittills är en typisk representant för vad som kallas en processor med generella register. Ingenjörerna på Motorola var framsynta vid konstruktionen av Den skulle ju vara flaggskeppet i deras produktlinje. Och den var faktiskt så bra att den levde kvar, frodades, växte och blev med tiden både 68010, 68020, och Där de senare var 32- bitars processorer tankarna lever kvar än i dag i vad Motorola kallar CPU32, ett byggblock som är grundstenen i deras nya uppsättning processorer bl.a. Coldfire 2. Samtliga versioner har i huvudsak samma programmerarmodell och ett program skrivet för kan köras på en Coldfire om så skulle önskas. Omvändningen gäller dock inte ett program för kan använda nya instruktioner som den råa inte förstår Registeruppsättning För att summera egenskaperna hos registren i har vi alltså: 8 dataregister (ackumulatorer) 8 adressregister (som indexregister/pekarregister, SP!) 32 bitars registerlängd Variabla operandstorlekar 32 bitar är ju coolt och bra och så, men många hävdar att man måste kunna hantera 8-bitars ord också. Bland annat eftersom man då kan packa en bokstav i varje ord. I det fallet vore det slöseri att använda ett fullt 32-bitars ord med bara en bytes nyttolast. Därför har man infört tre olika operandstorlekar: 2 Gå in på och sök på coldfire 35

36 4. M68000 Byte Word Long Operandstorleken byte kan bara användas i dataregistren medan word och long kan användas överallt Minnesbredd Vi har förut nämnt att är en 16-bitars processor. Hur kan den vara det om den har 32-bitar breda register? Jo, den har 16-bitar utåt: Det är dessutom så att den har 24-bitars adressbuss utåt, så den kan adressera högst 2 24 = 16 megabyte minne. Minnet utförs vanligen med vanliga 8-bitar breda minneskretsar. Man tar två och lägger dem bredvid varann och låter processorns två signaler U DS och LDS peka ut rätt krets eller båda samtidigt om man vill komma åt ett 16-bitars ord. Detta är också anledningen till att ingen signal A0 finns ut från processorn. Den behövs helt enkelt inte! För den variant av som ingår i laborationerna, 68008, gäller att den har en 8-bitars databuss. Varje gång den ska hämta ett 16-bitars ord måste den alltså producera två 8-bitarsvärden på sin databuss. Resultatet blir detsamma när väl instruktionen är klar men det är ett långsamt sätt att hämta data. För att hämta ett ord i formatet long hämtar processorn automatiskt två på varann följande words. Att hämta ett long är alltså en långsam och omständlig procedur. Speciellt så på förstås. Exempel 36

37 4.2. Motorola en verklig processor Operander kan dessutom inte placeras var som helst utan måste placeras på jämn adress, så att UDS = LDS = 0 kan hämta en hel 16-bitars tugga. Även en long måste starta på jämn adress 3. En byte kan däremot hämtas både på jämn och udda adress. Det är programmeraren som är ansvarig för att placeringen av data blir rätt: MOVE.W 5,D0 är till exempel fel. Varför? Automatisk teckenutvidgning (sign expansion) Adressregistren är speciella då de dels inte hanterar byteoperander och då de dels behandlas som om de innehöll tvåkomplementstal. Detta får till effekt att, om inte full (d.v.s. 32-bitars) adress används, betraktar processorn adressen som ett 16-bitars tvåkomplementstal och teckenutvidgar denna omedelbart till ett 32-bitars tal: Registervärde (adressregister, 32 bitar) Efter teckenutvidgning Syns utåt på kretsen Registervärde (adressregister, 32 bitar) Efter teckenutvidgning Syns utåt från kretsen Med assembler kan man på samma sätt bli förvånad om adressregistret använts med ordlängden.w: MOVE.L MOVE.W #0,A3 #$8000,A3 ger A3 med innehållet $FFFF8000 på grund av teckenutvidgningen i den andra raden. Av denna anledning är LEA (Load Effective Adress) en lämplig instruktion för att ladda adressregister. Den finns bara i varianten.l. Studera instruktionen i databladen 4. 3 Vad skulle hända om den tilläts börja på en udda adress? 4 Datablad återfinns i laborationshandledningen. 37

38 4. M Instruktioner Med registermodellen framfo r oss kan vi bo rja programmera kretsen. Det som a r ofta a r intressantast na r man tittar pa en ny processor a r vilka instruktioner den kan hantera: Motorola sa ger att det finns 56 instruktioner. Tyva rr a terfinns bara 54 i tabellen... sa det beror va l pa hur man ra knar och om man vill skryta med ma nga instruktioner? Som tur a r beho ver vi inte anva nda alla instruktioner, men en del kommer vi inte ifra n. Vi ka nner igen kategorierna fra n tidigare. Egentligen a r det bara instruktionen MOVE som skiljer sig fra n vad ka nner till. MOVE ersa tter ba de LD och ST i modelldatorn, och det a r ju logiskt om man ta nker pa det. Trots sitt namn flyttar den dock inte na gonting, det handlar hela tiden om att kopiera data. Det finns ett antal instruktioner i kategorierna aritmetik, logik, hopp och branch. Inget nytt da r. Men det kan vara va rt att pa peka att ett absolut hopp anva nder JMP, medan ett hopp relativt nuvarande PC anva nder BRA. Det finns ocksa korta och la nga hopp men det beho ver vi inte bry oss om ha r Instruktionen i datablad Varje instruktion a r noggrannt beskriven i labkompendiet om Tutor. Det kra vs viss erfarenhet att la sa Motorolas egen dokumentation: (Ack, om jag bara hade den inskannad. Da skulle den vara ha r.) 38

39 4.3. Instruktioner Assembler, äntligen Som exempel tar vi instruktionen för binär addition: ADD. Det viktigaste efter en stunds programmerande är assemblersyntaxen: ADD ADD <ea>,dn Dn,<ea> Här betyder <ea> effektiv adress som vi känner den sedan förr. Man kan alltså t.ex. inte ADD A0,A5, det skulle krävt en syntax enligt ADD <ea>,<ea>. Vissa instruktioner har denna syntax, andra inte. Konsultera dokumentationen Adresseringsmoder Ett område där verkligen excellerar är adresseringsmoderna är den sista verkliga processorn av CISC-typ (Complex Instruction Set Computer) och har, hart när, alla förekommande adresseringsmoder: Register MOVE.B D1,D0 5 I vårt fall t.ex. labkompendiet, där vi finner instruktionen ADDA, Add Address, som klarar av An både som källa och destination 6 Vid granskning av manuset påpekades att Motorolas 6809 inte är en dålig föregångare i detta avseende heller. Ut på nätet och kolla om det stämmer! 39

40 4. M68000 Omedelbar MOVE.W #$FACE,D3 Där det hexadecimala talet är ett tal och inte en adress. I det använda skrivsättet talar # om att det som följer är ett tal och $ att talet är skrivet i hexadecimal form. Exempel MOVE.B #10,D3 D3 := 0x0A MOVE.B #$10,D3 D3 := 0x10 MOVE.B $10,D3 D3 := M(16 10 ) Absolut MOVE.B $F0, D Exempelprogram I Dags för lite programmering som övning på adresseringsmoderna. 40

41 4.3. Instruktioner Exempel I minnescellerna $1100 och $1101 finns två +va 7 tal, placera det största talet i cellen $1102. Vi börjar med en registerplan, att rita upp verkligheten som vi ser den. Sedan är det bara att börja skriva assemblerkod: Vi kör en till: Exempel Beräkna och lagra resultatet i $ Den här uppgiften är lite mer komplicerad. Registerplanen underlättar återigen. 7 +va läses positiva, och tvärtom för va. 41

42 4. M68000 Villkorsinstruktionen BNE testar Z-flaggan för att avgöra om föregående instruktion (SUB.W) räknat ner registret till noll eller inte. Prova hemma att räkna från istället för att ladda räknaren med 255 från början. Fördel? Nackdel? Ytterligare adresseringsmoder Indexerad (Motorola: Register Indirect) ADD.W (A3),D0 Indexerad med förskjutning ADD.W 2(A3),D0 42

43 4.3. Instruktioner Indexerad med postinkrement En ny mod, numer inte så ovanlig och mycket praktisk. CLR.W (A3)+...och samma med predekrement CLR.W -(A3) Vilken raderas nu? Lägg märke till (åtminstone i 68000) det bara finns predekrement och postinkrement inte preinkrement eller postdekrement Exempelprogram II Den sista adresseringsmoden är mycket praktisk och eliminerar behovet av separata nedräkningsinstruktioner. Exempel Nollställ minnet från $800 till och med $

44 4. M68000 Nu äntligen den sista adresseringsmoden, som också är en typisk mod: Rätt komplex, men användbar om man vet hur! Register indirect with index and displacement MOVE.W $20(A3,D1.W),D Subrutiner i Subrutiner i är enkelt Man gör precis som vi vant oss vid så vi tar ett exempel omedelbart: Exempel Skriv en subrutin som beräknar udda paritet 8 av byten i D1. 8 Med udda paritet menas att summan av alla 1-or i talet skall vara udda. Om ett åttabitarstal förses med paritet är denna oftast den mest signifikanta biten (Pxxxxxxx). Motsvarande fast tvärtom då(!) kallas jämn paritet 44

45 4.4. Subrutiner i Subrutinen skall alltså räkna antalet 1-or i de 7 lägre bitarna. Och om antalet är jämnt sätta paritetsbiten, P, till 1 annars till 0. Talet ska inte förstöras, och rutinen får använda enbart D1. Lösningen till problemet hängde mycket på rotationsinstruktionen ROR skiftinstruktionen LSR... och den logiska instruktionen OR: 45

46 4. M68000 För subrutiner på har konstruktörerna valt följande konvention: Instruktion Innebörd JSR addr SP := SP 1, M(SP ) := P C + 1, P C := addr RTS P C := M(SP ), SP := SP + 1 Observera att SP = A7! Använd inte A7 till något annat. Som programmerare behöver jag inte öka stackpekaren eller så allt sånt sköts transparent och automatiskt av instruktionerna JSR och RTS. Då var det klart. Rutinen funkar! Nu återstår att skaffa riskkapital, starta firma, paketera och sälj rutinen för andra att använda i sina program? Tyvärr inte. Det återstår en teknikalitet: Rutinen använder inte bara D1 utan även D0 och D2! Det måste åtgärdas. Vi måste spara undan den anropande rutinens innehåll i D0 och D2 innan vi använder registren för att kunna återställa dom i oförvanskat skick då vi är klara. Vem ska spara undan registren? Det finns två alternativ: huvudprogrammet, eller subrutinen. Det är ju huvudprogrammets data så det ligger onekligen i dess intresse att spara dom. Vad händer om subrutinen modifieras så att även D3 påverkas? Det är synd att behöva ändra på alla ställen i huvudprogrammet anropet förekommer. Bättre är att ändra i subrutinen, det blir ju färre ändringar då. Eftersom subrutinen själv bäst vet exakt vad som ska sparas undan brukar man överlämna detta åt den senare. Man kan i princip välja vilket sätt som helst men det är i någon mening förstås renare att låta subrutinen ta hand om det. När vi bestämt att det är subrutinens uppgift att stuva undan de register som kommer att förstöras måste vi också klura ut ett sätt att göra det. Det anropande programmet hoppar till subrutinen med ett JSR, som vanligt, och ser till att D1 förses med rätt värde innan: 46

47 4.4. Subrutiner i Eftersom subrutinen använder egna register måste deras värde sparas undan innan de förstörs och återställas vid subrutinens slut. Var kan vara ett bättre ställe att lägga dom på än på returstacken? Stacken kan ofta, med fördel, användas för temporärlagring av data. Se bara till att poppa alla värden innan RTS Något att fundera över Stackhanteringen kan utnyttjas på flera olika sätt, för syften den kanske inte är avsedd för. Vad händer till exempel egentligen i dessa programsnuttar 9? MOVE.L MOVE.L MOVE.L MOVE.L D0,-(SP) D2,-(SP) (SP)+,D0 (SP)+,D2 Och vad kan det här vara? MOVE.L MOVE.L RTS #$8000, D0 D0,-(SP) Och detta: ADD.L #4, SP eller till och med det här: ADD.L #4, (SP) 9 Här står för tydlighets skull SP för stackpekarvärdet. Som vi nu vet skulle det i praktiken stå A7. 47

48 4. M Avbrott, i allmänhet Vi lämnar nu för ett ögonblick och betraktar avbrott på modelldatorn. Vi har sett hur ett program kan få saker utförda i subrutiner som programmet anropar. Med instruktionen JSR kan vi i programmet anropa andra programsnuttar för att få beräkningar utförda och sedan hoppa tillbaka med RTS för att fortsätta som om inget hade hänt. Med avbrott kan en yttre enhet signalera till processorn att det är dags att hoppa till en särskild subrutin, en avbrottsrutin. Det låter kanske förvånande, men vi människor gör så hela tiden. Ett typexempel man brukar dra är telefonen: Vi går inte runt och provlyssnar i luren för att höra om någon råkar ringa just då. Vi är mer praktiska än så och har försett telefonen med en ringsignal så den själv kan kalla på uppmärksamhet när det behövs. Ett typiskt avbrott. När vi pratat klart kan vi fortsätta med vad vi nu höll på med. I stort sett på samma sätt går det till i en dator Vårt program gör viktiga beräkningar och vill inte bli stört. Speciellt finns det inte tid för programmet att gå runt och polla (dvs provlyssna i luren ) om en ny yttre enhet behöver uppmärksamhet. En yttre enhet kan behöva snabb service, till exempel om en tangent på tangentbordet blivit nedtryckt eller om sekundpulsen från den yttre klockan kommer. Dessa är en utmärkt situation för en avbrottsrutin. Tangentbordet lägger ut den nedtryckta tangentens binära värde på IN-enheten och påkallar sedan uppmärksamhet genom att dra i avbrottssignalen, dvs den säger här är den om du vill ha den. Processorn kollar just innan den påbörjar varje ny instruktion om någon ryckt i avbrottstsnöret. Om så är fallet väljer den bort nästa instruktion för ögonblicket och gör ett subrutinanrop den sparar återhoppsadressen på stacken i vanlig ordning till avbrottsrutinen istället. Avbrottsrutinen läser i sin tur in tecknet från tangentbordet, lagrar värdet i minnescellen för senaste tangent och hoppar sedan ur, tillbaka till huvudprogrammet, som inte märkt att något hänt 10 utan fortsätter med nästa instruktion. Det ser ut och fungerar som subrutinanrop med en viktig skillnad: Under pågående avbrottsrutin får inte ett nytt avbrott inträffa. Den s.k. avbrottsflaggan sätts för att hindra ytterligare avbrott. Då återhoppet sker måste denna nollställas igen och av denna anledning används en speciell återhoppsinstruktion, RTI (ReTurn from Interrupt) Om det inte haft ett stoppur och kunnat mäta tiden. För det tar naturligtvis lite tid att utföra avbrottsrutinen. 11 Man kan också tänka sig att ytterligare processorinnehållmed automatik lagras på stack vid avbrott. Speciellt statusregistret är vanligt att man sparar på detta sätt. Men inte alla processorer gör det. 48

Föreläsningsanteckningar 2. Mikroprogrammering I

Föreläsningsanteckningar 2. Mikroprogrammering I Föreläsningsanteckningar 2. Mikroprogrammering I Olle Seger 2012 Anders Nilsson 2016 Innehåll 1 Inledning 2 2 En enkel dator 2 3 Komponenter 3 3.1 Register............................... 3 3.2 Universalräknare..........................

Läs mer

Föreläsningsanteckningar 3. Mikroprogrammering II

Föreläsningsanteckningar 3. Mikroprogrammering II Föreläsningsanteckningar 3. Mikroprogrammering II Olle Seger 2012 Anders Nilsson 2016 1 Inledning Datorn, som vi byggde i förra föreläsningen, har en stor brist. Den saknar I/O. I denna föreläsning kompletterar

Läs mer

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

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen 68000 Arkitektur F2: Motorola 68000 I/O signaler Processor arkitektur Programmeringsmodell Assembler vs. Maskinkod Exekvering av instruktioner i 68000 Instruktionsformat MOVE instruktionen Adresseringsmoder

Läs mer

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

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin. 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

Läs mer

Det finns en hemsida. Adressen är http://www.idt.mdh.se/kurser/ct3760/

Det finns en hemsida. Adressen är http://www.idt.mdh.se/kurser/ct3760/ CT3760 Mikrodatorteknik Föreläsning 1 Torsdag 2005-08-25 Upprop. Det finns en hemsida. Adressen är http://www.idt.mdh.se/kurser/ct3760/ Kurslitteratur är Per Foyer Mikroprocessorteknik. Finns på bokhandeln.

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2015-08-18 Lokal TERE, TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 7 Antal sidor (inklusive

Läs mer

Programmering av Motorola 68000 TSIU02 Datorteknik

Programmering av Motorola 68000 TSIU02 Datorteknik Programmering av Motorola 68000 TSIU02 Datorteknik Michael Josefsson Version 1.2 Innehåll 1 Inledning 5 1.1 Datormodell.................................. 5 1.2 Tutor-kortet..................................

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2016-05-31 Lokal Kåra, T1, T2, U1, U15 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal

Läs mer

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

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler Talsystem Talsystem - binära tal F1.1) 2 n stycken tal från 0 till 2 n 1 F1.2) 9 bitar (512 kombinationer) Talsystem - 2-

Läs mer

HF0010. Introduktionskurs i datateknik 1,5 hp

HF0010. Introduktionskurs i datateknik 1,5 hp HF0010 Introduktionskurs i datateknik 1,5 hp Välkommna - till KTH, Haninge, Datateknik, kursen och till första steget mot att bli programmerare! Er lärare och kursansvarig: Nicklas Brandefelt, bfelt@kth.se

Läs mer

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

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 - Inbyggda system - Analog till digital signal - Utvecklingssystem, målsystem - Labutrustningen - Uppbyggnad av mikrokontroller - Masinkod, assemblerkod

Läs mer

Tentamen Datorteknik D del 2, TSEA49

Tentamen Datorteknik D del 2, TSEA49 Tentamen Datorteknik D del 2, TSEA49 Datum 2012-05-24 Lokal TER2 Tid 8-12 Kurskod TSEA49 Provkod TEN1 Kursnamn Datorteknik D del 2 Institution ISY Antal frågor 6 Antal sidor (inklusive denna 10 sida) Kursansvarig

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2015-06-01 Lokal Tid 14-18 Kurskod Provkod Kursnamn Provnamn Institution Antal frågor 6 Antal sidor (inklusive denna sida) 6 Kursansvarig Lärare som besöker skrivsalen

Läs mer

A-del motsvarande KS1

A-del motsvarande KS1 MÄLARDALENS HÖGSKOLA Institutionen för elektroteknik Tentamen Mikrodatorteknik CT3760 Datum 2005-10-28 Tid 08.30 12.30 Svar till A- och B-del A-del motsvarande KS1 Uppgift A1. Vad blir resultatet då instruktionen

Läs mer

Grunderna i stegkodsprogrammering

Grunderna i stegkodsprogrammering Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer

Läs mer

Datorsystem Laboration 2: Minnesmappade bussar

Datorsystem Laboration 2: Minnesmappade bussar Datorsystem Laboration 2: Minnesmappade bussar Senast uppdaterad: 14 oktober 2012 Version 1.2 Student: Lärare: Underskrift: Underskrift: Datum: Datorsystem Laboration 2 1 Innehåll 1 Inledning 2 1.1 Introduktion..................................

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2017-10-26 Lokal TER1, TER3 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor (inklusive

Läs mer

Tentamen Datorteknik Y, TSEA28 Datum 2012-08-14

Tentamen Datorteknik Y, TSEA28 Datum 2012-08-14 Tentamen Datorteknik Y, TSEA28 Datum 2012-08-14 Lokal TER2 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Datorteknik Y Institution ISY Antal frågor 6 Antal sidor (inklusive denna sida) 7 Kursansvarig Andreas

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2017-08-15 Lokal TER4 Tid 14-18 Kurskod Provkod Kursnamn Provnamn Institution Antal frågor 6 Antal sidor (inklusive denna sida) 6 Kursansvarig Lärare som besöker skrivsalen

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Tallriksmodellen Stackoperationer Element kan endast

Läs mer

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

Tentamen Datorteknik Y, TSEA28 Datum 2012-06-02 TER2, TER4, TERE Tid 14-18 Tentamen Datorteknik Y, TSEA28 Datum 2012-06-02 Lokal TER2, TER4, TERE Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Datorteknik Y Institution ISY Antal frågor 7 Antal sidor (inklusive denna sida) 10

Läs mer

F4: Assemblerprogrammering

F4: Assemblerprogrammering F4: Assemblerprogrammering Hoppinstruktioner Branch Jump Med vilkor IF satser Loopar while-loopar do-while- loopar for-loopar Stackhantering Underprogram 1 BRA rel_adr Branch Always Relativadressering

Läs mer

Datorsystemteknik DAV A14 Föreläsning 1

Datorsystemteknik DAV A14 Föreläsning 1 Innehåll Datorsystemteknik DAV A14 Föreläsning 1 Kursinformation Introduktion till datorsystem Programmeringsmodellen Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec

Läs mer

3. Mikroprogrammering II

3. Mikroprogrammering II 3. Mikroprogrammering II lite repetition in/ut-matning avbrott på OR-datorn hoppinstruktion labben Olle Roos dator LDA 000 12 ADD 100 7 STA 000 13 12 1 13 8 13 6 8 0 18,1,11 2,3,5,11 7,8,11 17,10 18,1,11

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2015-10-20 Lokal TERE, TER2 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor (inklusive

Läs mer

Omtentamen i CDT204 - Datorarkitektur

Omtentamen i CDT204 - Datorarkitektur Omtentamen i CDT204 - Datorarkitektur 2012-11-05 Skrivtid: 08.10-12.30 Hjälpmedel: Miniräknare och valfritt skriftligt (ej digitalt) material. Lärare: Stefan Bygde, kan nås på 070-619 52 83. Tentamen är

Läs mer

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden Datormodell Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden Intel 4004 från 1971 Maximum clock speed is 740 khz Separate program and data

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2016-08-16 Lokal TER2, TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor (inklusive

Läs mer

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28 Tentamen (Exempel) Datorteknik Y, TSEA28 Datum 2018-10-31 Lokal TER4 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 7 Antal sidor (inklusive

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2016-10-18 Lokal TER1 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 7 Antal sidor (inklusive

Läs mer

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

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP. Övningsuppgifter Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP. F.2 Ett antal på varandra följande minnesord har

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #16 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Behovet av ändring av programflödet För att kunna skriva

Läs mer

Mikroprogrammering I

Mikroprogrammering I ikroprogrammering I Olle Roos-datorn (fö2+) Björn Lindskog-datorn (lab) Att bygga en CPU Pipelinad dator (fö4,lab2) Variabel exekveringstid Variabelt format Inget överlapp Central styrenhet, som är mikroprogrammerad

Läs mer

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet. Datorteknik Tomas Nordström Föreläsning 2 För utveckling av verksamhet, produkter och livskvalitet. Föreläsning 2 Check av övningar Von Neumann arkitekturen Minne, CPU, I/O Instruktioner och instruktionscykeln

Läs mer

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

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1 Halmstad University School of Information Science, Computer and Electrical Engineering Tomas Nordström, CC-lab TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1 Datum: 2012-05- 23 Tid och plats: 9:00 13:00 i

Läs mer

Övningsuppgifter i Mikrodatorteknik 4p/5p

Övningsuppgifter i Mikrodatorteknik 4p/5p Övningsuppgifter i Benny Thörnberg Mittuniversitetet Inst. för Informationsteknologi och medier Hösten 2005 1 Exekvering av assemblerkod 1.1 Statusflaggors beteende Vad blir C-, N- och Z- flaggornas värden

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #16 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Behovet av ändring av programflödet För att kunna skriva

Läs mer

Lösningsförslag till Tenta i Mikrodator

Lösningsförslag till Tenta i Mikrodator Lösningsförslag till Tenta i Mikrodator 050113 1. Vilka register finns det i processorn och vad används dessa till? D0 till D7: Dataregister som används för beräkningar A0 till A6: Adressregister som används

Läs mer

F8: Undantagshantering

F8: Undantagshantering F8: Undantagshantering Undantagshantering i 68 Vad är ett undantag? Typer av undantag Att skriva undantagsrutiner Undantagshantering, vad och varför? Exempel: Ett system ska mäta temperatur var :e sekund

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 13 mars 2013, klockan 14:00 19:00 i Vic 2 A-D, 3 A-C. Tillåtna hjälpmedel: på tentan utdelad

Läs mer

Programexempel för FLEX

Programexempel för FLEX Aktivera Kursens mål: Konstruera en dator mha grindar och programmera denna Aktivera Förra veckans mål: Konstruera styrenheten. genom att. implementera olika maskininstruktioner i styrenheten. Kunna använda

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) TSEA28 Datorteknik Y (och U) Föreläsning 5 Kent Palmkvist, ISY TSEA28 Datorteknik Y (och U), föreläsning 6, Kent Palmkvist 2017-01-23 2 Dagens föreläsning 68000 (Tutor) Adresseringsmoder M68008 stackhantering

Läs mer

Föreläsningsanteckningar 4. Pipelining

Föreläsningsanteckningar 4. Pipelining Föreläsningsanteckningar 4. Pipelining Olle Seger 2012, olles@isy.liu.se 21 januari 2013 1 Inledning Denna föreläsning handlar om pipelining, som är den helt dominerande processorarkitekturen i dag. Man

Läs mer

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion Moment 2 Digital elektronik Föreläsning Inbyggda system, introduktion Jan Thim 1 Inbyggda system, introduktion Innehåll: Historia Introduktion Arkitekturer Mikrokontrollerns delar 2 1 Varför lär vi oss

Läs mer

Stack och subrutiner Programmeringskonventionen

Stack och subrutiner Programmeringskonventionen Stack och subrutiner Programmeringskonventionen Du ska förstå hur en instruktion behandlas i processorn Du ska känna till några fler instruktioner Du ska veta hur maskinkoden för ett program byggs upp

Läs mer

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: 20120410 Tid: 14:00-18:00.

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: 20120410 Tid: 14:00-18:00. Mikrodatorteknik Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3 7,5 högskolepoäng Namn: Personnummer: Tentamensdatum: 20120410 Tid: 14:00-18:00 Hjälpmedel: Totalt antal poäng på tentamen:

Läs mer

Tenta i Digitalteknik

Tenta i Digitalteknik Tenta i Digitalteknik Kurskod D0011E Tentamensdatum 2010-06-01 Skrivtid 9.00-14.00 (5 timmar) Maximalt resultat 50 poäng Godkänt resultat 25 poäng inkl bonus Jourhavande lärare Per Lindgren Tel 070 376

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2017-06-02 Lokal G35, TER2, TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor

Läs mer

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013 Rahim Rahmani (rahim@dsv.su.se) Division of ACT Department of Computer and Systems Sciences Stockholm University SVAR TILL TENTAMEN I DATORSYSTEM, VT2013 Tentamensdatum: 2013-03-21 Tentamen består av totalt

Läs mer

0.1. INTRODUKTION 1. 2. Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

0.1. INTRODUKTION 1. 2. Instruktionens opcode decodas till en språknivå som är förstålig för ALUn. 0.1. INTRODUKTION 1 0.1 Introduktion Datorns klockfrekvens mäts i cykler per sekund, eller hertz. En miljon klockcykler är en megahertz, MHz. L1 cache (level 1) är den snabbaste formen av cache och sitter

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär: Lösningsförslag för 725G45-tentan 3/11-10 1. Vad menas med Von Neumann-arkitektur? (2p) En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär: Data och instruktioner lagras i samma

Läs mer

D/A- och A/D-omvandlarmodul MOD687-31

D/A- och A/D-omvandlarmodul MOD687-31 D/A- och A/D-omvandlarmodul MOD687-31 Allmänt Modulen är helt självförsörjande, det enda du behöver för att komma igång är en 9VAC väggtransformator som du kopplar till jacket J2. När du så småningom vill

Läs mer

Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller

Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller Aktivera Kursens mål: LV5 Fo12 Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller Aktivera Förra veckans mål: Konstruera styrenheten. genom att. implementera olika

Läs mer

CE_O3. Nios II. Inför lab nios2time

CE_O3. Nios II. Inför lab nios2time IS1200 Exempelsamling till övning CE_O3, 2015 CE_O3. Nios II. Inför lab nios2time 3.1. Logiska operationer (se uppgift 1.2 c) Repetera (eller lär dig) innebörden av de logiska operationerna "bitvis AND",

Läs mer

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

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler Talsystem Talsystem - binära tal F1.1. Hur många unsigned integers kan man göra med n bitar? Vilket talområde får dessa

Läs mer

Datorteknik TSIU02 Kursinformation

Datorteknik TSIU02 Kursinformation Datorteknik TSIU02 Kursinformation Michael Josefsson 24 maj 2018 1.1 Allmänt Kursen handlar om praktisk datorteknik på en grundläggande nivå. Programmerar man på en ännu lägre nivå är man processorkonstruktör!

Läs mer

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar Digitalteknik EIT020 Lecture 15: Design av digitala kretsar November 3, 2014 Digitalteknikens kopplingar mot andra områden Mjukvara Hårdvara Datorteknik Kretskonstruktion Digitalteknik Elektronik Figure:,

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2017-01-17 2 Dagens föreläsning Kort repetition Större programmeringsexempel Subrutiner

Läs mer

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet Datorarkitektur - en inledning Organisation av datorsystem: olika abstraktionsnivåer System S den mest abstrakta synen på systemet A B C Ett högnivåperspektiv på systemet a1 b1 c1 a2 b3 b2 c2 c3 En mera

Läs mer

Styrenheten styrsignalsekvenser programflödeskontroll

Styrenheten styrsignalsekvenser programflödeskontroll Styrenheten styrsignalsekvenser programflödeskontroll Kontroll av programflöde Instruktionerna är ordnade sekventiellt i minnet och utförs normalt i denna ordning. Vissa programkonstruktioner kräver dock

Läs mer

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28 Tentamen (Exempel) Datorteknik Y, TSEA28 Datum 2018-05-29 Lokal KÅRA,T1,T2, Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal

Läs mer

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

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11 A basic -bit Select between various operations: OR, AND, XOR, and addition Full Adder Multiplexer Digitalteknik och Datorarkitektur hp Föreläsning : introduktion till MIPS-assembler - april 8 karlmarklund@ituuse

Läs mer

Lösningsförslag till Tenta i Mikrodator

Lösningsförslag till Tenta i Mikrodator Lösningsförslag till Tenta i Mikrodator 040117 1. Vilka register finns det i processorn och vad används dessa till? D0 till D7: Dataregister som används för beräkningar A0 till A6: Adressregister som används

Läs mer

Datorteknik Övningsuppgifter

Datorteknik Övningsuppgifter 1 Datorteknik Övningsuppgifter Stefan Gustafsson, Michael Josefsson ver 0.4 2017-10-11 OBS! I uppgifterna får du själv mata in relevanta data för programmen. Vid simulering nollställs samtliga register

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2019-01-22 3 TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY Praktiska kommentarer Labanmälan öppnar måndag 28/1 kl 12.30 Anmälningssystemet

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18 F3 Föreläsning i Mikrodatorteknink 2006-08-29 Kärnan i microcontrollern består av ett antal register och en ALU. Till detta kommer också ett antal portar. Det finns 64 st portar. Några är anslutna mot

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering 1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data

Läs mer

Programmerbar logik. Kapitel 4

Programmerbar logik. Kapitel 4 Kapitel 4 Programmerbar logik Programmerbar logik (PLC: Programmable Logic Controller; fi. ohjelmoitava logiikka) är en sorts mikrodatorliknande instrument som är speciellt avsedda för logik- och sekvensstyrningsproblem.

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Torsdagen den 13 mars 2014, klockan 14:00 19:00 i MA:10. Tillåtna hjälpmedel: på tentan utdelad formelsamling,

Läs mer

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28 Tentamen (Exempel) Datorteknik Y, TSEA28 Datum 2018-xx-xx Lokal TER1, TER3 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 7 Antal sidor

Läs mer

Grundläggande datavetenskap, 4p

Grundläggande datavetenskap, 4p Grundläggande datavetenskap, 4p Kapitel 2 Datamanipulation, Processorns arbete Utgående från boken Computer Science av: J. Glenn Brookshear 2004-11-09 IT och Medier 1 Innehåll CPU ALU Kontrollenhet Register

Läs mer

Villkorliga hopp: 9/26/2011. Dagens mål: Du ska kunna.. Villrorliga (Relativa) hopp - forts Arb s 140. LV5 Fo12. LV5 Fo12. Aktivera Kursens mål:

Villkorliga hopp: 9/26/2011. Dagens mål: Du ska kunna.. Villrorliga (Relativa) hopp - forts Arb s 140. LV5 Fo12. LV5 Fo12. Aktivera Kursens mål: Aktivera Kursens mål: Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller Aktivera Förra veckans mål: Konstruera styrenheten. genom att. implementera olika maskininstruktioner

Läs mer

Datorsystemteknik DVGA03 Föreläsning 8

Datorsystemteknik DVGA03 Föreläsning 8 Datorsystemteknik DVGA03 Föreläsning 8 Processorns uppbyggnad Pipelining Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec Novak IT-inst LTH Innehåll Repetition av instruktionsformat

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola F-36 FLEX- och FLIS-datorn Ext-8 Tallriksmodellen Stackoperationer

Läs mer

LABORATION. Datorteknik Y

LABORATION. Datorteknik Y LABORATION Datorteknik Y Mikroprogrammering Version 3.3 2012 (AE) 2013 (AE) 2017 (KP) Namn och personnummer Godkänd Uppg. 1-3 1 1 Inledning Syftet med laborationen är att skapa en känsla för vad som händer

Läs mer

CE_O1. Nios II. Enkla assembler-instruktioner.

CE_O1. Nios II. Enkla assembler-instruktioner. IS1500 ösningsförslag till övning CE_O1 2014 CE_O1. Nios II. Enkla assembler-instruktioner. 1.1. Datorarkitektur för Nios II a) Tabell 3 1 i Nios II Processor Reference Handbook visar processorns register:

Läs mer

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning Den digitala automaten Vägen från digitaltekniken till det kompletta styrsystemet Lund University, Sweden Insignaler Sekvensnät Utsignaler Kan vi betrakta insignalmönstret som en instruktion och det som

Läs mer

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647 Lågnivåprogrammering Föreläsning 2 Lågnivåprogrammering Förberedelse inför laboration 2. Maskinspråk, assemblerspråk Talrepresentation En enkel dator, komponenter Instruktionsformat, instruktionscykel

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2018-01-16 3 TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY Praktiska kommentarer Mail kommer skickas ut när labanmälan är möjlig

Läs mer

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

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15. Aktivera Kursens mål: LV3 Fo7 Konstruera en dator mha grindar och programmera denna Aktivera Förra veckans mål: Konstruktruera olika kombinatoriska nät som ingår i en dator. Studera hur addition/subtraktion

Läs mer

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte CT3760 Mikrodatorteknik Föreläsning 4 Tisdag 2005-09-06 Stacken I datasammmanhang är en stack ett minnesområde. Det är processorn som använder stacken. För att skapa en stack anger man en adress i stackpekarregistret.

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #15 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Dataväg med pekarregister och stackpekare: I vår sjunde,

Läs mer

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28 Tentamen (Exempel) Datorteknik Y, TSEA28 Datum 2018-08-21 Lokal TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor

Läs mer

Föreläsning 4: Poster

Föreläsning 4: Poster Föreläsning 4: Poster Följande är genomgånget: type Person_Type is Namn : String(30); Skonr : Float; Kon : Boolean; Diskussion runt detta med olika typer m.m. Har tagit upp vilka operationer man kan göra

Läs mer

Utvärdering 2015 deltagare Voice Camp

Utvärdering 2015 deltagare Voice Camp Utvärdering 15 deltagare Voice Camp 8 deltagare Har det varit roligt på lägret? (%) 1 8 6 4 1 Ja Nej Varför eller varför inte? - Enkelt, jag älskar att sjunga och det är alltid kul att träffa nya vänner

Läs mer

Kursplanering för Mikrodatorteknik 4p/5p

Kursplanering för Mikrodatorteknik 4p/5p Kursplanering för Mikrodatorteknik 4p/5p Kursansvarig: Benny Thörnberg Tel: 060-148917 E-post: benny.thornberg@miun.se Kurslitteratur: Rune Körnefors, Mikrodatorer bit för bit, ISBN 91-44-30862-0 Introduktion

Läs mer

Att komma igång med FirstClass (FC)!

Att komma igång med FirstClass (FC)! Att komma igång med FirstClass (FC)! Vi har tillgång till FC genom vårt samarbete med folkhögskolor och därigenom med Folkbildningsnätet. FC kan användas på en dator på två sätt (dessutom kan du använda

Läs mer

Övning2 Datorteknik, HH vt12 - Programmering

Övning2 Datorteknik, HH vt12 - Programmering Övning2 Datorteknik, HH vt12 - Programmering För denna övning behöver man adresskarta och beskrivning av laborationsplattform. Finns bland föreläsningsanteckning samt i bilaga l till Lab l. Använd även

Läs mer

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion. F5 Föreläsning i Mikrodatorteknink 2006-09-05 Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion. Programräknaren

Läs mer

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK. Tomas Nordström Högskolan i Halmstad Dokumentversion 0.1, 2012-04- 01 Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK. Informationen till detta kompendium är

Läs mer

Assemblerprogrammering del 3

Assemblerprogrammering del 3 Assemblerprogrammering del 3 Dagens föreläsning behandlar: Kompendiet kapitel 9 och 10.4 Arbetsboken kapitel 16 Ur innehållet: Modularisering, subrutiner och strukturerad programutveckling (flödesdiagram)

Läs mer

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON Datorarkitekturer med operativsystem ERIK LARSSON Översikt Processorn Maskininstruktioner Dator Primärminne Data/instruktioner Kontroll Central processing unit (CPU) Fetch instruction Execute instruction

Läs mer

LV6 LV7. Aktivera Kursens mål:

LV6 LV7. Aktivera Kursens mål: Aktivera Kursens mål: LV6 LV7 Konstruera en dator mha grindar och programmera denna Aktivera Förra veckans mål: Konstruktruera olika kombinatoriska nät som ingår i en dator. Studera hur addition/subtraktion

Läs mer

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

Reducerad INSTRUKTIONSLISTA för FLIS-processorn Reducerad INSTRUKTIONSLI för FLIS-processorn 2013-11-08 2(10) Innehåll Sidan 3 Programmerarens bild av FLIS-processorn 4 Förklaring av beteckningar i instruktionslistan 5 Enkel dataflyttning 5 Logik 5

Läs mer