40
Digital och Datorteknik – EDA451 2009/2010 1 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 Minne för program och data In- och ut- matning

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

  • Upload
    vui

  • View
    32

  • Download
    6

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

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

Digital och Datorteknik – EDA451 2009/2010

1Assemblerprogrammering 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 Minne för program och data In- och ut- matning

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

Digital och Datorteknik – EDA451 2009/2010

Programmerarens bild av FLEX

2Assemblerprogrammering för FLEX

Adresseringssätt Inherent Omedelbar Absolut Register relativ Auto pre- increment/decrement Auto post- increment/decrement PC-relativ

Adresseringssätt Inherent Omedelbar Absolut Register relativ Auto pre- increment/decrement Auto post- increment/decrement PC-relativ

InstruktionerLoad/Store

LDAA, LDAB, LDX, LDS, LEAX, LEASSTAA, STAB, STX, STS

Data movementTFR regS,regD

Program (Flow) controlJMP, JSR, BRA, BSR, B(condition)

Integer arithmetic/testADDA, 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 operationsANDA, ANDB, ORAA, ORAB, ANDCC, ORCC, EORA, EORB, COMA, COMB, COM

Shift/rotateASLA, ASLB, ASL, ROLA, ROLB, ROL

Stack operationsPSHA, PSHB, PSHC, PSHX, PULA, PULB, PULC, PULX

InstruktionerLoad/Store

LDAA, LDAB, LDX, LDS, LEAX, LEASSTAA, STAB, STX, STS

Data movementTFR regS,regD

Program (Flow) controlJMP, JSR, BRA, BSR, B(condition)

Integer arithmetic/testADDA, 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 operationsANDA, ANDB, ORAA, ORAB, ANDCC, ORCC, EORA, EORB, COMA, COMB, COM

Shift/rotateASLA, ASLB, ASL, ROLA, ROLB, ROL

Stack operationsPSHA, PSHB, PSHC, PSHX, PULA, PULB, PULC, PULX

RegisterRegister

A ACCUMULATOR A

7 0

B ACCUMULATOR B

7 0

X INDEX REGISTER

7 0

PC PROGRAM COUNTER

7 0

SP STACK POINTER

7 0

N Z V C

03

CONDITION CODES REGISTER

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

Digital och Datorteknik – EDA451 2009/2010

Operationer - FLEX

3Assemblerprogrammering för FLEX

Load/StoreLDAA, LDAB, LDX, LDS, LEAX, LEASSTAA, STAB, STX, STS

Data movementTFR regS,regD

Program (Flow) controlJMP, JSR, BRA, BSR, B(condition)

Integer arithmetic/testADDA, 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 operationsANDA, ANDB, ORAA, ORAB, ANDCC, ORCC, EORA, EORB, COMA, COMB, COM

Shift/rotateASLA, ASLB, ASL, ROLA, ROLB, ROL

Stack operationsPSHA, PSHB, PSHC, PSHX, PULA, PULB, PULC, PULX

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

Digital och Datorteknik – EDA451 2009/2010

Adresseringssätt - FLEX

4Assemblerprogrammering för FLEX

Inherent Omedelbar Absolut Register relativ Auto pre- increment/decrement Auto post- increment/decrement PC-relativ

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

Digital och Datorteknik – EDA451 2009/2010

Inherent adressering

5Styrenhet 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

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

Digital och Datorteknik – EDA451 2009/2010

Omedelbar adressering

6Styrenhet 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

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

Digital och Datorteknik – EDA451 2009/2010

Absolut adressering

7Styrenhet 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

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

Digital och Datorteknik – EDA451 2009/2010

8Styrenhet 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

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

Digital och Datorteknik – EDA451 2009/2010

Register-relativ adressering

9Styrenhet 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:

LDAA 3,X ”Load A via register X”...

OP-kod

n

Data

Ökande adress

PC

PC+1

X

n

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

Digital och Datorteknik – EDA451 2009/2010

Auto pre/post- decrement/increment

10Styrenhet 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 decrement1,+X pre increment1,X- post decrement1,X+ post increment

OP-kod

Ökande adress

PC

+/-X+/-

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

Digital och Datorteknik – EDA451 2009/2010

11Styrenhet med fast kopplad logik

Auto pre-decrement

Exempel:

LDAA 1,-X...

11

OP-kod

22

Ökande adress

PC

X

33

50

51

52

X - 1→X

(X)→A

Före

Efter

A = ?

A = 11

X

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

Digital och Datorteknik – EDA451 2009/2010

12Styrenhet med fast kopplad logik

