Presentation laddar. Vänta.

Presentation laddar. Vänta.

EDA Digital och Datorteknik

Liknande presentationer


En presentation över ämnet: "EDA Digital och Datorteknik"— Presentationens avskrift:

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

2 Programmerarens bild av FLEX
Register A ACCUMULATOR A 7 B ACCUMULATOR B X INDEX REGISTER PC PROGRAM COUNTER SP STACK POINTER N Z V C 3 CONDITION CODES REGISTER 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 Adresseringssätt Inherent Omedelbar Absolut Register relativ Auto pre- increment/decrement Auto post- increment/decrement PC-relativ Assemblerprogrammering för FLEX

3 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, 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 Assemblerprogrammering för FLEX

4 Adresseringssätt - FLEX
Inherent Omedelbar Absolut Register relativ Auto pre- increment/decrement Auto post- increment/decrement PC-relativ Assemblerprogrammering för FLEX

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

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

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

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

9 Register-relativ adressering
OP-kod n Data Ökande adress PC PC+1 X 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: LDAA 3,X ”Load A via register X” ... Styrenhet med fast kopplad logik

10 Auto pre/post- decrement/increment
OP-kod Ökande adress PC +/-X+/- 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 Styrenhet med fast kopplad logik

11 Auto pre-decrement Exempel: LDAA 1,-X ... X - 1→X (X)→A PC OP-kod
Ökande adress Exempel: LDAA 1,-X ... PC OP-kod X - 1→X A = ? A = 11 (X)→A 50 X 11 Före 51 X 22 Efter 52 33 Styrenhet med fast kopplad logik

12 Auto pre-increment Exempel: LDAA 1,+X ... X + 1→X (X)→A PC OP-kod
Ökande adress Exempel: LDAA 1,+X ... PC OP-kod X + 1→X A = ? A = 33 (X)→A 50 11 Före 51 X 22 Efter 52 X 33 Styrenhet med fast kopplad logik

13 Auto post-decrement Exempel: LDAA 1,X- ... (X)→A X - 1→X PC OP-kod
Ökande adress Exempel: LDAA 1,X- ... PC OP-kod (X)→A A = ? X - 1→X A = 22 50 X 11 Före 51 X 22 Efter 52 33 Styrenhet med fast kopplad logik

14 Auto post-increment Exempel: LDAA 1,X+ ... (X)→A X + 1→X PC OP-kod
Ökande adress Exempel: LDAA 1,X+ ... PC OP-kod (X)→A A = ? X + 1→X A = 22 50 11 Före 51 X 22 Efter 52 X 33 Styrenhet med fast kopplad logik

15 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 Styrenhet med fast kopplad logik

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

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

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

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

20 Offsetberäkning, PC-relativ adressering
OP-kod Adress2 Adress1 BRA Label 30 18 31 32 33 34 35 36 37 72 Exempel: Bestäm ”Offset” för de fall ”Label” är ”Adress2” resp. ”Adress1” i vidstående figur. Lösning: Offset = Label - (PC+2) Offset = Adress2 - (PC+2) = = 72 – (33+2) = 3D Offset = Adress1 - (PC+2) = = 18 – (33+2) = E3 Styrenhet med fast kopplad logik

21 EXECUTE – ”BRA <offset>”
Programräknare , som här pekar på offset-byten adresserar minnet, placeras också i T-registret för kommande offsetberäkning EXECUTE – ”BRA <offset>” 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 State nr RTN-beskrivning Styrsignaler PC→MA, PC→T OEPC, LDMA, LDT. 1 M+T+1→R MR, f3, f1, g0, LDR. 2 R→PC OER, LDPC, NF Ny adress (från R) placeras i PC och EXECUTE-fasen avslutas. Operationskod: 5A, tillståndskodningar: I5A*Q5, I5A*Q6, I5A*Q7 Styrenhet med fast kopplad logik

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

