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

Relevanta dokument
Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

FLEX Instruktionslista

INSTRUKTIONSLISTA för FLEX-processorn

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

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

Digital- och datorteknik

EDA Digital och Datorteknik

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

Digital- och datorteknik

Programexempel för FLEX

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

Digital- och datorteknik

Digital- och datorteknik

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

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:

LV6 LV7. Aktivera Kursens mål:

Extrauppgifter för CPU12

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

ALU:n ska anslutas hur då?

EDA215 Digital- och datorteknik för Z

Styrenheten styrsignalsekvenser programflödeskontroll

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

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

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

FLEXIBLE INSTRUCTION SET PROCESSOR FLISP

Digital- och datorteknik

FLEXIBLE INSTRUCTION SET PROCESSOR FLISP

F4: Assemblerprogrammering

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

EDA Digital och Datorteknik

Tentamen. Datorteknik Y, TSEA28

Föreläsningsanteckningar 2. Mikroprogrammering I

EDA451 - Digital och Datorteknik 2010/2011. EDA Digital och Datorteknik

Digital- och datorteknik

Tentamen (Exempel) Datorteknik Y, TSEA28

Digital- och datorteknik

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

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

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

Exempel 1 på Tentamen med lösningar

Digital- och datorteknik

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

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

TENTAMEN (Något redigerad)

Tentamen. Datorteknik Y, TSEA28

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

Lösningsförslag tenta

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen med lösningar

Tentamen. Datorteknik Y, TSEA28

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

Tentamen. Datorteknik Y, TSEA28

Laboration nr 3 behandlar

Tentamen. Datorteknik Y, TSEA28

TENTAMEN(Nu anpassad till FLIS- processorn)

Assemblerprogrammering

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

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

MC68HCS12 - översikt

Exempel 3 på Tentamen

Tentamen. Datorteknik Y, TSEA28

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

Assemblerprogrammets struktur; exempel

Datorsystemteknik DVGA03 Föreläsning 8

Tentamen Datorteknik Y, TSEA28 Datum

Maskinorienterad Programmering 2010/11

Digital- och datorteknik

Tentamen (Svar och lösningsförslag)

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

Ext-14 (Ver ) Ext-14. FLEX-processorns styrenhet med fast logik

Assemblerprogrammering för ARM del 2

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

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

Exempel 2 på Tentamen med lösningar

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

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

Centralenheten: ALU, dataväg och minne

EDA451 - Digital och Datorteknik 2009/2010. EDA Digital och Datorteknik

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

exempel på Tentamen 2

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

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

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

Digitalteknik och Datorarkitektur 5hp

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

TSEA28 Datorteknik Y (och U)

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

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

Assemblerprogrammets. struktur; exempel

Assemblerprogrammering del 3

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

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U)

CHALMERS TEKNISKA HÖGSKOLA

Omtentamen i CDT204 - Datorarkitektur

Transkript:

EDA 45 - Digital och Datorteknik Dagens föreläsning:, exemplifierad med FLEX Arbetsboken kapitel 9-22 Ur innehållet: En automatisk styrenhet Grundläggande d instruktioner Adresseringssätt Konstruktion och implementering av maskininstruktioner FLEX-datorn Dataväg Reg MA Adressbuss LD MA Adress LD A Reg A LD B Reg B 0 0 C M U 2 X C 3 2 Funkt C in D LD R LD T ALU U Reg R Reg T E Flaggor g 2 LD CC 0 MUX Reg CC LD X Reg X IncS DecS LD S S Inc LD MR MW Minne Data ut Data in g g 0 OE A OE B OE R OE CC OE X OE S OE MR Databuss LD I Reg I 30 st styrsignaler från styrenhet Flaggor Reset Styrenhet Processor 2

