Presentation laddar. Vänta.

Presentation laddar. Vänta.

Digital och Datorteknik – EDA451 2009/2010 1 Assemblerprogrammering för FLEX EDA 451 - Digital och Datorteknik Dagens föreläsning: Assemblerprogrammering.

Liknande presentationer


En presentation över ämnet: "Digital och Datorteknik – EDA451 2009/2010 1 Assemblerprogrammering för FLEX EDA 451 - Digital och Datorteknik Dagens föreläsning: Assemblerprogrammering."— Presentationens avskrift:

1 Digital och Datorteknik – EDA / Assemblerprogrammering för FLEX EDA Digital och Datorteknik Dagens föreläsning: Assemblerprogrammering för FLEX, Extra material ”Ext 18” Ur innehållet: n Programmerarens bild av FLEX n Instruktionsuppsättning n Register åtkomliga för programmeraren n Datatyper n Adresseringssätt n Användning av adressrum n Minne för program och data n In- och ut- matning

2 Digital och Datorteknik – EDA /2010 Programmerarens bild av FLEX 2 Assemblerprogrammering för FLEX Adresseringssätt n Inherent n Omedelbar n Absolut n Register relativ n Auto pre- increment/decrement n Auto post- increment/decrement n PC-relativ Adresseringssätt n Inherent n Omedelbar n Absolut n Register relativ n Auto pre- increment/decrement n Auto post- increment/decrement n PC-relativ 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, CPX, CPS, 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 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, CPX, CPS, 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 A ACCUMULATOR A 70 B ACCUMULATOR B 70 X INDEX REGISTER 70 PC PROGRAM COUNTER 70 SP STACK POINTER 70 NZVC 03 CONDITION CODES REGISTER

3 Digital och Datorteknik – EDA /2010 Operationer - FLEX 3 Assemblerprogrammering för 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, CPX, CPS, 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

4 Digital och Datorteknik – EDA /2010 Adresseringssätt - FLEX 4 Assemblerprogrammering för FLEX n Inherent n Omedelbar n Absolut n Register relativ n Auto pre- increment/decrement n Auto post- increment/decrement n PC-relativ

5 Digital och Datorteknik – EDA /2010 Inherent adressering 5 Styrenhet med fast kopplad logik Operandens läge är entydigt given av instruktionen. Exempel: INCA ”Increment register A” RTS ”Return from subroutine” PSHA ”Push register A”... OP-kod Ökande adress PC

6 Digital och Datorteknik – EDA /2010 Omedelbar adressering 6 Styrenhet med fast kopplad logik Operanden följer omedelbart efter operationskoden. Exempel: LDAA#8 ”Load A immediate” CMPA#10 ”Compare contents of A with value”... OP-kod Data Ökande adress PC PC+1

7 Digital och Datorteknik – EDA /2010 Absolut adressering 7 Styrenhet med fast kopplad logik Exempel: LDAA$10 ”Load A from address” CMPA$10 ”Compare contents of A with contents of address”... Operanden finns på den adress som följer omedelbart efter operationskoden. OP-kod Adress Ökande adress PC PC+1 Data

8 Digital och Datorteknik – EDA / Styrenhet med fast kopplad logik Absolut adressering Flödeskontroll Exempel: JMP$20 ”Jump to address” JSR$20 ”Call subroutine at address”... Operanden är i detta fall den adress som följer omedelbart efter operationskoden. OP-kod Adress OP-kod Ökande adress PC PC+1 Adress

9 Digital och Datorteknik – EDA /2010 Register-relativ adressering 9 Styrenhet med fast kopplad logik Operanden finns på den adress som anges av ett register. Oftast kan en konstant anges, denna adderas till innehållet i registret för adressberäkningen. Exempel: LDAA3,X ”Load A via register X”... OP-kod n Data Ökande adress PC PC+1 X n

10 Digital och Datorteknik – EDA /2010 Auto pre/post- decrement/increment 10 Styrenhet med fast kopplad logik Komplext adresseringssätt som utnyttjar något register för adressberäkning samtidigt som innehållet i registret modifieras av instruktionen. 1,-X pre decrement 1,+X pre increment 1,X- post decrement 1,X+ post increment OP-kod Ökande adress PC +/-X+/-

