Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

Relevanta dokument
EDA Digital och Datorteknik

Bilda styrsignalerna till datavägen RESET FETCH EXECUTE NF NF NF. Digital och Datorteknik EDA /2011. Digital och Datorteknik EDA /2011

FLEX Instruktionslista

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

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

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

Assemblerprogrammering del 2

Digital- och datorteknik

Digital- och datorteknik

Programexempel för FLEX

INSTRUKTIONSLISTA för FLEX-processorn

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

Digital- och datorteknik

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:

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

Extrauppgifter för CPU12

Digital- och datorteknik

Digital- och datorteknik

F4: Assemblerprogrammering

Styrenheten styrsignalsekvenser programflödeskontroll

9/22/2012. Assemblernivå Beskrivning av funktion Automatiskt styrd borrmaskin Positionera borr Starta borr Borra genom arbetsstycke...

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

Digital- och datorteknik

LV6 LV7. Aktivera Kursens mål:

EDA215 Digital- och datorteknik för Z

11/16/2012. Assemblernivå Beskrivning av funktion Automatiskt styrd borrmaskin Positionera borr Starta borr Borra genom arbetsstycke...

Tentamen. Datorteknik Y, TSEA28

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

FLEXIBLE INSTRUCTION SET PROCESSOR FLISP

Tentamen. Datorteknik Y, TSEA28

Föreläsningsanteckningar 2. Mikroprogrammering I

ALU:n ska anslutas hur då?

Assemblerprogrammering

FLEXIBLE INSTRUCTION SET PROCESSOR FLISP

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

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Exempel 1 på Tentamen med lösningar

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Tentamen med lösningar

Assemblerprogrammering del 3

MC68HCS12 - översikt

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

Tentamen (Exempel) Datorteknik Y, TSEA28

Assemblerprogrammets struktur; exempel

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

Tentamen (Exempel) Datorteknik Y, TSEA28

Maskinorienterad Programmering 2010/11

Lösningsförslag tenta

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

Exempel 3 på Tentamen

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

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

EDA Digital och Datorteknik

Digital- och datorteknik

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

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

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

DAT 015 Maskinorienterad Programmering 2010/11. Ur innehållet: Historik Översikt, single-chip-computer DG256 Programmerarens bild (Exempel)

Tentamen (Exempel) Datorteknik Y, TSEA28

Digital- och datorteknik

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

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

Digital- och datorteknik

Datorsystemteknik DVGA03 Föreläsning 8

Assemblerprogrammets. struktur; exempel

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

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

Centralenheten: ALU, dataväg och minne

Assemblerprogrammering för HCS12

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

Assemblerprogrammering för ARM del 2

TENTAMEN (Något redigerad)

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

Tentamen Datorteknik Y, TSEA28 Datum

Exempel 2 på Tentamen med lösningar

Digital- och datorteknik

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

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

Tentamen (Svar och lösningsförslag)

3. Mikroprogrammering II

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

TENTAMEN(Nu anpassad till FLIS- processorn)

TSEA28 Datorteknik Y (och U)

Laboration nr 3 behandlar

Omtentamen i CDT204 - Datorarkitektur

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

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

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

CHALMERS TEKNISKA HÖGSKOLA

Lösningsförslag till Tenta i Mikrodator

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

Övningsuppgifter i Mikrodatorteknik 4p/5p

Transkript:

EDA 45 - Digital och Datorteknik Dagens föreläsning: Assemblerprogrammering för FLEX, Extra material Ext 8 Ur innehållet: Programmerarens bild av FLEX Instruktionsuppsättning Register åtkomliga för programmeraren Datatyper Adresseringssätt Användning av rum Minne för program och data In- och ut- matning Assemblerprogrammering för FLEX Programmerarens bild av FLEX Instruktioner Load/Store LDAA, LDAB, LDX, LDS, LEAX, LEAS STAA, STAB, STX, STS Data movement TFR regs,regd Program (Flow) control JMP, JSR, BRA, BSR, B(condition) Integer arithmetic/test ADDA, ADDB, ADCA, ADCB, SUBA, SUBB, SBCA, SBCB, CLRA, CLRB, CLR, NEGA, NEGB, NEG, DECA, DECB, DEX, DEC, INCA, INCB, INX, INC, CMPA, CMPB, X, S, BITA, BITB Logical operations ANDA, ANDB, ORAA, ORAB, ANDCC, ORCC, EORA, EORB, COMA, COMB, COM Shift/rotate ASLA, ASLB, ASL, ROLA, ROLB, ROL Stack operations PSHA, PSHB, PSHC, PSHX, PULA, PULB, PULC, PULX Register 7 0 A ACCUMULATOR A 7 0 B ACCUMULATOR B 7 0 X INDEX REGISTER 7 0 PROGRAM COUNTER 7 0 SP STACK POINTER 3 0 N Z V C CONDITION CODES REGISTER Adresseringssätt Inherent Omedelbar Absolut Register relativ Auto pre- increment/decrement Auto post- increment/decrement -relativ Assemblerprogrammering för FLEX 2

