TSEA28 Datorteknik Y (och U)

Relevanta dokument
TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Tentamen. Datorteknik Y, TSEA28

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

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

HF0010. Introduktionskurs i datateknik 1,5 hp

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

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

Grundläggande programmeringsteknik Datorsystem

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

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

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

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

Föreläsning 2. Operativsystem och programmering

Tentamen. Datorteknik Y, TSEA28

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Datorsystemteknik DAV A14 Föreläsning 1

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen. Datorteknik Y, TSEA28

Datorsystemteknik DAV A14 Föreläsning 1

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

TSEA28 Datorteknik Y (och U)

IT för personligt arbete F5

Datorsystemteknik DVGA03 Föreläsning 8

Grundläggande datavetenskap, 4p

Processor pipelining genom historien (Intel i9-intel i7)

Maskinorienterad Programmering IT2, LP2-2016/2017

Föreläsning 1: Intro till kursen och programmering

Jacquards vävstol, 1801

Datorteknik. Föreläsning 7 Historia och framtid. Institutionen för elektro- och informationsteknologi, LTH

TSEA28 Datorteknik Y (och U)

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Föreläsning 1: Intro till kursen och programmering

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

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

Tentamen. Datorteknik Y, TSEA28

Introduktion till programmering och Python Grundkurs i programmering med Python

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

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

Maskinorienterad Programmering LP3-2017/2018

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

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

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

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

Tentamen (Exempel) Datorteknik Y, TSEA28

Maskinorienterad Programmering LP2-2017/2018

Tentamen (Exempel) Datorteknik Y, TSEA28

TSEA28 Datorteknik Y (och U)

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

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

Digital- och datorteknik

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

Institutionen för elektro- och informationsteknologi, LTH

Innehåll. Datorteknik. Abstraktionsnivå 1. Spelkonsol - blockschema. Spelkonsol abstraktionsnivå 2. Abstraktionsnivå 2

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

Tentamen (Exempel) Datorteknik Y, TSEA28

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

LV6 LV7. Aktivera Kursens mål:

Laboration 2 i Datorteknik- Assemblerprogrammering II

TSEA28 Datorteknik Y (och U)

LABORATION. Datorteknik Y

TSEA28 Datorteknik Y (och U)

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

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

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Introduktion till ARM Cortex-M4

TSEA28 Datorteknik Y (och U)

Pipelining i Intel 80486

Digital- och datorteknik

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

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

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

TSEA28 Datorteknik Y (och U)

LABORATION. Datorkonstruktion D

Föreläsningsanteckningar 2. Mikroprogrammering I

Uppgift 1: a) u= a c + a bc+ ab d +b cd

3. Mikroprogrammering II

Exempeltentamen Datorteknik, EIT070,

1642 uppfann Blaise Pascal världens första mekaniska räknemaskin. Den kunde både addera och subtrahera. Den kan ses som en föregångare till datorn.

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

Transkript:

3 Tillgänglighet till information TSEA28 Datorteknik Y (och U) Föreläsning 1 Kent Palmkvist, ISY Vem är jag 2 Kent Palmkvist kentp@isy.liu.se Kontor 3B:502 (andra våning) Till E-huset Anvisningar för kursen (deadlines etc) Labbmaterial Gamla tentor Material även från Andreas Ehliar, Lennar Bengtsson, Camilla Eidem, och Tomas Svensson Labanmälan via Lisam Förstå Ingång 25 http://www.isy.liu.se/edu/kurs/tsea28 Kursmaterial (förutom bok) även på kurshemsidan Kursens mål N B-huset 2:a våning Föreläsare och kursansvarig Alla slides finns på kursens hemsida Hur en dator är uppbyggd och fungerar på registernivå Binär aritmetik Kunna Skriva små enkla assemblerprogram Ingång 27 Hantera in/utmatning Implementera instruktioner m h a mikroprogrammering 4