Centralenhetens t arbetsätt FETCH EXECUTE NF NF NF FETCH EXECUTE 3 Styrenhetens t uppgift LD A LD B LD R (i 7 -i 0) OE A OE B OE R Flaggor (4) (N, Z, V, C) Styrenhet f 0 f f 2 f 3 g 0 Styrsignaler till datavägen (30 st) g g 2 Reset Inc IncS DecS MR MW Bilda styrsignalerna till datavägen 4

Tillståndsgenerering i M=COUNT/LOAD G3 G4 CTR4 5CT=0 M M2 G3 3CT=5 G4 C5 234+ 2,3,4+ C ut Tillstånden definieras enligt: q 3 q 2 q q 0 d 0 d d 2,5 D,5 D,5 D q 0 q 0000 000 000 00 000 00 00 0 q 2 d 3,5 D q 3 FETCH EXECUTE Q 0 Q Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 Q 5 FETCH EXECUTE 5 Tillståndssekvens Flaggor (4) () i 7 -i 0 LD A LD B LD R OE A OE B OE R Q 0 Q Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 Q 5 FETCH EXECUTE LOAD Reset CTR4 5CT=0 M M2 G3 3CT= G4 5 C5 2,3,4+ Kombinatoriskt nät f 0 f f 2 f 3 g 0 g g 2 Inc Styr- signaler till datavägen (30 st) FETCH EXECUTE (Q 3 = 00) 0,5 D,5 D,5 D q 0 q q 2 IncS DecS MR MW 0,5 D q 3 NF NF 6

(Q 0, Q, Q 2 ) Q 0 Q Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 Q 5 FETCH EXECUTE Tillstånd Summaterm RTN-beskrivning Styrsignaler (=) Q 0 Q 0 FF 6 R f 3, f 2, f, f 0, LD R Q Q R MA OE R, LD MA Q 2 Q 2 M MR, LD Ekvationer: LDR = Q0 f0 = Q0 f = Q0 f2 = Q0 f3 = Q0 LDMA = Q OER = Q MR = Q2 LD = Q2 U = f(d,e,f,cin) f3 f2 f f0 Operation Resultat 0 0 0 0 Bitvis nollställning 0 0 0 0 D 0 0 0 E 0 0 Bitvis invertering D k 0 0 0 Bitvis invertering E k 0 0 Bitvis OR D OR E 0 0 Bitvis AND D AND E 0 Bitvis XOR D XOR E 0 0 0 D + 0 + Cin D + Cin 0 0 D + FF 6 + Cin D + Cin 0 0 D + E + Cin 0 D + D + Cin 2D + Cin 0 0 D +E k + Cin D E + Cin 0 Bitvis nollställning 0 0 Bitvis nollställning 0 Bitvis ettställning FF 6 7 FETCH (Q 3, Q 4 ) Q 0 Q Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 Q 5 FETCH EXECUTE Tillstånd Summaterm RTN-beskrivning Styrsignaler (=) Q 3 Q 3 MA, + OE, LD MA, Inc Q 4 Q 4 M I MR, LD I Efter FETCH-fasen finns en operationskod i register I 8