23 Villkorstest, EXECUTE – ”BNE <offset>”
BNE Branch 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. Instruktionsformat: OP-kod, PC-rel offset Operationskod: 5E Observera att de två första tillstånden är identiska för samtliga villkorliga BRANCH-instruktioner Programräknare, som här pekar på offset-byten adresserar minnet, placeras också i T-registret för kommande offsetberäkning State nr RTN-beskrivning Styrsignaler PC→MA, PC→T OEPC, LDMA, LDT. 1 M+T+1→R, PC+1→PC MR, f3, f1, g0, LDR, IncPC. 2 If (Z=0) : R→PC; OER, LDPC=Z’, NF. 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 LDPC aktiverats, dvs Z=0 och EXECUTE-fasen avslutas. Skillnaden i EXECUTE-fasen mellan villkorliga BRANCH-instruktioner är flaggtestet Styrenhet med fast kopplad logik

24 Villkorstest 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 1. 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 [-128,127]. Flaggor N, V och Z används här. Styrenhet med fast kopplad logik

25 Enkla villkor Instruktion Operation Flagg-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=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 Styrenhet med fast kopplad logik

26 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) 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 Styrenhet med fast kopplad logik

27 Villkor, tal med tecken Instruktion Operation Flaggvillkor
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 =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 Förklara här varför inte bara N används ... Styrenhet med fast kopplad logik

28 FLEX- simulator Minne för program och data
Assemblerprogrammering för FLEX

29 FLEX och omvärlden Periferienheter Dataväg Styrenhet Processor
Adressbuss Dataväg CP Reg MA LDMA CP Reg A CP Reg B CP Reg T CP Reg X CP S CP PC LDA LDB LDT LDX IncS IncPC DecS LDPC D E LDS Funkt Flaggor ALU 1 1 M U X Cin g2 1 C 2 U MUX Periferienheter C 3 1 2 CP Reg R CP Reg CC LDR LDCC g1 g0 1 1 1 1 1 OEA OEB OER 1 OECC 1 OEX OES OEPC Ñ Ñ Ñ Ñ Ñ Ñ Ñ Databuss CP Reg I LDI 30 st styrsignaler från styrenhet Flaggor Styrbuss Reset Styrenhet MW CP MR Processor Assemblerprogrammering för FLEX

30 Periferienheter Adressbuss Databuss Styrbuss Periferi-enheter
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 Periferi-enheter Minnes-system Gräns-snitt Gränssnitt Assemblerprogrammering för FLEX

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

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

33 FLEX - Minnesdisposition
A7 A6 A5 A4 A3 A2 A1 A0 00 01 FD 1 1 1 1 1 1 1 Port1 FE 1 1 1 1 1 1 1 Port2 Minne för program och data Port1Enable = A7A6A5A4A3A2A1’A0 Port2Enable = A7A6A5A4A3A2A1A0’ FC MemoryEnable = Port1Enable’ & Port2Enable’ FD IO Portar FE IO FF RESET Startadress Assemblerprogrammering för FLEX

34 Port 1 - Avkodningslogik
MW A0 & A1 1 & FDUT A2 ”1” A3 A4 & FDIN A5 A6 ”1” A7 MR Assemblerprogrammering för FLEX

35 Port 2 - Avkodningslogik
MW A0 & 1 A1 & FEUT A2 ”1” A3 A4 & FEIN A5 A6 ”1” A7 MR Assemblerprogrammering för FLEX

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

37 Periferikretsar STAA $FD LDAA $FD Assemblerprogrammering för FLEX

38 7-segment NBCD → 2×7-segment b7 b6 b5 b4 b3 b2 b1 b0 b7 b6 b5 b4 b3 b2
Assemblerprogrammering för FLEX

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

40 Ytterligare Assemblerdirektiv
Assemblerdirektiv ”EQU” – (equate) Assemblerdirektiv ”FCB” – (form constant byte) Assemblerprogrammering för FLEX


Ladda ner ppt "EDA Digital och Datorteknik"

Liknande presentationer


Google-annonser