11 Digital och Datorteknik – EDA / Styrenhet med fast kopplad logik Auto pre-decrement Exempel: LDAA1,-X OP-kod 22 Ökande adress PC X X - 1 →X (X) →A Före Efter A = ? A = 11 X

12 Digital och Datorteknik – EDA / Styrenhet med fast kopplad logik Auto pre-increment Exempel: LDAA1,+X OP-kod 22 Ökande adress PC X X + 1 →X (X) →A Före Efter A = ? A = 33 X

13 Digital och Datorteknik – EDA / Styrenhet med fast kopplad logik Auto post-decrement Exempel: LDAA1,X OP-kod 22 Ökande adress PC X X - 1 →X (X) →A Före Efter A = ? A = 22 X

14 Digital och Datorteknik – EDA / Styrenhet med fast kopplad logik Auto post-increment Exempel: LDAA1,X OP-kod 22 Ökande adress PC X X + 1 →X (X) →A Före Efter A = ? A = 22 X

15 Digital och Datorteknik – EDA /2010 Stack, stackpekare och stackoperationer 15 Styrenhet med fast kopplad logik Register S, Stackpekare Stack 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

16 Digital och Datorteknik – EDA / Styrenhet med fast kopplad logik Ett stycke kod som ”återanvänds” flera gånger. Man utför hopp ”till” och ”från” en subrutin Huvudprogram Subrutin JSR Adr Jump to SubRoutine RTS ReTurn from Subroutine JSR Adr RTS JSR Adr Adr Modularisering - subrutiner

17 Digital och Datorteknik – EDA /2010 JSR/RTS 17 Styrenhet med fast kopplad logik Huvudprogram JSR Adr RTS OP-kod Adr OP-kod Adr JSR RTS PC JSR Adr Jump to SubRoutine S-1  S PC  M(S) Adr  PC PC S RTS ReTurn from Subroutine M(S)  PC S+1  S Stack

18 Digital och Datorteknik – EDA /2010 Spara/Återställa registerinnehåll 18 Styrenhet med fast kopplad logik Exempel: PSHA ”Push register A” PSHX ”Push register X” PULA ”Pull register A” PULX ”Pull register X”... PSH Push Register S-1  S  M(S) PUL Pull Register M(S)  S+1  S Jämför dessa instruktioner med adresseringssätten ”pre decrement” och post increment”.

19 Digital och Datorteknik – EDA /2010 Programräknar-relativ (PC-relativ) 19 Styrenhet med fast kopplad logik Operanden utgörs av en offset som följer omedelbart efter operationskoden. Exempel: BRAAdr ”Branch” jfr: ”Jump” BSRAdr ”Branch to subroutine”... Adressberäkningen sker för PC+2. Adress = Offset + (PC+2) OP-kod Offset OP-kod Ökande adress PC PC+1 Adress Offset

20 Digital och Datorteknik – EDA /2010 Offsetberäkning, PC-relativ adressering 20 Styrenhet med fast kopplad logik Exempel: Bestäm ”Offset” för de fall ”Label” är ”Adress2” resp. ”Adress1” i vidstående figur. 5A Offset OP-kod Adress2 Adress1 BRA Label Lösning: Offset = Label - (PC+2) Offset= Adress2 - (PC+2) = = 72 – (33+2) = 3D Offset= Adress1 - (PC+2) = = 18 – (33+2) = E3

21 Digital och Datorteknik – EDA /2010 State nrRTN-beskrivningStyrsignaler 0PC→MA, PC→TOE PC, LD MA, LD T. 1M+T+1→RMR, f 3, f 1, g 0, LD R. 2R→PCOE R, LD PC, NF EXECUTE – ”BRA ” 21 Styrenhet med fast kopplad logik Programräknare, som här pekar på offset-byten adresserar minnet, placeras också i T-registret för kommande offsetberäkning Offseten (M), adderas till offsetens adress(T), slutligen läggs 1 till, dvs PC-offseten beräknas från nästa instruktions op-kod, placeras i R Ny adress (från R) placeras i PC och EXECUTE-fasen avslutas. Operationskod: 5A, tillståndskodningar: I5A*Q5, I5A*Q6, I5A*Q7