EXECUTE (Q 5, Q 5 ) Q 0 Q Q 2 Q 3 Q 4 Q 5 Q 6 Q 7 Q 5 Efter FETCH-fasen finns en operationskod i register I Vilka operationskoder finns det i FLEX? Se Instruktionslista för FLEX eller Arbetsbok.. Appendix B. OP # ~ Beteckning OP # ~ Beteckning OP # ~ Beteckning OP # ~ Beteckning 00 3 NOP 32 2 6 SUBA #Data 64 2 5 BLS Adr 96 2 6 JMP n,x 0 3 TFR AB A,B 33 2 6 SUBB #Data 65 2 5 BGT Adr 97 5 JMP AX A,X 02 3 TFR B,A 34 2 7 SBCA Adr 66 2 5 BGE Adr 98 5 JMP B,X 03 3 TFR A,CC 35 2 7 SBCB Adr 67 2 5 BLE Adr 99 2 5 JMP n,r 04 3 TFR CC,A 36 2 6 SBCA #Data 68 2 5 BLT Adr 9A 6 JSR,X 05 3 TFR X,S 37 2 6 SBCB #Data 69 2 7 JSR Adr 9B 2 8 JSR n,x 06 3 TFR S,X 38 5 NEGA 6A 4 RTS 9C 7 JSR A,X 07 5 EXG A,B 39 5 NEGB 6B 2 7 BSR Adr 9D 7 JSR B,X 08 5 EXG A,CC 3A 2 7 NEG Adr 6C 5 PSHA 9E 09 5 EXG B,CC 3B 4 ASLA 6D 5 PSHB 9F 0A 5 EXG X,S 3C 4 ASLB 6E 5 PSHC 0B 2 5 LDAA Adr 3D 2 6 ASL Adr 6F 5 PSHX 0C 2 5 LDAB Adr 3E 4 ROLA 70 4 PULA C5 0D 2 5 LDX Adr 3F4ROLB 74PULB C6 0E 2 5 LDS Adr 40 2 6 ROL Adr 72 4 PULC C7 6 ANDA,X 0F 2 4 LDAA #Data 4 4 INCA 73 4 PULX C8 6 ANDB,X 0 2 4 LDAB #Data 42 4 INCB 74 4 LEAX,-X C9 6 ORAA,X 2 4 LDX #Data 43 2 6 INC Adr 75 4 LEAX,X+ CA 6 ORAB,X 2 2 4 LDS #Data 44 4 DECA 76 2 6 LEAX n,x CB 6 EORA,X 3 2 5 STAA Adr 45 4 DECB 77 5 LEAX A,X CC 6 EORB,X 4 2 5 STAB Adr 46 2 6 DEC Adr 78 5 LEAX B,X CD 5 COM,X 5 2 5 STX Adr 474CLRA 794LDAA,X CE6ADDA,X 6 2 5 STS Adr 48 4 CLRB 7A 4 LDAB,X CF 6 ADDB,X 7 2 7 ANDA Adr 49 2 5 CLR Adr 7B 5 LDAA,X+ D0 6 ADCA,X 8 2 7 ANDB Adr 4A 2 6 CMPA Adr 7C 5 LDAB,X+ D 6 ADCB,X 9 2 6 ANDA #Data 4B 2 6 CMPB Adr 7D 5 LDAA,-X D2 6 SUBA,X A 2 6 ANDB #Data 4C 2 6 CMPX Adr 7E D3 6 SUBB,X B 2 7 ORAA Adr 4D 2 6 CMPS Adr 7F D4 6 SBCA,X C 2 7 ORAB Adr 4E 2 5 CMPA #Data 80 5 LDAB,-X D5 6 SBCB,X D 2 6 ORAA #Data 4F 2 5 CMPB #Data 8 2 7 LDAA nx n,x D6 6 NEG,X E 2 6 ORAB #Data 50 2 5 CMPX #Data 82 2 7 LDAB n,x D7 5 ASL,X F 2 7 EORA Adr 5 2 5 CMPS #Data 83 6 LDAA A,X D8 5 ROL,X 20 2 7 EORB Adr 52 3 TSTA 84 6 LDAB A,X D9 5 INC,X 2 2 6 EORA #Data 53 3 TSTB 85 6 LDAA B,X DA 5 DEC,X 22 2 6 EORB #Data 54 25 TST Adr 86 6 LDAB B,X DB 4 CLR,X 23 4 COMA 55 2 6 BITA Adr 87 6 LDX A,X DC 5 CMPA,X 24 4 COMB 56 2 6 BITB Adr 88 6 LDX B,X DD 5 CMPB,X 25 2 6 COM Adr 57 2 5 BITA #Data 89 4 STAA,X DE 4 TST,X 26 2 6 ANDCC #Dat 58 2 5 BITB #Data 8A 4 STAB,X DF 5 BITA,X 27 2 6 ORCC #Data 59 2 4 JMP Adr 8B 5 STAA,X+ E0 5 BITB,X 28 2 7 ADDA Adr 5A 2 5 BRA Adr 8C 5 STAB,X+ E 4 INX 29 2 7 ADDB Adr 5B 2 5 BMI Adr 8D 5 STAA,-X E2 4 DEX 2A 2 6 ADDA #Data 5C 2 5 BPL Adr 8E 5 STAB,-X E3 2 6 LEAS n,sp 2B 2 6 ADDB #Data 5D 2 5 BEQ Adr 8F 2 7 STAA n,x E4 5 INC,SP 2C 2 7 ADCA Adr 5E 2 5 BNE Adr 90 2 7 STAB n,x E5 5 DEC,SP 2D 2 7 ADCB Adr 5F 2 5 BVS Adr 9 6 STAA A,X E6 2E 2 6 ADCA #Data 60 2 5 BVC Adr 92 6 STAB A,X E7 2F 26 ADCB #Data 6 25 BCS Adr 93 6 STAA B,X 30 2 7 SUBA Adr 62 2 5 BCC Adr 94 6 STAB B,X 3 2 7 SUBB Adr 63 2 5 BHI Adr 95 3 JMP,X FETCH EXECUTE EXECUTE-fasens längd beror av instruktionen. 0A 5 EXG XS 3C 4 ASLB 6E 5 PSHC Implementering av EXECUTE-fas för instruktion med op-kod 0, NOP. Beskrivning av instruktionen: NOP No operation Instruktion: NOP RTN: Flaggor: Inget händer. Påverkas ej. Beskrivning: Instruktionen utför ingenting. Tillstånd Summaterm RTN-beskrivning Styrsignaler (=) Q 5 Q 5 I 00 NF 9 Styrenhetens t kombinatoriska del (princip) Såväl flaggor som inverser finns tillgängliga i styrenheten 8 / 256 avkodare Utifrån den 8-bitars operationskoden (I-registret) bildas exakt en aktiv, av 256 signaler kallade I 00 -I FF 4 / 6 avkodare Utifrån räknarvärdet (q 0 -q 3 ) bildas exakt en aktiv tillståndssignal kallad Q 0 -Q 5. 0

