eda 451 - digital och datorteknik dagens föreläsning: assemblerprogrammering för flex,
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 PresentationTRANSCRIPT
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
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
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
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
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
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
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
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
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
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+/-
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
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
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
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
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
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
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
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”.
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
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
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
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
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
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.
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
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)
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
Digital och Datorteknik – EDA451 2009/2010
FLEX- simulator
28Assemblerprogrammering för FLEX
Minne för program och data
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
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
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”
PÅ
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
PÅ
”1”
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’
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”
&
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”
&
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
Digital och Datorteknik – EDA451 2009/2010
Periferikretsar
Assemblerprogrammering för FLEX 37
LDAA $FD
STAA $FD
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
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
Digital och Datorteknik – EDA451 2009/2010
Assemblerprogrammering för FLEX 40
Ytterligare Assemblerdirektiv
Assemblerdirektiv ”EQU” – (equate)
Assemblerdirektiv ”FCB” – (form constant byte)