Operationer - FLEX Load/Store LDAA, LDAB, LDX, LDS, LEAX, LEAS STAA, STAB, STX, STS Data movement TFR regs,regd Program (Flow) control JMP, JSR, BRA, BSR, B(condition) Integer arithmetic/test ADDA, ADDB, ADCA, ADCB, SUBA, SUBB, SBCA, SBCB, CLRA, CLRB, CLR, NEGA, NEGB, NEG, DECA, DECB, DEX, DEC, INCA, INCB, INX, INC, CMPA, CMPB, X, S, BITA, BITB Logical operations ANDA, ANDB, ORAA, ORAB, ANDCC, ORCC, EORA, EORB, COMA, COMB, COM Shift/rotate ASLA, ASLB, ASL, ROLA, ROLB, ROL Stack operations PSHA, PSHB, PSHC, PSHX, PULA, PULB, PULC, PULX Assemblerprogrammering för FLEX 3 Adresseringssätt - FLEX Inherent Omedelbar Absolut Register relativ Auto pre- increment/decrement Auto post- increment/decrement -relativ Assemblerprogrammering för FLEX 4 2

Inherent ering Operandens läge är entydigt given av instruktionen. INCA Increment register A RTS Return from subroutine PSHA Push register A 5 Omedelbar ering Operanden följer omedelbart efter operationskoden. LDAA #8 CMPA #0 Load A immediate Compare contents of A with value + Data 6 3

Absolut ering Operanden finns på den som följer omedelbart efter operationskoden. Data LDAA $0 CMPA $0 Load A from address Compare contents of A with contents of address + Adress 7 Absolut ering Flödeskontroll Operanden är i detta fall den som följer omedelbart efter operationskoden. JMP $20 Jump to address JSR $20 Call subroutine at address + Adress Adress 8 4

Register-relativ ering Operanden finns på den som anges av ett register. Oftast kan en konstant anges, denna adderas till innehållet i registret för beräkningen. X n + Data n LDAA 3,X Load A via register X 9 Komplext eringssätt som utnyttjar något register för beräkning samtidigt som innehållet i registret modifieras av instruktionen.,-x,+x,x-,x+ pre decrement pre increment post decrement post increment Auto pre/postdecrement/increment +/-X+/- 0 5

Auto pre-decrement LDAA,-X X - X (X) A A =? A = Före Efter 50 5 52 X X 22 33 Auto pre-increment LDAA,+X X + X (X) A A =? A = 33 Före Efter 50 5 52 X X 22 33 2 6

Auto post-decrement LDAA,X- (X) A X - X A =? A = 22 Före Efter 50 5 52 X X 22 33 3 Auto post-increment LDAA,X+ (X) A X + X A =? A = 22 Före Efter 50 5 52 X X 22 33 4 7

Stack, stackpekare och stackoperationer Stack: En del av minnet som vi utnyttjar för tillfällig undanlagring. Stackpekare: Speciellt register för stackoperationer. Användning av minnet Programkod Data Register S, Stackpekare Stack 5 Modularisering - subrutiner Huvudprogram JSR Adr Ett stycke kod som återanvänds flera gånger. Man utför hopp till och från en subrutin Adr JSR Adr Subrutin RTS JSR Adr JSR Adr Jump to SubRoutine RTS ReTurn from Subroutine 6 8

JSR/RTS Huvudprogram Adr JSR JSR Adr Jump to SubRoutine S- S M(S) Adr Stack S JSR Adr Adr RTS RTS RTS ReTurn from Subroutine M(S) S+ S 7 Spara/Återställa registerinnehåll PSHA Push register A PSHX Push register X PULA Pull register A PULX Pull register X PSH<reg> Push Register S- S <reg> M(S) PUL<reg> Pull Register M(S) <reg> S+ S Jämför dessa instruktioner med eringssätten pre decrement och post increment. 8 9