5 Kursens mål, forts. Senare kurser Känna till Elektronik kandidatprojekt Olika sätt att öka exekveringshastigheten Inbyggda DSP processorer Hur processorn påverkar operativsystemet Datorarkitektur Datorteknik ett datorsystem på ett chip Varför detta är intressant Processprogrammering och operativsystem Kompilatorkonstruktion? Fortsatt prestandautveckling? Miniatyrisering ger allt snabbare datorer Snabba upp beräkningsprogram/simuleringar Exponentiell prestandaökning En matematikintresserad Y:are En fysikintresserad Y:are Använda sensorer för insamling av mätdata En elektronikintresserad student Nästan all elektronik innehåller en dator Det är roligt! 8 För U Förstå begränsningar hos olika datorer En programmeringsintresserad U:are 7 För Y Principer för hur cache fungerar Moores lag Fysiska begränsningar finns Klockfrekvensökningen har avklingat

9 Många prestandamått Beräkningshastighet Instruktioner/s Administrativ information Effektförbrukning Värmeutveckling ger krav på kylning Storlek Fler transistorer och längre ledare ger större kapacitans och större effektförbrukning Pris 10 Aktuella trender inom datorstrukturer Kursens innehåll Hårdvaran allt mer specialiserad Går VT1 + VT2 Kryptering, videokodning/avkodning, DSP Många parallellkopplade datorer Ibland skapad genom att två datorer delar vissa bitar (inkl delar av processorn) Mjukvaran måste anpassas till denna hårdvara Kräver god förståelse för datorteknik hp (3hp tenta, 3hp lab) 1 föreläsningar 4 lektioner (2 under VT1) 5 laborationer (3 under VT1) 1 tentamen (4h) Självstudier > 100h!! Laborationsförberedelse ~ 12h per styck Varierar mellan studenter, vissa kan behöva mer! 12

13 15 Kurslitteratur Laborationer Computer Organization and Architecture Themes and Variations; Alan Clements Fem laborationer uppdelat på 2 x 2h (totalt 4h/lab) Lab1: Kodlås (introduktion till assembler) Lab2: Avbrott Laborationsanvisningar (finns på kurshemsidan) Lab3: Digitalur Lab4: Mikroprogrammering Notering: Tidigare års kurslitteratur går att använda, men saknar många detaljer Grundläggande Datorteknik (Roos) Lab5: Bussar/Cache Laborationsgrupper 2 personer per grupp Kompendium i Datorteknik (Wiklund) Max 30 personer i labbet Föreläsningar och lektioner Föreläsningarna bygger delvis på kursboken, men även annat material ingår 14 Elektronisk anmälan via Lisam Se dom som frågestunder Läs igenom labbeskrivning och dokumentation innan lektion! 1 Laborationsanmälan Lektioner för att hjälpa till med labbförberedelser Se till att vara förberedd innan lektion! 15 grupper per lab, 2 personer per grupp Labbanmälningssystemet begränsar inte antal grupper! Max 1 grupper per gång (om alla maskiner fungerar...) Kontrollera att labbtillfället passar (schemats indelning endast en rekommendation) Viktigt! Labbanmälan stänger dagen innan första labbtillfället Bara anmälda studenter får delta i laborationen Måndag 28/1 kl 12.30 öppnas labbanmälan

17 Laborationsförberedelser Förändringar från tidigare år Förberedelse inför laborationsuppgiften Ny laborationshårdvara (ARM-baserad) för laboration 1-3 Läsa labbkompendiet och annat material Kursboken fokuserar mer på ARM Lösa uppgifter/skriva kod innan laborationstillfället Ej förbered student kan tvingas lämna labblokal! Liknande laborationsuppgifter som för gamla systemet Tidigare år användes 8000-systemet (tutor) Laborationslokal 20 Förhoppningsvis är referenser till tutor borta ur årets material Nya Laborationshårdvaran: Darma N B-huset 2:a våning Mux1 B-huset, 2:a våning, mellan ingång 25 och 27 Ingång 25 Endast ingång från väster! Korridor C 21 Ingång 27 System med mikrokontroller baserad på Cortex-M4 processor Tillverkare: Texas Instruments (röda kortet och svarta kretsen) Processordesign: ARM Gröna kortet: Darma, lokalt LiU 22