22 Digital och Datorteknik – EDA /2010 Villkorligt programflöde 22 Styrenhet med fast kopplad logik A=0? A -1→ A JA... DECA BNEloop... loop if (A=0) Z-flag ← 1; else Z-flag ← 0; VILLKORSTEST: if (Z-flag=0) PC ← PC+offset; else (PC ← next OP); NEJ

23 Digital och Datorteknik – EDA /2010 State nrRTN-beskrivningStyrsignaler 0PC→MA, PC→TOE PC, LD MA, LD T. 1M+T+1→R, PC+1→PCMR, f 3, f 1, g 0, LD R, IncPC. 2If (Z=0) : R→PC;OE R, LD PC =Z’, NF. Villkorstest, EXECUTE – ”BNE ” 23 Styrenhet med fast kopplad logik Instruktionsformat: OP-kod, PC-rel offset Operationskod: 5E BNEBranch Not Equal Instruktion:BNE Adr RTN:If Z = 0: PC+Offset  PC Flaggor:Påverkas ej. Beskrivning:Testar Z-flaggans värde. Om Z=0 utförs ett hopp till adressen Adr = PC+Offset. Offset räknas från adressen efter branchinstruktionen, dvs vid uträkningen av hoppadressen pekar PC på operationskoden direkt efter branchinstruktionen i minnet. Om Z=1 utförs inget hopp. Nästa instruktion blir i så fall den direkt efter branchinstruktionen i minnet. Programräknare, som här pekar på offset-byten adresserar minnet, placeras också i T-registret för kommande offsetberäkning Offseten (M), adderas till offsetens adress(T), slutligen läggs 1 till, dvs PC-offseten beräknas från nästa instruktions op-kod, placeras i R Ny adress (från R) placeras i PC ENDAST om LD PC aktiverats, dvs Z=0 och EXECUTE-fasen avslutas. Observera att de två första tillstånden är identiska för samtliga villkorliga BRANCH- instruktioner Skillnaden i EXECUTE-fasen mellan villkorliga BRANCH-instruktioner är flaggtestet

24 Digital och Datorteknik – EDA /2010 Villkorstest 24 Styrenhet med fast kopplad logik Instruktionsuppsättningen för FLEX-processorn har ett antal villkorliga hoppinstruktioner. De kan indelas i följande tre grupper: 1. 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 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 [-128,127]. Flaggor N, V och Z används här.

25 Digital och Datorteknik – EDA /2010 Enkla villkor 25 Styrenhet med fast kopplad logik InstruktionOperationFlagg- villkor BEQ (Branch on Equal)Om ’P’ är 0Z=1 BNE (Branch if Not Equal)Om ’P’ är skilt från 0 Z=0 BMI (Branch on Minus)Om ’P’ är mindre än 0 N=1 BPL (Branch on Plus)Om ’P’ är större eller lika med 0 N=0 Antag att ett tal ’P’ har testats, och flaggorna påverkats av testinstruktionen

26 Digital och Datorteknik – EDA /2010 Villkor, tal utan tecken 26 Styrenhet med fast kopplad logik InstruktionOperationFlaggvillkor BLO (Branch if LOwer) även BCS (Branch if Carry Set) Om ’P’ är mindre än ’Q’C=1 BLS (Branch if Lower or Same)Om ’P’ är mindre än ’Q’ eller ’P’ är lika med ’Q’. C=1 eller Z=1 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 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)

27 Digital och Datorteknik – EDA /2010 Villkor, tal med tecken 27 Styrenhet med fast kopplad logik 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) InstruktionOperationFlaggvillkor BLT (Branch if Less Than)Om ’P’ är mindre än ’Q’ N  V =1 BLE (Branch if Less than or Equal)Om ’P’ är mindre än ’Q’ eller ’P’ är lika med ’Q’ N  V =1 eller Z=1 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

28 Digital och Datorteknik – EDA /2010 FLEX- simulator 28 Assemblerprogrammering för FLEX Minne för program och data

29 Digital och Datorteknik – EDA /2010 FLEX och omvärlden 29 Assemblerprogrammering för FLEX MR MW Adressbuss 1 OE X  Reg X LD X CP S 1 LD S OE S  CP 1 LD PC OE PC  CP PC 1 OE R  Reg T LD T CP ALU Reg R LD R CP DE U Flaggor C in Funkt Reg CC LD CC CP 1 OE CC  MUX 01 Reg B 1 LD B OE B  CP MUXMUX C C 1 2 g1g1 g0g0 g2g2 Reg A 1 LD A OE A  CP LD I Reg I Dataväg DecS IncSIncPC Databuss Reset CP Styrenhet 30 st styrsignaler från styrenhet Reg MA LD MA CP Flaggor Processor Styrbuss Periferienheter

