1 / 40

EDA 451 - Digital och Datorteknik Dagens föreläsning: Assemblerprogrammering för FLEX,

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

vui
Download Presentation

EDA 451 - Digital och Datorteknik Dagens föreläsning: Assemblerprogrammering för FLEX,

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 • 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 7 0 A ACCUMULATOR A 7 0 B ACCUMULATOR B 7 0 • Adresseringssätt • Inherent • Omedelbar • Absolut • Register relativ • Auto pre- increment/decrement • Auto post- increment/decrement • PC-relativ X INDEX REGISTER 7 0 PC PROGRAM COUNTER 7 0 SP STACK POINTER 3 0 N Z V C CONDITION CODES REGISTER 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 Ökande adress Operanden följer omedelbart efter operationskoden. Exempel: LDAA #8 ”Load A immediate” CMPA #10 ”Compare contents of A with value” ... OP-kod PC Data PC+1 Styrenhet med fast kopplad logik

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

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

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

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

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

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

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

  14. Auto post-increment Ökande adress Exempel: LDAA 1,X+ ... PC OP-kod (X)→A A = ? X + 1→X A = 22 50 11 Före X 22 51 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 RTSReTurn from Subroutine Styrenhet med fast kopplad logik

  17. JSR/RTS • JSR Adr Jump to SubRoutine • S-1 S • PC  M(S) • Adr  PC Huvudprogram OP-kod JSR PC Adr Stack PC S JSR Adr Adr OP-kod RTS RTS ReTurn from Subroutine M(S)  PC S+1 S OP-kod RTS 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) Ökande adress Operanden utgörs av en offset som följer omedelbart efter operationskoden. OP-kod PC Offset PC+1 Exempel: BRA Adr ”Branch” jfr: ”Jump” BSR Adr ”Branch to subroutine” ... Offset Adressberäkningen sker för PC+2. Adress = Offset + (PC+2) OP-kod Adress Styrenhet med fast kopplad logik

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

  21. 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 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 ... JA A=0? 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 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 Antag att ett tal ’P’ har testats, och flaggorna påverkats av testinstruktionen 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) Styrenhet med fast kopplad logik

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

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

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

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

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

  32. Parallell inmatning Typisk tillämpning: Avläs ”PÅ/AV” Databuss Styrbuss 5V ”1” ”0” IO Interface (In-port) OE Logik Data Register LD PÅ 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 0 1 Port1 FE 1 1 1 1 1 1 1 0 Port2 Minne för program och data Port1Enable = A7A6A5A4A3A2A1’A0 Port2Enable = A7A6A5A4A3A2A1A0’ FC MemoryEnable = Port1Enable’ & Port2Enable’ Portar FD IO FE IO Startadress FF RESET 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 D0 A0 D1 A1 D2 A2 D3 A3 D4 A4 D5 A5 D6 A6 D7 A7 MW MR Logik 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 D0 LD D1 OE D2 D3 D4 D5 D6 D7 CPU MINNE D0 A0 D1 A1 D2 A2 D3 A3 D4 A4 D5 A5 D6 A6 D7 A7 MW MR CE Port 2 Port 1 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 b1 b0 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

More Related