23 Nya Laborationshårdvaran: Darma, forts. Processorkort (röda Ti Launchpad) tillgängligt för intresserade 150-200 kr Sök efter EK-TM4C123GXL site:.se för att hitta återförsäljare Mjukvaran laddas ned gratis från ti.com (kan kräva gratis registrering på site) 25 Lite datorhistoria Frakt + ev. tull kan kosta. Billigare gå ihop några stycken Ex 19011: mouser.se, 133 SEK, frakt 170 SEK! men fraktfritt för > 400 SEK => Köp 4 kort, betala bara 133 SEK/kort Fungerar på windows, mac, linux Analytic engine (1837, Charles Babbage) Ritningar men ingen fungerande maskin Ca 3 minuter för multiplikation av två 20-siffriga tal https://commons.wikimedia.org/wiki/file:babbage_difference_engine.jpg Z3 (1941, Konrad Zuse) Elektromekanisk (relä) 3 sekunder för multiplikation https://commons.wikimedia.org/wiki/file:z3_deutsches_museum.jpg I laborationsuppgifterna används lite extra extern hårdvara 2 Lite datorhistoria, forts. Lite datorhistoria Eniac, 194 Radiorör, 150 kw effektförbrukning 5000 additioner/subtraktioner per sekund https://commons.wikimedia.org/wiki/file:eniac_penn1.jpg#/media/file:eniac_penn1.jpg Intel 4004, 1971 2300 transistorer Första enchips mikroprocessorn 740 khz klockfrekvens (0.095 MIPS) https://commons.wikimedia.org/wiki/file:legendary_chip_designer_betting_on_hu man_mind.jpg#/media/file:legendary_chip_designer_betting_on_human_mind.jpg

27 Lite datorhistoria, forts. Superdator, vektormaskin, 80 MHz, 10 MIPS Apple II, 1977, resp. VIC20, 1981 (tidiga hemdatorer) "Cray-1-p1010221" by Rama - Own work. Licensed under CC BY-SA 2.0 fr via Wikimedia Commons https://commons.wikimedia.org/wiki/file:cray-1-p1010221.jpg#/media/file:cray-1-p1010221.jpg 1 MHz klockfrekvens, 3500 transistorer 48 Kbyte RAM minne (max) https://commons.wikimedia.org/wiki/file:commodorevic-20-fl.jpg#/media/file:commodore-vic-20-fl.jpg 28 https://commons.wikimedia.org/wiki/file:imb_pcimg_7271.jpg#/media/file:imb_pc-img_7271.jpg IBM PC, 1981 1-bitars 8088 processor, 29000 transistorer 4.77 MHz klockfrekvens, max 40 KB RAM Acorn Archimedes ARM Ltd startat av Apple och Acorn 1990 1 miljon transistorer 1 GHz klockfrekvens Intel Haswell (i3, i5, i7), 2013 32 kärnor, 19 miljarder transistorer, 180W Mobila enheter har också en ökande komplexitet Inkluderar oftast grafikgenerering, 4G och WLAN Apple A5 (Iphone 4S), 2011 Apple A11 Bionic (Iphone 8), 2017 http://www.oldcomputers.net/ibm5150.html Effektutveckling blir en viktig begränsning för persondatorer runt år 2000 AMD Epyq, 2017 2 kärnor, 800 Mhz kärnor (2 stycken på 2.4GHz), 4.3 miljarder transistorer Apple A12 Bionic (Iphone XR), 2018 https://commons.wikimedia.org/wiki/file:acornarchimedeswiki.jpg#/media/file:acornarchimedes-wiki.jpg Inklusive grafikprocessor, 1.4 miljarder transistorer, 3 GHz Lite datorhistoria, forts. 32-bitars RISC processor, 25000 transistorer 4-bitars 808 kompatibel ARM, 1985 Lite datorhistoria, forts. 29 AMD4, 2003 8-bitars 502 processor Lite datorhistoria, forts. Cray-I, 1975 kärnor (2 stycken på 2.5GHz), 7 miljarder transistorer 30