EXECUTE NOP Tillstånd Summaterm RTN-beskrivning Styrsignaler (=) Q 5 Q 5 I 00 NF Avkodade insignaler till styrenheten AND-OR area Utsignal från styrenheten I 00 Q 5 Q 5 I 00 NF Booleskt uttryck: NF = Q 5 I 00 + + + + EXECUTE LDAA #Data Ur instruktionslistan Beskrivning av instruktionen, ev. flaggpåverkan OP # ~ Beteckning 0F 2 4 LDAA #Data Antal klockcykler Antal bytes Operationskod LD Varianter: RTN: Flaggor: Beskrivning: Load LDAA Adr; LDAB Adr; LDX Adr; LDS Adr; LDAA #Data; LDAB #Data; LDX #Data; LDS #Data; LDAA,X; LDAA,X+; LDAA,-X; LDAA n,x; LDAA A,X; LDAA B,X; LDAB,X; LDAB,X+; LDAB,-X; LDAB n,x; LDAB A,X; LDAB B,X; LDX A,X; LDX B,X; M R eller Data R Påverkas ej. Laddar dataord från minnet eller instruktionen till angivet register. Vi kan nu ge RTN-beskrivning Tillstånd Summaterm RTN-beskrivning Styrsignaler (=) Q 5 Q 5 I 0F MA, + OE,, LD MA,, Inc Q 6 Q 6 I 0F M A MR, LD A, NF 2

Tillstånd Summaterm RTN-beskrivning Styrsignaler (=) Q 5 Q 5 I 0F MA, + OE, LD MA, Inc Q 6 Q 6 I 0F M A MR, LD A, NF 3 Några vanliga eringssätt Inherent Omedelbar Absolut Register relativ Auto pre- increment/decrement Auto post- increment/decrement -relativ 4

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

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 t of address + Adress 7 Absolut ering Flödeskontroll Operanden är i detta fall den som följer omedelbart efter operationskoden. + Adress JMP $20 Jump to address JSR $20 Call subroutine at address Adress 8