Auto pre-increment

Exempel:

LDAA 1,+X...

11

OP-kod

22

Ökande adress

PC

X

33

50

51

52

X + 1→X

(X)→A

Före

Efter

A = ?

A = 33

X

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

Digital och Datorteknik – EDA451 2009/2010

13Styrenhet med fast kopplad logik

Auto post-decrement

Exempel:

LDAA 1,X-...

11

OP-kod

22

Ökande adress

PC

X

33

50

51

52

X - 1→X

(X)→A

Före

Efter

A = ?

A = 22

X

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

Digital och Datorteknik – EDA451 2009/2010

14Styrenhet med fast kopplad logik

Auto post-increment

Exempel:

LDAA 1,X+...

11

OP-kod

22

Ökande adress

PC

X

33

50

51

52

X + 1→X

(X)→A

Före

Efter

A = ?

A = 22

X

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

Digital och Datorteknik – EDA451 2009/2010

Stack, stackpekare och stackoperationer

15Styrenhet 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

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

Digital och Datorteknik – EDA451 2009/2010

16Styrenhet 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

JSR Adr

Adr

Modularisering - subrutiner

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

Digital och Datorteknik – EDA451 2009/2010

JSR/RTS

17Styrenhet med fast kopplad logik

Huvudprogram

JSR Adr

RTS

OP-kod

Adr

OP-kod

OP-kod

Adr

JSR

RTS

PC

JSR Adr Jump to SubRoutineS-1 SPC M(S)Adr PC

PC

S

RTS ReTurn from Subroutine M(S) PC

S+1 S

Stack

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

Digital och Datorteknik – EDA451 2009/2010

Spara/Återställa registerinnehåll

18Styrenhet med fast kopplad logik

Exempel:

PSHA ”Push register A”PSHX ”Push register X”PULA ”Pull register A”PULX ”Pull register X”...

PSH<reg> Push RegisterS-1 S<reg> M(S)

PUL<reg> Pull RegisterM(S) <reg> S+1 S

Jämför dessa instruktioner med adresseringssätten ”pre decrement” och post increment”.

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

Digital och Datorteknik – EDA451 2009/2010

Programräknar-relativ (PC-relativ)

19Styrenhet med fast kopplad logik

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)

OP-kod

Offset

OP-kod

Ökande adress

PC

PC+1

Adress

Offset

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

Digital och Datorteknik – EDA451 2009/2010

Offsetberäkning, PC-relativ adressering

20Styrenhet 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

OP-kod

Adress2

Adress1

BRALabel

30

18

31

32

33

34

35

36

37

72

Lösning: Offset = Label - (PC+2)

Offset = Adress2 - (PC+2) == 72 – (33+2) = 3D

Offset = Adress1 - (PC+2) == 18 – (33+2) = E3

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

Digital och Datorteknik – EDA451 2009/2010

State nr RTN-beskrivning Styrsignaler0 PC→MA, PC→T OEPC, LDMA, LDT.1 M+T+1→R MR, f3, f1, g0, LDR.2 R→PC OER, LDPC, NF

EXECUTE – ”BRA <offset>”

21Styrenhet 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

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

Digital och Datorteknik – EDA451 2009/2010

Villkorligt programflöde

22Styrenhet med fast kopplad logik

A=0?

A -1→ A

JA

...DECABNE loop...

loopif (A=0)

Z-flag ← 1;else

Z-flag ← 0;

VILLKORSTEST:if (Z-flag=0)

PC ← PC+offset;else

(PC ← next OP);NEJ

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

Digital och Datorteknik – EDA451 2009/2010

State nr RTN-beskrivning Styrsignaler0 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.

Villkorstest, EXECUTE – ”BNE <offset>”

23Styrenhet med fast kopplad logik

Instruktionsformat:OP-kod, PC-rel offset

Operationskod: 5E

BNE Branch Not EqualInstruktion: 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 LDPC 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

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

Digital och Datorteknik – EDA451 2009/2010

Villkorstest

24Styrenhet 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 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.

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

Digital och Datorteknik – EDA451 2009/2010

Enkla villkor

25Styrenhet med fast kopplad logik

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

Antag att ett tal ’P’ har testats, och flaggorna påverkats av testinstruktionen

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

Digital och Datorteknik – EDA451 2009/2010

Villkor, tal utan tecken

26Styrenhet med fast kopplad logik

Instruktion Operation Flaggvillkor

BLO (Branch if LOwer) ävenBCS (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)

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

Digital och Datorteknik – EDA451 2009/2010