Lite datorhistoria, summering Hastigheten (instruktioner per sekund) ökar exponentiellt Priset går ned trots ökad prestanda Moores lag Antal transistorer på ett chip dubbleras vartannat år Generellt: prestanda ökar också exponentiellt Olika exponenter => differenser ökar också exponentiellt (t ex hastighet minne jämfört med cpu) 31 En programmerares vy av en dator Högnivåspråk Interpreterande (tolka kod under körning, t ex JAVA) Kompilerande (översätt innan körning till maskinkod, t ex C) Assemblerspråk Datorns egna interna språk Alla högnivåspråk måste översättas till detta Mikroprogrammering (inget en vanlig användare ser) Styrning av interna funktioner i datorns inre Översiktsbeskrivning av en dator Indata En dators inre uppbyggnad 33 Switchar, sensorer, kommunikationsmoduler Datorsystem Indata Utdata lysdioder, reläer, video, etc. In och utdata i digital form (binära tal) Minne Buss Utdata Processor (CPU) Data Buss Program 34

35 Översiktsbeskrivning av en dator, forts Typer av byggblock i processorn Minnet innehåller två typer av information Indata Minne Buss Utdata Processor (CPU) Data Buss Program Datavärden som sparas i datorn 3 Register Lagrar ett värde tillfälligt En eller flera bitars värde Större vektor av registervärden Minnescell väljs via adress Ibland samma buss för data in och data ut Styrsignaler väljer om data sparas eller läses Processorn läser instruktioner från minnet och utför dessa operationer på värden från indata och minne. En instruktion åt gången Resultat hamnar i minne och som utsignaler Datorsystem Minne Buss Utdata Data in 1234 578 Data Buss Program Aritmetikenhet för enklare beräkningar Addition, subtraktion, and, or etc. Resultat analyseras (addition ger nollresultat, minnessiffra från addition etc.) Styrsignaler väljer vilken funktion som ska beräknas Data ut : Adress Byggblock, forts. Processor (CPU) Data ut Minne Översiktsbeskrivning av en dator, forts Indata Data in 1234 Instruktioner som beskriver vilka operationer som utföras Datorsystem 37 38 Data in A Resultat Y ALU Data in B Flaggor Y = f(a,b) där f kan vara AND, OR, XOR, NOT, ADD,SUB,SHIFT,ROTATE, Flaggor anger egenskaper hos resultat, t ex =0, minnessiffra, etc.

Byggblock, forts. 39 Endast en källa aktiv åt gången Bussar Skickar vidare värden från ett block till många andra Hämta nästa instruktion från minnet Avkoda instruktionen, styr vilka värden som skickas vart, påverkas ibland av flaggorna värde Klocka styr hur ofta styrsignaler ändras Styrsignaler Styrenhet Flaggor : Klocka Exekvering av program kräver minst Aritmetikenhet (ALU) Beräknar addition etc. Z: flagga = 1 om resultat = 0 In Adress Lagra mellanresultat Styrenhet (CU) 4 bitar Binärt data Två delar Vilken typ av operation (4 bit => 1 olika) Argument till operation (32 bit) I detta exempel: 3 bitars ord i minnet 32 bitar Typkod Förklaring 0000 (0) 0001 (1) 0010 (2) Ladda in argument i D Addera argument till D Jämför argument med D, Z=1 om D=argument,Z=0 annars Sätt PC till argument om Z=0 Sätt PC till argument om Z=1 Sätt PC till argument om argument = 2000 skicka D till display om argument = 2100 hämta aktuellt displayvärde till D om argument = 2200 hämta sensorvärde till D, D=1 om någon står i dörren, D=0 annars 0011 (3) 0100 (4) 0101 (5) 0110 () 0110 () 0110 () 42 Använd så kallade mnemonics istället Data PC CU ALU D Argument xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Svårt komma ihåg och läsa binärmönster Minne Tillfälliga register (D) Håller reda på position för aktuell instruktion i programminnet 40 Typ Assemblerinstruktioner Programräknare (PC) Lagrad i en minnescell Instruktion 41 Maskininstruktionens utseende Styrenhet Z Ut Typkod Assemblerinstruktion Föklaring 0000 (0) 0001 (1) 0010 (2) 0011 (3) 0100 (4) 0101 (5) 0110 () 0110 () 0110 () load D,#värde add D,#värde comp D,#värde bne adress beq adress branch adress bl 2100 Ladda in argument i D Addera argument till D Jämför D med argument, Z=1 om D=argument, Z=0 annars Sätt PC till argument om Z=0 Sätt PC till argument om Z=1 Sätt PC till argument om argument = 2000 skicka D till display om argument = 2100 hämta aktuellt displayvärde till D om argument = 2200 hämta sensorvärde till D, D=1 om någon står i dörren, D=0 annars