Register-relativ ti ering Operanden finns på den som anges av ett register. Oftast kan en konstant anges, denna adderas till innehållet i registret t 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 pre decrement,+x pre increment,x- post decrement,x+ post increment Auto pre/postdecrement/increment +/-X+/- 20

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

Auto post-decrement t LDAA,X- (X) A A A =? X - X A = 22 Före Efter 50 5 52 X X 22 33 23 Auto post-increment t LDAA,X+ (X) A A A =? X + X A = 22 Före Efter 50 5 52 X X 22 33 24

Stack, stackpekare k och stackoperationer ti Stack: En del av minnet som vi utnyttjar ttjar för tillfällig undanlagring. Stackpekare: Speciellt register för stackoperationer. Användning av minnet Programkod Data Register S, Stackpekare Stack 25 Modularisering i - 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 RTS Jump to SubRoutine ReTurn from Subroutine 26

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 27 Spara/Återställa täll registerinnehåll i 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. 28

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 29 Offsetberäkning, -relativ 8 Adress ering 30 3 Bestäm Offset för de fall Label är 32 Adress2 resp. Adress i vidstående figur. 33 5A BRA 34 Offset Label Lösning: 35 Offset = Label - (+2) 36 Offset = Adress2 - (+2) = = 72 (33+2) = 3D Offset = Adress - (+2) = = 8 (33+2) = E3 37 72 Adress2 30

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 3 Villkorligt li programflöde loop A - A A=0? NEJ DECA JA BNE loop if (A=0) Z-flag ; else Z-flag 0; VILLKORSTEST: if (Z-flag=0) +offset; else ( next OP); 32

Villkorstest, t EXECUTE BNE <offset> BNE Instruktion: RTN: Flaggor: Branch Not Equal BNE Adr If Z = 0: +Offset Påverkas ej. Instruktionsformat:, -rel offset Operationskod: 5E Beskrivning: Testar Z-flaggans värde. Om Z=0 utförs ett hopp till en Observera att de två första tillstånden är Adr = +Offset. Offset räknas från en efter identiska för samtliga villkorliga BRANCHinstruktioner 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 Programräknare, som här pekar på efter branchinstruktionen i minnet. offset-byten erar minnet, placeras 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. 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, t dvs Z=0 och EXECUTE-fasen avslutas. Skillnaden i EXECUTE-fasen mellan villkorliga BRANCH-instruktioner är flaggtestet 33 Villkorstest t 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. 34

Enkla villkor Antag att ett tal P har testats, och flaggorna påverkats av testinstruktionen Instruktion Operation Flagg- villkor BEQ (Branch on Equal) Om P är 0 Z= BNE (Branch if Not Equal) Om P är Z=0 skilt från 0 BMI (Branch on Minus) Om P är N= mindre än 0 BPL (Branch on Plus) Om P är N=0 större eller lika med 0 35 Villkor, tal utan tecken Vi tolkar P och Q som tal utan tecken. Antag att en jämförelse utförts t enligt P Q (Z,C), (flaggorna Z och C påverkats av instruktionen) Instruktion Operation Flaggvillkor BLO (Branch if LOwer) även Om P är mindre än Q C= BCS (Branch if Carry Set) BLS (Branch if Lower or Same) Om P är mindre än Q eller C= eller Z= P är lika med Q. 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 36

Villkor, tal med tecken Vi tolkar P och Q som tal med tecken. Antag att en jämförelse utförts t 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 NV = BLE (Branch if Less than or Equal) Om P är mindre än Q eller NV = eller P är lika med Q Z= BGT (Branch if Greater Than) Om P är större än Q NV =0 eller Z=0 BGE (Branch if Greater or Equal) Om P är större än Q eller P är lika med Q NV =0 37