Programräknar-relativ (-relativ) Operanden utgörs av en offset som följer omedelbart efter operationskoden. BRA Adr Branch jfr: Jump BSR Adr Branch to subroutine Adressberäkningen sker för +2. Adress = Offset + (+2) + Offset Adress Offset 9 Offsetberäkning, -relativ ering 8 30 Adress Bestäm Offset för de fall Label är Adress2 resp. Adress i vidstående figur. Lösning: Offset = Label - (+2) 3 32 33 34 35 36 5A Offset BRA Label Offset = Adress2 - (+2) = = 72 (33+2) = 3D 37 Offset = Adress - (+2) = = 8 (33+2) = E3 72 Adress2 20 0

EXECUTE BRA <offset> State nr RTN-beskrivning Styrsignaler 0 MA, T OE, LD MA, LD T. M+T+ R MR, f 3, f, g 0, LD R. 2 R OE R, LD, NF Programräknare, som här pekar på offset-byten erar minnet, placeras också i T-registret för kommande offsetberäkning Offseten (M), adderas till offsetens (T), slutligen läggs till, dvs -offseten beräknas från nästa instruktions op-kod, placeras i R Ny (från R) placeras i och EXECUTE-fasen avslutas. Operationskod: 5A, tillståndskodningar: I5A*Q5, I5A*Q6, I5A*Q7 2 Villkorligt programflöde loop A - A A=0? NEJ JA DECA BNE loop if (A=0) Z-flag ; else Z-flag 0; VILLKORSTEST: if (Z-flag=0) +offset; else ( next OP); 22

Villkorstest, EXECUTE BNE <offset> BNE Instruktion: Branch Not Equal BNE Adr RTN: If Z = 0: +Offset Flaggor: Beskrivning: Påverkas ej. Testar Z-flaggans värde. Om Z=0 utförs ett hopp till en Adr = +Offset. Offset räknas från en efter branchinstruktionen, dvs vid uträkningen av hoppen pekar på operationskoden direkt efter branchinstruktionen i minnet. Om Z= utförs inget hopp. Nästa instruktion blir i så fall den direkt efter branchinstruktionen i minnet. State nr RTN-beskrivning Styrsignaler 0 MA, T OE, LD MA, LD T. M+T+ R, + MR, f 3, f, g 0, LD R, Inc. 2 If (Z=0) : R ; OE R, LD =Z, NF. Instruktionsformat:, -rel offset Operationskod: 5E Observera att de två första tillstånden är identiska för samtliga villkorliga BRANCHinstruktioner Programräknare, som här pekar på offset-byten erar minnet, placeras också i T-registret för kommande offsetberäkning Offseten (M), adderas till offsetens (T), slutligen läggs till, dvs -offseten beräknas från nästa instruktions op-kod, placeras i R Ny (från R) placeras i ENDAST om LD aktiverats, dvs Z=0 och EXECUTE-fasen avslutas. Skillnaden i EXECUTE-fasen mellan villkorliga BRANCH-instruktioner är flaggtestet 23 Villkorstest Instruktionsuppsättningen för FLEX-processorn har ett antal villkorliga hoppinstruktioner. De kan indelas i följande tre grupper:. Enkla villkor. Test av ett 8-bitars tal. Vid de enkla villkorliga hoppen testas innehållet i en av flaggvipporna N, Z, V eller C och hoppet utförs om villkoret är uppfyllt, dvs den aktuella flaggvippans värde, är 0 resp. 2. Villkor för tal utan inbyggt tecken. Jämförelse mellan två 8-bitars tal som tillhör intervallet [0, 255]. Flaggor C och Z används här. 3. Villkor för tal med inbyggt tecken. (2-komplementform) Jämförelse mellan två 8-bitars tal som tillhör intervallet [-28,27]. Flaggor N, V och Z används här. 24 2

Enkla villkor Antag att ett tal P har testats, och flaggorna påverkats av testinstruktionen Instruktion Operation Flaggvillkor BEQ (Branch on Equal) Om P är 0 Z= BNE (Branch if Not Equal) BMI (Branch on Minus) BPL (Branch on Plus) Om P är skilt från 0 Om P är mindre än 0 Om P är större eller lika med 0 Z=0 N= N=0 25 Villkor, tal utan tecken Vi tolkar P och Q som tal utan tecken. Antag att en jämförelse utförts enligt P Q (Z,C), (flaggorna Z och C påverkats av instruktionen) Instruktion Operation Flaggvillkor BLO (Branch if LOwer) även BCS (Branch if Carry Set) BLS (Branch if Lower or Same) Om P är mindre än Q C= Om P är mindre än Q eller P är lika med Q. C= eller Z= BHI (Branch if Higher) Om P är större än Q C=0 och Z=0 BHS (Branch if Higher or Same) även BCC (Branch if Carry Clear) Om P är större än Q eller P är lika med Q. C=0 26 3