43 Assemblerinstruktioner, forts. Första steget: definiera en algoritm Olika processorer har olika mnemonics ARM 8000 x8_4 Betydelse LDR MOV MOV Läs data från minne STR MOV MOV Skriv data till minne B BRA JMP Hoppa i programmet Initiering när strömmen slås på Jämför Hitta sensorvärdesändring 0 till 1 Addera Öka displayvärde Hitta sensorvärdesändring 1 till 0 Börja om att leta efter sensor=1 CMP ADD CMP ADD COMP ADD Exakt funktion varierar mellan olika processorfamiljer Litet exempel: Räkna studenter Jag vill räkna antal studenter som besöker mig på kontoret under en dag Sätt en sensor i dörren och en sifferdisplay En dator får räkna Y:are: ni vet hur man bygger detta med två räknare, 7segmentsavkodare, enpulsare etc. Varje gång sensorvärdet ändras från 0 till 1 ska displayvärdet ökas med 1 Detta byggsätt saknar flexibilitet när nya funktioner ska läggas till 44 45 Nollställ displayvärde sensorvärde = 1 Dela upp i steg Öka displayvärde med 1 sensorvärde = 0 Implementering i exempeldatorn Adress Maskinkod Assemblerinstruktion Förklaring 0 1 2 3 4 5 7 8 9 10 11 load D,#0 comp D,#1 bne 2 bl 2100 add D,#1 comp D,#0 bne 8 branch 2 ; Nollställ D ; sätt display till 00 ; Står någon i dörren? ; nej, gör om ; hämta displayvärdet ; öka displayvärdet ; visa det nya värdet ; Är dörren tom? ; nej, kontrollera igen ; börja om Nollställ displayvärde sensorvärde = 1 Öka displayvärde med 1 sensorvärde = 0 4

47 Implementering i exempeldatorn, forts. Adress Maskinkod Typ Arg. Assemblerinstruktion Förklaring 0 1 2 3 4 5 7 8 9 10 11 load D,#0 comp D,#1 bne 2 bl 2100 add D,#1 comp D,#0 bne 8 branch 2 ; Nollställ D ; sätt display till 00 ; Står någon i dörren? ; nej, gör om ; hämta displayvärdet ; öka displayvärdet ; visa det nya värdet ; Är dörren tom? ; nej, kontrollera igen ; börja om 0 2 3 1 2 3 5 0 2000 2200 1 2 2100 1 2000 2200 0 8 2 sensorvärde = 1 Label Assemblerinstruktion Förklaring start: load D,#0 comp D,#1 bne wait1 bl 2100 add D,#1 comp D,#0 bne wait0 branch wait1 ; Nollställ D ; sätt display till 00 ; Står någon i dörren? ; nej, gör om ; hämta displayvärdet ; öka displayvärdet ; visa det nya värdet ; Är dörren tom? ; nej, kontrollera igen ; börja om wait1: Öka displayvärde med 1 wait0: sensorvärde = 0 48 Assembler Ytterligare funktion: fördröjning Översätter assemblerinstruktion till maskinkod Varje besökare kan ge flera pulser Skriv en textfil med assemblerinstruktioner Håller även reda på adresser Ange bara symboliska namn på platser i programmet (kallas label) Adress Maskinkod Typ Arg. wait0: label comp D,#0 bne wait0 ; Är dörren tom? ; nej, kontrollera igen 8 9 10 2200 2 0 3 8 49 Assemblerversion av programmet Nollställ displayvärde Två ben, väska, kläder. Lösning: vänta en stund efter display räknat upp En loop i programmet som bara tar tid att utföra Nollställ displayvärde sensorvärde = 1 Öka displayvärde med 1 sensorvärde = 0 Nollställ displayvärde sensorvärde = 1 Öka displayvärde med 1 Vänta 0.5s sensorvärde = 0 50