30 Digital och Datorteknik – EDA /2010 Periferienheter 30 Assemblerprogrammering för FLEX 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 Minnes- system Gräns-snitt Gränssnitt Periferi- enheter

31 Digital och Datorteknik – EDA /2010 Assemblerprogrammering för FLEX 31 Logik Data Register Databuss OE LD Styrbuss ”0” IO Interface (Ut-port) Typisk tillämpning ”PÅ/AV” LED (Light Emitting Diode) Parallell utmatning AV ”1” PÅ

32 Digital och Datorteknik – EDA /2010 Assemblerprogrammering för FLEX 32 Logik Data Register Databuss LD OE Styrbuss ”0” IO Interface (In-port) Typisk tillämpning: Avläs ”PÅ/AV” AV 5V Parallell inmatning PÅ ”1”

33 Digital och Datorteknik – EDA /2010 FLEX - Minnesdisposition Assemblerprogrammering för FLEX 33 RESET IO FF FE FD FC Minne för program och data Portar Startadress A7A7 A6A6 A5A5 A4A4 A3A3 A2A2 A1A1 A0A FD FE Port1 Port2 Port1Enable = A 7 A 6 A 5 A 4 A 3 A 2 A 1 ’A 0 Port2Enable = A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 ’ MemoryEnable = Port1Enable’ & Port2Enable’

34 Digital och Datorteknik – EDA /2010 Port 1 - Avkodningslogik Assemblerprogrammering för FLEX 34 FD UT FD IN MR MW A0A0 A1A1 A2A2 A3A3 A4A4 A5A5 A6A6 A7A7 1 & & ”1” &

35 Digital och Datorteknik – EDA /2010 Assemblerprogrammering för FLEX 35 Port 2 - Avkodningslogik FE UT FE IN MR MW A0A0 A1A1 A2A2 A3A3 A4A4 A5A5 A6A6 A7A7 1 & & ”1” &

36 Digital och Datorteknik – EDA /2010 FLEX - Realisering Assemblerprogrammering för FLEX 36 Adressbuss Databuss Styrbuss Port 1 Port 2 D0 A0 D1 A1 D2 A2 D3 A3 D4 A4 D5 A5 D6 A6 D7 A7 MW MR D0 A0 D1 A1 D2 A2 D3 A3 D4 A4 D5 A5 D6 A6 D7 A7 MW MR CE D0 LD D1 OE D2 D3 D4 D5 D6 D7 Logik CPU MINNE D0 LD D1 OE D2 D3 D4 D5 D6 D7 D0 LD D1 OE D2 D3 D4 D5 D6 D7 D0 LD D1 OE D2 D3 D4 D5 D6 D7

37 Digital och Datorteknik – EDA /2010 Periferikretsar Assemblerprogrammering för FLEX 37 LDAA $FD STAA $FD

38 Digital och Datorteknik – EDA /2010 Assemblerprogrammering för FLEX 38 NBCD → 2×7-segment b7b7 b6b6 b5b5 b4b4 b3b3 b2b2 b1b1 b0b0 7-segment b7b7 b6b6 b5b5 b4b4 b3b3 b2b2 b1b1 b0b0

39 Digital och Datorteknik – EDA /2010 EXEMPEL – ”Rinnande ljus” Assemblerprogrammering för FLEX 39 Assemblerdirektiv ”ORG” – (Origin) ”label” symbol för adress Referens till symbolisk adress Listfilen skapas vid assembleringen Raden är en kommentar

40 Digital och Datorteknik – EDA /2010 Assemblerprogrammering för FLEX 40 Ytterligare Assemblerdirektiv Assemblerdirektiv ”EQU” – (equate) Assemblerdirektiv ”FCB” – (form constant byte)


Ladda ner ppt "Digital och Datorteknik – EDA451 2009/2010 1 Assemblerprogrammering för FLEX EDA 451 - Digital och Datorteknik Dagens föreläsning: Assemblerprogrammering."

Liknande presentationer


Google-annonser