Villkor, tal med tecken Vi tolkar P och Q som tal med tecken. Antag att en jämförelse utförts enligt P Q (N,Z,V), (flaggorna påverkats av instruktionen) Instruktion Operation Flaggvillkor BLT (Branch if Less Than) Om P är mindre än Q N V = BLE (Branch if Less than or Equal) Om P är mindre än Q eller P är lika med Q N V = eller Z= BGT (Branch if Greater Than) Om P är större än Q N V =0 eller Z=0 BGE (Branch if Greater or Equal) Om P är större än Q eller P är lika med Q N V =0 27 FLEXsimulator Minne för program och data Assemblerprogrammering för FLEX 28 4

Periferienheter FLEX och omvärlden Dataväg LD MA Reg MA Adressbuss LD A Reg A LD B Reg B LD T Reg T LD X Reg X IncS S 0 C D Funkt 0 M U 2 X C in ALU U E Flaggor 0 g 2 MUX DecS LD S LD C 3 2 g g 0 Inc Reg R Reg CC LD R LD CC OE A OE B OE R OE CC OE X OE S OE Databuss LD I Reg I 30 st styrsignaler från styrenhet Flaggor Reset Styrbuss Styrenhet Processor MW MR Assemblerprogrammering för FLEX 29 Periferienheter Enhet som ansluts till centralenhetens buss-system kallas periferienhet. För varje periferienhet finns ett gränssnitt för in- och ut-matning (IO-interface) Adressbuss Databuss Styrbuss Gräns-snitt Gränssnitt Minnessystem Periferienheter Assemblerprogrammering för FLEX 30 5

Parallell utmatning Styrbuss Logik Databuss LD Data Register OE 0 IO Interface (Ut-port) Typisk tillämpning PÅ/AV LED (Light Emitting Diode) AV PÅ Assemblerprogrammering för FLEX 3 Parallell inmatning Typisk tillämpning: Avläs PÅ/AV Styrbuss Databuss 0 5V Logik OE Data Register LD IO Interface (In-port) AV PÅ Assemblerprogrammering för FLEX 32 6

FLEX - Minnesdisposition 00 0 FD A 7 A 6 A 5 A 4 A 3 A 2 A A 0 0 Port Minne för program och data FE 0 Port2 PortEnable = A 7 A 6 A 5 A 4 A 3 A 2 A A 0 Port2Enable = A 7 A 6 A 5 A 4 A 3 A 2 A A 0 FC FD FE FF IO IO RESET Portar Start MemoryEnable = PortEnable & Port2Enable Assemblerprogrammering för FLEX 33 Port - Avkodningslogik MW A 0 A A 2 A 3 A 4 A 5 & & & FD UT FD IN A 6 A 7 MR Assemblerprogrammering för FLEX 34 7

U MINNE Port 2 - Avkodningslogik MW A 0 A A 2 A 3 A 4 A 5 & & & FE UT FE IN A 6 A 7 MR Assemblerprogrammering för FLEX 35 FLEX - Realisering D0 A0 D A D2 A2 D3 A3 D4 A4 D5 A5 D6 A6 D7 A7 MW MR Logik D0 A0 D A D2 A2 D3 A3 D4 A4 D5 A5 D6 A6 D7 A7 MW MR CE D0 LD D OE D2 D3 D4 D5 D6 D7 D0 LD D OE D2 D3 D4 D5 D6 D7 D0 LD D OE D2 D3 D4 D5 D6 D7 D0 LD D OE D2 D3 D4 D5 D6 D7 Adressbuss Port Port 2 Databuss Styrbuss Assemblerprogrammering för FLEX 36 8

Periferikretsar STAA $FD LDAA $FD Assemblerprogrammering för FLEX 37 7-segment NBCD 2 7-segment b 7 b 6 b 5 b 4 b 3 b 2 b b 0 b 7 b 6 b 5 b 4 b 3 b 2 b b 0 Assemblerprogrammering för FLEX 38 9

EXEMPEL Rinnande ljus Raden är en kommentar Assemblerdirektiv ORG (Origin) label symbol för Referens till symbolisk Listfilen skapas vid assembleringen Assemblerprogrammering för FLEX 39 Ytterligare Assemblerdirektiv Assemblerdirektiv EQU (equate) Assemblerdirektiv FCB (form constant byte) Assemblerprogrammering för FLEX 40 20