51 Ytterligare funktion: fördröjning, forts. Label Assemblerinstruktion Förklaring start: load D,#0 comp D,#1 bne wait1 bl 2100 add D,#1 load D,#0 add D,#1 comp D,#10000 bne delay comp D,#0 bne wait0 branch wait1 ; Nollställ D ; sätt display till 00 ; Står någon i dörren? ; nej, gör om ; hämta displayvärdet ; öka displayvärdet ; visa det nya värdet ; starta timer på 0 ; öka timer med 1 ; lämpligt antal klockcykler? ; inte tillräckligt många varv ; Är dörren tom? ; nej, kontrollera igen ; börja om wait1: delay: wait0: Öka displayvärde med 1 52 Kan bara skriva värde => behöver lagra värdet i datorn också store D,adress Skriv värdet i D på angiven adress i minnet En uppsättning operationer för varje register Lagra i minnet => Två nya instruktion för att läsa och skriva i minnet Välj adress som inte används till annat (t ex i exemplet: 100) Minne D adress : adress store D,adress : 54 Skillnad mellan instruktionstyp 0 och 7 Olika funktion! Fler register => fler operationstyper 8 D-registrets värde förstörs när sensor läses, kan inte användas Två alternativ: Fler register eller lagring i minnet Läs värdet på angiven adress i minnet och placera det i D load D,adress Ta bort möjlighet att läsa av värdet load D,adress Minne Förklaring 7 D sensorvärde = 0 Enklare display => billigare system Kod Assemblerinstr. Vänta 0.5s Billigare system: Förenkla display Lägg till instruktioner för att spara och hämta ett värde i minnet sensorvärde = 1 53 Instruktioner för läsa och skriva i minnet Nollställ displayvärde 0 load D,#värde t ex load D,#1 Placera värdet 1 i D 7 load D,adress t ex load D,1 Läs adress 1 och placera dess värde i D. Motsvarande maskinkod (binärt) load D,#1 => 000000000000000000000000000000000001 load D,1 => 011100000000000000000000000000000001 Dvs samma argument i maskinkoden, men olika innebörd pga olika operationstyp Skillnad indikeras i detta fall med tecknet # framför argumentet

2019-01-18 10:13 Exempel med displayvärdet i minnet start: wait1: delay: wait0: load D,#0 store D,100 comp D,#1 bne wait1 load D,100 add D,#1 store D,100 load D,#0 add D,#1 comp D,#10000 bne delay comp D,#0 bne wait0 branch wait1 ; Nollställ D ; spara displayvärde adress 100 ; sätt display till 00 ; Står någon i dörren? ; nej, gör om ; hämta displayvärdet ; öka displayvärdet ; visa det nya värdet ; spara nya värdet i minnet ; starta timer på 0 ; öka timer med 1 ; lämpligt antal klockcykler? ; inte tillräckligt många varv ; Är dörren tom? ; nej, kontrollera igen ; börja om www.liu.se Nollställ displayvärde sensorvärde = 1 Öka displayvärde med 1 Vänta 0.5s sensorvärde = 0 55