Villkor, tal med tecken

27Styrenhet 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)

Instruktion Operation Flaggvillkor

BLT (Branch if Less Than) Om ’P’ är mindre än ’Q’ NV =1

BLE (Branch if Less than or Equal) Om ’P’ är mindre än ’Q’ eller ’P’ är lika med ’Q’

NV =1 ellerZ=1

BGT (Branch if Greater Than) Om ’P’ är större än ’Q’ NV =0 ellerZ=0

BGE (Branch if Greater or Equal) Om ’P’ är större än ’Q’ eller ’P’ är lika med ’Q’

NV =0

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

Digital och Datorteknik – EDA451 2009/2010

FLEX- simulator

28Assemblerprogrammering för FLEX

Minne för program och data

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

Digital och Datorteknik – EDA451 2009/2010

FLEX och omvärlden

29Assemblerprogrammering för FLEX

MR

MW

Adressbuss

1OEX

Reg XLDX

CP S

1

LDS

OES

CP

1

LDPC

OEPC

CPPC

1OER

Reg TLDT

CP

ALU

Reg RLDR

CP

D E

U

Flaggor

Cin

Funkt

Reg CCLDCC

CP

1OECC

MUX0 1

Reg B

1

LDB

OEB

CP

MUX

0

1

2

3

0

1

C

C 12

g1 g0

g2

Reg A

1

LDA

OEA

CP

CPLDI

Reg I

Dataväg

DecS

IncS IncPC

Databuss

Reset

CPStyrenhet

30 st styrsignaler från styrenhet

Reg MA

LDMA

CP

Flaggor

Processor

Styrbuss

Peri

feri

en

hete

r

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

Digital och Datorteknik – EDA451 2009/2010

Periferienheter

30Assemblerprogrammering 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-snittGränssnitt

Periferi-enheter

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

Digital och Datorteknik – EDA451 2009/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”

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

Digital och Datorteknik – EDA451 2009/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

”1”

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

Digital och Datorteknik – EDA451 2009/2010

FLEX - Minnesdisposition

Assemblerprogrammering för FLEX 33

RESET

IO

IO

0001

FFFEFDFC

Minne för program och data

Portar

Startadress

A7 A6 A5 A4 A3 A2 A1 A0

1 1 1 1 1 1 0 1

1 1 1 1 1 1 1 0

FD

FE

Port1

Port2

Port1Enable = A7A6A5A4A3A2A1’A0

Port2Enable = A7A6A5A4A3A2A1A0’

MemoryEnable = Port1Enable’ & Port2Enable’

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

Digital och Datorteknik – EDA451 2009/2010

Port 1 - Avkodningslogik

Assemblerprogrammering för FLEX 34

FDUT

FDIN

MR

MW

A0

A1

A2

A3

A4

A5

A6

A7

1

&

&”1”

”1”

&

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

Digital och Datorteknik – EDA451 2009/2010

Assemblerprogrammering för FLEX 35

Port 2 - Avkodningslogik

FEUT

FEIN

MR

MW

A0

A1

A2

A3

A4

A5

A6

A7

1

&

&”1”

”1”

&

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

Digital och Datorteknik – EDA451 2009/2010

FLEX - Realisering

Assemblerprogrammering för FLEX 36

Adressbuss

Databuss

Styrbuss

Port 1 Port 2

D0 A0D1 A1D2 A2D3 A3D4 A4D5 A5D6 A6D7 A7

MWMR

D0 A0D1 A1D2 A2D3 A3D4 A4D5 A5D6 A6D7 A7 MWMR CE

D0 LDD1 OED2D3D4D5D6D7

Logik

D0 LDD1 OED2D3D4D5D6D7

D0 LDD1 OED2D3D4D5D6D7

D0 LDD1 OED2D3D4D5D6D7

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

Digital och Datorteknik – EDA451 2009/2010

Periferikretsar

Assemblerprogrammering för FLEX 37

LDAA $FD

STAA $FD

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

Digital och Datorteknik – EDA451 2009/2010

Assemblerprogrammering för FLEX 38

NBCD → 2×7-segment

b7 b6 b5 b4 b3 b2 b1 b0

7-segment

b7 b6 b5 b4 b3 b2 b1 b0

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

Digital och Datorteknik – EDA451 2009/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

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

Digital och Datorteknik – EDA451 2009/2010

Assemblerprogrammering för FLEX 40

Ytterligare Assemblerdirektiv

Assemblerdirektiv ”EQU” – (equate)

Assemblerdirektiv ”FCB” – (form constant byte)