FLEXIBLE INSTRUCTION SET PROCESSOR

Download Report

Transcript FLEXIBLE INSTRUCTION SET PROCESSOR

2013-12-23
FLEXIBLE
INSTRUCTION
SET
PROCESSOR
FLISP
FLISP - HANDBOK
Detta häfte utgör den sammanfattande beskrivningen av FLISprocessorn. Häftet är indelat i två delar. Del 1 behandlar
assemblerprogrammerarens bild av FLISP, del 2 beskriver detaljer i
dataväg och den fasta styrenheten.
Del I: Programmerarens bild
Vektorer och minne
Registeruppsättning
Adresseringssätt
Assemblerspråk
Assemblerdirektiv
Instruktionsgrupper
Karta över operationskoder
Instruktionslista (detaljerad beskrivning)
Del II: Mikroarkitekturen
RTN-notation
ALU-funktioner
Datavägen
Fast styrenhet
2
DEL I: PROGRAMMERARENS BILD
Vektorer och I/O
$FF
$FE
$FD
$FC
$FB
”Reset”, återstart
”Trap”, undantag för ej implementerad operationskod
”IRQ”, avbrott
”I/O” Port för anslutning av perifer enhet
”I/O” Port för anslutning av perifer enhet
Stackens utseende vid "IRQ" eller "Trap"
Vid "IRQ" pekar PC på den instruktion som skulle ha utförts om inget
avbrott signalerats.
Vid "Exception" pekar PC på instruktionen omedelbart efter den otillåtna
operationskoden.
3
FLISP - HANDBOK
Registeruppsättning
Det finns 6 register som är direkt åtkomliga för
assemblerprogrammeraren.
Ackumulator: Generellt register för aritmetisk-/logik- operationer där
resultatet alltid placeras i registret (”ackumuleras”).
Adressregister: Används för adressberäkning.
Programräknare: Innehåller adressen till aktuell instruktion.
Stackpekare: Speciellt register, används implicit av vissa instruktioner.
CC, Flaggregister: Innehåller resultatindikatorer (”flaggor”) från ALU’n
och en bit för maskering av avbrott.
4
DEL I: PROGRAMMERARENS BILD
Adresseringssätt
Totalt används 8 distinkta adresseringssätt.
Inherent [ih]
Operanden eller operanderna ges direkt av instruktionen. Ingen extra
operandinformation (utöver operationskod) krävs. Det finns ingen
generell RTN-beskrivning för inherent adressering.
Omedelbar (Immediate) [im]
Operanden är kodad tillsammans med operationen.
RTN: M(PC+1)
Assemblersyntax: #<DATA>
Absolut (Absolute) [ab]
Operanden finns i minnet. Minnesadressen är kodad tillsammans med
operationen.
RTN: [M(PC+1)]
Assemblersyntax: <ADRESS>
5
FLISP - HANDBOK
Relativ [pc]
PC-relativ adressering används av programflödesinstruktioner (”branch
on condition”). Adressen till operanden bestäms av en offset till aktuell
PC, därav namnet ”Relativ”.
Observera att adressberäkningar som inbegriper PC förutsätter att PC
pekar på nästa instruktion
Indirekt stackregister med konstant offset (Indexed) [ns]
Operanden finns i minnet. En konstant n (”offset”) adderas till innehållet
i register SP och bildar adressen till operandens plats i minnet.
RTN: M(SP+n)
Assemblersyntax: n,SP
Konstanten n (8 bitar) adderas modulo 256 och kan anges med eller
utan tecken.
6
DEL I: PROGRAMMERARENS BILD
De indexerade adresseringssätten kan också användas tillsammans
med något av registren X eller Y. I den följande framställninigen
betecknas något X eller Y med bokstaven R.
Indirekt register med konstant offset (Indexed) [nR]
Operanden finns i minnet. En konstant n (”offset”) adderas till innehållet
i register R (X eller Y) och bildar adressen till operandens plats i minnet.
RTN: M(R+n);
Assemblersyntax: n,R
Konstanten n (8 bitar) adderas modulo 256 och kan anges med eller
utan tecken.
Indirekt register med ackumulator offset (Indexed)[aR]
Operanden finns i minnet. Innehållet i register A adderas till innehållet i
register R (X eller Y) och bildar adressen till operandens plats i
minnet.RTN:
M(R+A)
Assemblersyntax: A,R
7
FLISP - HANDBOK
Indirekt register med pre/post decrement/increment (Indexed)
Pre auto increment [+R]
RTN: R+1→R; M(R)
Assemblersyntax: ,+R
Pre auto decrement [–R]
RTN: R-1→R; M(R)
Assemblersyntax: ,-R
Post auto increment [R+]
RTN: M(R); R+1→R
Assemblersyntax: ,R+
Post auto decrement [R-]
RTN: M(R); R-1→R
Assemblersyntax: ,R-
8
DEL I: PROGRAMMERARENS BILD
Assemblerspråk
Assemblerspråket består dels av mnemoniska beteckningar för Flisp’s
instruktioner och adresseringssätt dels av en uppsättning
”pseudoinstruktioner”, även kallade ”assemblerdirektiv”.
Adresseringssätt
Syntax för att ange specifikt adresseringssätt finns detaljerat beskrivet i
föregående avsnitt.
Mnemoniska beteckningar för instruktioner
Se ”Instruktionsuppsättning” eller ”Instruktionslista” nedan.
Prefix för talbaser
Tal givna på decimal form saknar prefix
För att ange tal på binär form används prefixet ’%’
För att ange tal på hexadecimal form används prefixet ’$’
Assemblerdirektiv
Följande tabell listar de vanligaste assemblerdirektiven tillsammans
med korta förklaringar:
Följande förkortningar används:
<Val>
Sym
[Sym]
Värde (adress eller data) , kan anges som en konstant med godtycklig
talbas (godtyckligt prefix).
Kan också anges i form av symbol.
’Sym’ står här för ett godtyckligt (tillåtet) symbolnamn.
’Sym’ kan, men behöver inte anges. Då ’Sym’ anges kommer symbolen
att tilldelas värdet hos adressen till den första byten av det reserverade
minnet.
Assemblerdirektiv:
”ORIGIN”: Anger startadress för påföljande
kod/data. Om en symbol används för att ange
startadressen måste symbolen vara definierad,
dvs inga framåtreferenser är tillåtna här.
<Val>
”EQUATE”: Symbolen ’Sym’ representerar
värdet <Val>.
<Val>,<Val>...
”FORM CONSTANT BYTE”: Skapar en sträng
med initierade data i minnet
”<ASCII tecken>” ”FORM CONSTANT STRING": Skapar en sträng
med ASCII-tecken i minnet.
<Val>
”RESERVE MEMORY BYTES”: Reservera
<Val> bytes i minnet. Minnesinnehållet på dessa
adresser är odefinierat.
ORG <Val>
Sym
EQU
[Sym] FCB
[Sym] FCS
[Sym] RMB
9
FLISP - HANDBOK
Instruktionsgrupper
”Load/Store”
LDA, LDX, LDY, LDSP, LEAX, LEAY, LEASP
STA, STX, STY, STSP
”Data movement”
TFR, EXG
”Program (Flow) control”
JMP, JSR, BRA, BSR, B(condition), RTS, RTI
”Integer arithmetic”
ADDA, ADCA, SUBA, SBCA,
CLRA, CLR, NEGA, NEG,
DECA, DEC, INCA, INC
”Integer test”
CMPA, CMPX, CMPY, CMPSP, BITA, TSTA, TST
”Logical operations”
ANDA, ORA, ANDCC, ORCC,
EORA, COMA, COM
”Shift/rotate”
ASRA, ASR,
LSLA, LSL, LSRA, LSR,
ROLA, ROL, RORA, ROR
”Stack operations”
PSHA, PSHCC, PSHX, PSHY, PULA, PULCC, PULX, PULY
”Misc.”
NOP
10
DEL I: PROGRAMMERARENS BILD
Karta över operationskoder
Anm:
“Blanka” fält utgör ”otillåten operationskod” och föranleder undantagshantering
00
2 10
3
NOP
PSHA
ih
1 ih
1
01
4 11
3
ANDCC PSHX
im
2 ih
1
02
4 12
3
ORCC
PSHY
im
2 ih
1
03
13
3
PSHCC
ih
1
04
14
3
PULA
ih
1
05
3 15
3
CLRA
PULX
ih
1 ih
1
06
3 16
3
NEGA
PULY
ih
1 ih
1
07
3 17
3
INCA
PULCC
ih
1 ih
1
08
3 18
2
DECA TFR A,C
ih
1 ih
1
09
2 19
2
TSTA TFR C,A
ih
1 ih
1
0A
3 1A
2
COMA TFR X,Y
ih
1 ih
1
0B
3 1B
2
LSLA TFR Y,X
ih
1 ih
1
0C
3 1C
2
LSRA TFR X,S
ih
1 ih
1
0D
3 1D
2
ROLA TFR S,X
ih
1 ih
1
0E
3 1E
2
RORA TFR Y,S
ih
1 ih
1
0F
3 1F
2
ASRA TFR S,Y
ih
1 ih
1
20
5
BSR
pc
2
21
4
BRA
pc
2
22
4
BMI
pc
2
23
4
BPL
pc
2
24
4
BEQ
pc
2
25
4
BNE
pc
2
26
4
BVS
pc
2
27
4
BVC
pc
2
28
4
BCS
pc
2
29
4
BCC
pc
2
2A
4
BHI
pc
2
2B
4
BLS
pc
2
2C
4
BGT
pc
2
2D
4
BGE
pc
2
2E
4
BLE
pc
2
2F
4
BLT
pc
2
30
3
STX
ab
2
31
3
STY
ab
2
32
3
STSP
ab
2
33
2
JMP
ab
2
34
4
JSR
ab
2
35
3
CLR
ab
2
36
4
NEG
ab
2
37
4
INC
ab
2
38
4
DEC
ab
2
39
3
TST
ab
2
3A
4
COM
ab
2
3B
4
LSL
ab
2
3C
4
LSR
ab
2
3D
4
ROL
ab
2
3E
4
ROR
ab
2
3F
4
ASR
ab
2
40
3 50
3
STX
STX
ns
2 nx
2
41
3 51
3
STY
STY
ns
2 nx
2
42
3 52
3
STSP
STSP
ns
2 nx
2
43
2 53
4
RTS
JMP
ih
1 nx
2
44 6 54
5
RTI
JSR
ih
1 nx
2
45
3 55
3
CLR
CLR
ns
2 nx
2
46
4 56
4
NEG
NEG
ns
2 nx
2
47
4 57
4
INC
INC
ns
2 nx
2
48
4 58
4
DEC
DEC
ns
2 nx
2
49
3 59
3
TST
TST
ns
2 nx
2
4A
4 5A
4
COM
COM
ns
2 nx
2
4B
4 5B
4
LSL
LSL
ns
2 nx
2
4C
4 5C
4
LSR
LSR
ns
2 nx
2
4D
4 5D
4
ROL
ROL
ns
2 nx
2
4E
4 5E
4
ROR
ROR
ns
2 nx
2
4F
4 5F
4
ASR
ASR
ns
2 nx
2
60
3
STX
ax
1
61
3
STY
ax
1
62
3
STSP
ax
1
63
4
JMP
ax
1
64
5
JSR
ax
1
65
3
CLR
ax
1
66
4
NEG
ax
1
67
4
INC
ax
1
68
4
DEC
ax
1
69
3
TST
ax
1
6A
4
COM
ax
1
6B
4
LSL
ax
1
6C
4
LSR
ax
1
6D
4
ROL
ax
1
6E
4
ROR
ax
1
6F
4
ASR
ax
1
70
3
STX
ny
2
71
3
STY
ny
2
72
3
STSP
ny
2
73
4
JMP
ny
2
74
5
JSR
ny
2
75
3
CLR
ny
2
76
4
NEG
ny
2
77
4
INC
ny
2
78
4
DEC
ny
2
79
3
TST
ny
2
7A
4
COM
ny
2
7B
4
LSL
ny
2
7C
4
LSR
ny
2
7D
4
ROL
ny
2
7E
4
ROR
ny
2
7F
4
ASR
ny
2
80
3
STX
ay
1
81
3
STY
ay
1
82
3
STSP
ay
1
83
4
JMP
ay
1
84
5
JSR
ay
1
85
3
CLR
ay
1
86
4
NEG
ay
1
87
4
INC
ay
1
88
4
DEC
ay
1
89
3
TST
ay
1
8A
4
COM
ay
1
8B
4
LSL
ay
1
8C
4
LSR
ay
1
8D
4
ROL
ay
1
8E
4
ROR
ay
1
8F
4
ASR
ay
1
90
2
LDX
im
2
91
2
LDY
im
2
92
2
LDSP
im
2
93
4
SBCA
im
2
94
4
SUBA
im
2
95
4
ADCA
im
2
96
4
ADDA
im
2
97
3
CMPA
im
2
98
3
BITA
im
2
99
4
ANDA
im
2
9A
4
ORA
im
2
9B
4
EORA
im
2
9C
3
CMPX
im
2
9D
3
CMPY
im
2
9E
3
CMPSP
im
2
9F
4
EXG A,C
ih
1
A0
3 B0
3 C0
3 D0
3 E0
F0
2
LDX
LDX
LDX
LDX
LDA
ab
2 ns
2 nx
2 ny
2
im
2
A1
3 B1
3 C1
3 D1
3 E1
3 F1
3
LDY
LDY
LDY
LDY
STA
LDA
ab
2 ns
2 nx
2 ny
2 ab
2 ab
2
A2
3 B2
3 C2
3 D2
3 E2
3 F2
3
LDSP
LDSP
LDSP
LDSP
STA
LDA
ab
2 ns
2 nx
2 ny
2 ns
2 ns
2
A3
5 B3
5 C3
5 D3
5 E3
3 F3
3
SBCA
SBCA
SBCA
SBCA
STA
LDA
ab
2 ns
2 nx
2 ny
2 nx
2 nx
2
A4
5 B4
5 C4
5 D4
5 E4
3 F4
3
SUBA
SUBA
SUBA
SUBA
STA
LDA
ab
2 ns
2 nx
2 ny
2 ax
1 ax
1
A5
5 B5
5 C5
x D5
5 E5
4 F5
4
ADCA
ADCA
ADCA
ADCA
STA
LDA
ab
2 ns
2 nx
2 ny
2 x+
1 x+
1
A6
5 B6
5 C6
5 D6
5 E6
4 F6
4
ADDA
ADDA
ADDA
ADDA
STA
LDA
ab
2 ns
2 nx
2 ny
2 x1 x1
A7
4 B7
4 C7
4 D7
4 E7
4 F7
4
CMPA
CMPA
CMPA
CMPA
STA
LDA
ab
2 ns
2 nx
2 ny
2 +x
1 +x
1
A8
4 B8
4 C8
4 D8
4 E8
4 F8
4
BITA
BITA
BITA
BITA
STA
LDA
ab
2 ns
2 nx
2 ny
2 -x
1 -x
1
A9
5 B9
5 C9
5 D9
5 E9
3 F9
3
ANDA
ANDA
ANDA
ANDA
STA
LDA
ab
2 ns
2 nx
2 ny
2 ny
2 ny
2
AA
5 BA
5 CA
5 DA
5 EA
3 FA
3
ORA
ORA
ORA
ORA
STA
LDA
ab
2 ns
2 nx
2 ny
2 ay
1 ay
1
AB
5 BB
5 CB
5 DB
5 EB
4 FB
4
EORA
EORA
EORA
EORA
STA
LDA
ab
2 ns
2 nx
2 ny
2 y+
1 y+
1
AC
4 BC
4 CC
4 DC
4 EC
4 FC
4
CMPX
CMPX
LEAX
LEAX
STA
LDA
ab
2 ns
2 nx
2 ns
2 y1 y1
AD
4 BD
4 CD
4 DD
4 ED
4 FD
4
CMPY
CMPY
LEAY
LEAY
STA
LDA
ab
2 ns
2 ny
2 ns
2 +y
1 +y
1
AE
4 BE
4 CE
4 DE
4 EE
4 FE
4
CMPSP LEASP LEASP LEASP
STA
LDA
ab
2 ns
2 nx
2 ny
2 -y
1 -y
1
AF
4 BF
4 CF
4 DF
EF
FF
EXG X,Y EXG X,S EXG Y,S
ih
1 ih
1 ih
1
11
FLISP - HANDBOK
Detaljerad beskrivning av
FLIS-processorns
instruktioner
Instruktion/Variant
Här anges instruktionens mnemonics med assemblersyntax för de tillgängliga adresseringssätten.
Adressering
OP
Operationskod för instruktion, hexadecimal form
#
Antal bytes i instruktionen
~
Antal klockcykler som krävs för att utföra en instruktion
Operationsbeskrivningar (RTN, register transfer notation)
n
Konstant uttryckt i talbas 10
Nr
Konstanten N uttryckt i talbasen r.
EA
Effektiv adress
Opr
Operand, data på effektiv adress
M(Adr)
Minnesinnehåll på adressen ”Adr”
→
Kopiering
Följande symboler är beteckningar som reserverats för register
A
Ackumulator A
X
Adressregister X
Y
Adressregister Y
CC
Flaggregister (Condition Codes Register)
PC
Programräknare (Program Counter)
SP
Stackpekare (Stack Pointer)
Följande symboler är beteckningar som reserverats för för villkorsindikatorer (flaggor).
N
Teckenflaggan ("Negative")
Z
Nollflaggan ("Zero")
V
Overflowflaggan
C
Carryflaggan
Operatorer
+
Addition
Subtraktion
Logiskt ”OCH” (AND)

Logiskt ”ELLER” (OR)

Logiskt ”EXKLUSIVT ELLER” (XOR)

Opr<<d
”Opr” skiftas vänster. Biten d skiftas in i den minst signifikanta positionen.
d>>Opr
”Opr” skiftas höger. Biten d skiftas in i den mest signifikanta positionen.
Opr’
Bitvis komplementering av operanden ”Opr”
Flaggor
Statusbiten påverkas ej vid operationen
0
Statusbiten nollställs vid operationen
1
Statusbiten ettställs vid operationen
Δ
Statusbiten nollställs/ettställs av operationens resultat
?
Odefinierat värde. Anger att en flagga får ett slumpartat värde efter operationen
!
Statusbiten används för speciellt syfte
12
DEL I: PROGRAMMERARENS BILD
ADCA
Add data with carry into register A
A + Opr + C  A
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1 vid additionen
Z: Ettställs om samtliga åtta bitar i resultatet blir noll vid additionen
V: Ettställs om 2-komplements-overflow inträffar vid additionen
C: Ettställs om summan vid additionen ej ryms i åtta bitar
Beskrivning: Utför åttabitars addition av dataordet i minnet och innehållet i register A. Resultatets
åtta minst signifikanta bitar placeras i register A. Den nionde biten (mest signifikant)
placeras i C- biten (C-flaggan) i CC-registret. Det gamla värdet på C-biten i
flaggregistret används som minnessiffra i minst signifikant position (minnessiffra in)
vid additionen
RTN:
Flaggor:
Detaljer:
Instruktion
ADD with Carry
Variant
ADCA #Data
ADCA Adr
ADCA n,SP
ADCA n,X
ADCA n,Y
ADDA
Adressering
metod
Immediate
Absolute
Indexed
Indexed
Indexed
Operation
OP
95
A5
B5
C5
D5
#
2
2
2
2
2
~
4
5
5
5
5
A + Data+C  A
A + M(Adr)+C  A
A + M(n+SP) + C  A
A + M(n+X) + C  A
A + M(n+Y) + C  A
Flaggor
NZVC
Δ Δ Δ Δ
Add data into register A
A + Opr  A
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1 vid additionen
Z: Ettställs om samtliga åtta bitar i resultatet blir noll vid additionen
V: Ettställs om overflow vid 2-komplementsrepresentation inträffar vid additionen
C: Ettställs om summan vid additionen ej ryms i åtta bitar, dvs blir större än eller lika
med 256
Beskrivning Utför åttabitars addition av dataordet i minnet och innehållet i register A. Resultatets
åtta minst signifikanta bitar placeras i register A. Den nionde biten (mest signifikant)
placeras i C- biten (C-flaggan) i CC-registret
RTN
Flaggor
Detaljer:
Instruktion
ADD
Variant
ADDA #Data
ADDA Adr
ADDA n,SP
ADDA n,X
ADCA n,Y
Adressering
metod
Immediate
Absolute
Indexed
Indexed
Indexed
Operation
OP
96
A6
B6
C6
D5
#
2
2
2
2
2
~
4
5
5
5
5
A + Data  A
A + M(Adr)  A
A + M(n+SP)  A
A + M(n+X)  A
A + M(n+Y) + C  A
Flaggor
NZVC
Δ Δ Δ Δ
13
FLISP - HANDBOK
ANDA
RTN
Flaggor
Beskrivning
Logical AND data into register A
A  Opr  A
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Nollställs.
C: Påverkas ej
Utför bitvis AND-operation mellan dataordet i minnet och innehållet i register A.
Resultatet placeras i register A.
Detaljer:
Instruktion
ANDA
Variant
ANDA #Data
ANDA Adr
ANDA n,SP
ANDA n,X
ANDA n,Y
ANDCC
RTN
Flaggor
Beskrivning
Adressering
metod
Immediate
Absolute
Indexed
Indexed
Indexed
Operation
OP
99
A9
B9
C9
D9
#
2
2
2
2
2
~
4
5
5
5
5
A  Data  A
A  M(Adr)  A
A  M(n+SP)  A
A  M(n+X)  A
A  M(n+Y)  A
Flaggor
NZVC
Δ Δ 0 ‐
Logical AND data into register CC
CC  Data  CC
Flaggorna nollställs i de positioner där CC eller Data innehåller någon nolla.
Utför bitvis AND-operation mellan innehållet i flaggregistret (CC) och dataordet.
Resultatet placeras i flaggregistret
Detaljer:
Instruktion
ANDCC
ANDCC #Data
14
Adressering
metod
Immediate
Operation
OP # ~
01 2 4 CC  Data  CC
Flaggor
I NZVC
Δ Δ Δ Δ Δ
DEL I: PROGRAMMERARENS BILD
ASL
RTN
Flaggor
Beskrivning
Arithmetic shift left
A <<1  A eller M(EA) <<1  M(EA)
N: Kopia av bit 7 efter skiftet.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Ettställs om C och bit 7 är olika efter operationen, dvs overflow vid 2komplements-representation inträffar.
C: bit 7 före skiftet blir ny carrybit efter skiftet.
Skiftar operanden ett steg till vänster, dvs. multiplicerar ett tal med eller utan
inbyggt tecken med 2. Instruktionen är identisk med LSL.
Detaljer:
Instruktion
ASL
Variant
ASLA
ASL
Adr
ASL
n,SP
ASL
n,X
ASL
A,X
ASL
n,Y
ASL
A,Y
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
0B
3B
4B
5B
6B
7B
8B
#
1
2
2
2
1
2
1
~
3
4
4
4
4
4
4
A<<1  A
M(Adr)<<1  M(Adr)
M(n+SP)<<1  M(n+SP)
M(n+X)<<1  M(n+X)
M(A+X)<<1  M(A+X)
M(n+Y)<<1  M(n+Y)
M(A+Y)<<1  M(A+Y)
Flaggor
NZVC
Δ Δ Δ Δ
15
FLISP - HANDBOK
ASR
Arithmetic shift right
RTN
Flaggor
Beskrivning
A >>1  A eller M >>1  M
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Nollställs.
C: bit 0 före skiftet blir ny carrybit efter skiftet.
Skiftar operanden ett steg till höger, dvs. dividerar tal med inbyggt tecken med 2
Detaljer:
Instruktion
ASR
Variant
ASRA
ASR
Adr
ASR
n,SP
ASR
n,X
ASR
A,X
ASR
n,Y
ASR
A,Y
BCC
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
0F
3F
4F
5F
6F
7F
8F
# ~
1 3 A>>1  A
2
M(Adr)>>1  M(Adr)
2
M(n+SP)>>1M(n+SP)
2
M(n+X)>>1  M(n+X)
1
M(A+X)>>1  M(A+X)
2
M(n+Y)>>1  M(n+Y)
1
M(A+Y)>>1  M(A+Y)
Flaggor
NZVC
Δ Δ 0 Δ
Branch on carry clear ( = BHS)
RTN
Flaggor
Beskrivning
If C = 0: PC+Offset  PC
Påverkas ej
Testar C-flaggans värde. Om C=0 utförs ett hopp till adressen ADRESS =
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 C=1 utförs inget hopp. Nästa instruktion blir i så
fall den direkt efter branchinstruktionen i minnet.
Detaljer:
Instruktion
BCC
BCC
16
Adr
Adressering
metod
Relativ
Operation
OP # ~
29 2 4 If C=0:
PC+Offset  PC
Flaggor
NZVC
- - - -
DEL I: PROGRAMMERARENS BILD
BCS
Branch on carry set
RTN
Flaggor
Beskrivning
( = BLO)
If C = 1: PC+Offset  PC
Påverkas ej
Testar C-flaggans värde. Om C=1 utförs ett hopp till adressen ADRESS =
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 C=0 utförs inget hopp. Nästa instruktion blir i så
fall den direkt efter branchinstruktionen i minnet.
Detaljer:
Instruktion
BCS
BCS
Adr
BEQ
Adressering
metod
Relativ
Operation
OP # ~
28 2 4 If (C = 1)
PC+Offset  PC
Flaggor
NZVC
- - - -
Branch on equal to zero
RTN
If Z = 1: PC+Offset  PC
Flaggor
Påverkas ej
Beskrivning Testar Z-flaggans värde. Om Z=1 utförs ett hopp till adressen ADRESS = 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=0 utförs inget hopp. Nästa instruktion blir i så fall den direkt efter
branchinstruktionen i minnet.
Detaljer:
Instruktion
BEQ
BEQ
Adr
Adressering
metod
Relativ
Operation
OP # ~
24 2 4 If (Z = 1)
PC+Offset  PC
Flaggor
NZVC
- - - -
17
FLISP - HANDBOK
BGE
Branch on greater than or equal to zero
RTN
Flaggor
Beskrivning
If NV = 0: PC+Offset  PC
Påverkas ej
Testar värdet hos Booleska uttrycket NV. Om NV =0 utförs ett hopp till
adressen ADRESS = 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 NV =1 utförs
inget hopp. Nästa instruktion blir i så fall den direkt efter branchinstruktionen i
minnet.
Detaljer:
Instruktion
BGE
BGE
Adr
BGT
Adressering
metod
Relativ
Operation
OP # ~
2D 2 4 If ((NV) = 0)
PC+Offset  PC
Flaggor
NZVC
- - - -
Branch on greater than zero
RTN
Flaggor
Beskrivning
If (NV)+Z = 0: PC+Offset  PC
Påverkas ej
Testar värdet hos Booleska uttrycket (NV)+Z. Om (NV)+Z = 0 utförs ett hopp
till adressen ADRESS = 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 (NV)+Z =1 utförs
inget hopp. Nästa instruktion blir i så fall den direkt efter branchinstruktionen i
minnet.
Detaljer:
Instruktion
BGT
BGT
18
Adr
Adressering
metod
Relativ
Operation
OP # ~
2C 2 4 If ((NV) + Z = 0)
PC+Offset  PC
Flaggor
NZVC
- - - -
DEL I: PROGRAMMERARENS BILD
BHI
Branch if higher than zero
RTN
Flaggor
Beskrivning
If C+Z = 0: PC+Offset  PC
Påverkas ej
Beskrivning: Testar värdet hos Booleska uttrycket C+Z. Om C+Z = 0 utförs ett
hopp till adressen ADRESS = 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 C+Z = 1 utförs
inget hopp. Nästa instruktion blir i så fall den direkt efter branchinstruktionen i
minnet.
Detaljer:
Instruktion
BHI
BHI
Adressering
metod
Relativ
Adr
BITA
Operation
Flaggor
OP # ~
2A 2 4 If (C+Z = 0):
PC+Offset  PC
NZVC
- - - -
Bit test register A
RTN:
Flaggor:
Beskrivning:
A  Opr
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Nollställs.
C: Påverkas ej
Utför bitvis AND-operation mellan dataordet i minnet och innehållet i register A.
Resultatet lagras ej, utan påverkar endast flaggorna
Detaljer:
Instruktion
BITA
Variant
BITA #Data
BITA Adr
BITA n,SP
BITA n,X
BITA n,Y
Adressering
metod
Immediate
Absolute
Indexed
Indexed
Indexed
Operation
OP
98
A8
B8
C8
D8
#
2
2
2
2
2
~
3
4
4
4
4
A  Data
A  M(Adr)
A  M(n+SP)
A  M(n+X)
A  M(n+Y)
Flaggor
NZVC
Δ Δ 0 ‐
19
FLISP - HANDBOK
BLE
Branch on less than or equal to zero
RTN
Flaggor
Beskrivning
If (NV)+Z = 1: PC+Offset  PC
Påverkas ej
Testar värdet hos Booleska uttrycket (NV)+Z. Om (NV)+Z = 1 utförs ett hopp
till adressen ADRESS = 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 (NV)+Z = 0
utförs inget hopp. Nästa instruktion blir i så fall den direkt efter
branchinstruktionen i minnet.
Detaljer:
Instruktion
BLE
BLE
Adr
BLS
Adressering
metod
Relativ
Operation
OP # ~
2E 2 4 If (NV) + Z = 1:
PC+Offset  PC
Flaggor
NZVC
- - - -
Branch on lower or same
RTN
Flaggor
Beskrivning
If C+Z = 1: PC+Offset  PC
Påverkas ej
Testar värdet hos Booleska uttrycket C+Z. Om C+Z = 1 utförs ett hopp till
adressen ADRESS = 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 C+Z = 0 utförs
inget hopp. Nästa instruktion blir i så fall den direkt efter branchinstruktionen i
minnet.
Detaljer:
Instruktion
BLS
BLS
20
Adr
Adressering
metod
Relativ
Operation
OP # ~
2B 2 4 If C+Z = 1:
PC+Offset  PC
Flaggor
NZVC
- - - -
DEL I: PROGRAMMERARENS BILD
BLT
Branch on less than zero
RTN
Flaggor
Beskrivning
If NV = 1: PC+Offset  PC
Påverkas ej
Testar värdet hos Booleska uttrycket NV. Om NV = 1 utförs ett hopp till
adressen ADRESS = PC+Offset. Offset räknas från adressen efter
branchinstruktionen, dvs vid uträkningen av hoppadressen pekar PC på
operationskoden direkt efter branchinstruktionen i minnetOm NV = 0 utförs
inget hopp. Nästa instruktion blir i så fall den direkt efter branchinstruktionen i
minnet.
Detaljer:
Instruktion
BLT
BLT
Adr
BMI
Adressering
metod
Relativ
Operation
Flaggor
OP # ~
2F 2 4 If (NV) = 1:
PC+Offset  PC
NZVC
- - - -
Branch on minus
RTN
Flaggor
Beskrivning
If N = 1: PC+Offset  PC
Påverkas ej
Testar N-flaggans värde. Om N=1 utförs ett hopp till adressen ADRESS =
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 N=0 utförs inget hopp. Nästa instruktion blir i så
fall den direkt efter branchinstruktionen i minnet.
Detaljer:
Instruktion
BMI
BMI
Adr
Adressering
metod
Relativ
Operation
OP # ~
22 2 4 If N = 1:
PC+Offset  PC
Flaggor
NZVC
- - - -
21
FLISP - HANDBOK
BNE
Branch if not equal to zero
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 ADRESS = 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.
Detaljer:
Instruktion
BNE
BNE
Adr
BPL
Adressering
metod
Relativ
Operation
OP # ~
25 2 4 If (Z = 0)
PC+Offset  PC
Flaggor
NZVC
- - - -
Branch on plus
RTN
Flaggor
Beskrivning
If N = 0: PC+Offset  PC
Påverkas ej
Testar N-flaggans värde. Om N=0 utförs ett hopp till adressen ADRESS =
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 N=1 utförs inget hopp. Nästa instruktion blir i så
fall den direkt efter branchinstruktionen i minnet
Detaljer:
Instruktion
BPL
BPL
22
Adr
Adressering
metod
Relativ
Operation
OP # ~
23 2 4 If N = 0:
PC+Offset  PC
Flaggor
NZVC
- - - -
DEL I: PROGRAMMERARENS BILD
BRA
Branch always
RTN
Flaggor
Beskrivning
PC+Offset  PC
Påverkas ej
Ett hopp utförs till adressen ADRESS = PC+Offset. Offset räknas från adressen
efter branchinstruktionen, dvs vid uträkning av destinationsadressen pekar PC på
operationskoden som (eventuellt) finns direkt efter branchinstruktionen i minnet
Detaljer:
Instruktion
BRA
BRA
Adr
BSR
Adressering
metod
Relativ
Operation
OP # ~
21 2 4 PC+Offset  PC
Flaggor
N ZVC
- - - -
Branch to subroutine
RTN
Flaggor
Beskrivning
SP–1  SP
PC  M(SP)
PC+Offset  PC
Påverkas ej
PC-värdet (återhoppsadressen) skrivs först på stacken. Ett hopp utförs sedan till
adressen ADRESS = PC+Offset. Offset räknas från adressen efter BSRinstruktionen, dvs vid uträkningen av hopp-adressen pekar PC på
operationskoden direkt efter BSR-instruktionen (= återhoppsadressen)
Detaljer:
Instruktion
BSR
BSR
Adr
Adressering
metod
Relativ
Operation
OP # ~
20 2 5 SP–1  SP
PC  M(SP)
PC+Offset  PC
Flaggor
NZVC
- - - -
23
FLISP - HANDBOK
BVC
Branch if no overflow
RTN
Flaggor
Beskrivning
If V = 0: PC+Offset  PC
Påverkas ej
Testar V-flaggans värde. Om V=0 utförs ett hopp till adressen ADRESS =
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 V=1 utförs inget hopp. Nästa instruktion blir i så
fall den direkt efter branchinstruktionen i minnet
Detaljer:
Instruktion
BVC
BVC
Adr
BVS
Adressering
metod
Relativ
Operation
OP # ~
27 2 4 If V = 0:
PC+Offset  PC
Flaggor
NZVC
- - - -
Branch if overflow
RTN
If V = 1: PC+Offset  PC
Flaggor
Påverkas ej
Beskrivning Testar V-flaggans värde. Om V=1 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å operations-koden direkt efter branchinstruktionen i
minnet. Om V=0 utförs inget hopp. Nästa instruktion blir i så fall den direkt efter
branchinstruktionen i minnet
Detaljer:
Instruktion
BVS
BVS
24
Adr
Adressering
metod
Relativ
Operation
OP # ~
26 2 4 If V = 1:
PC+Offset  PC
Flaggor
NZVC
- - - -
DEL I: PROGRAMMERARENS BILD
CLR
RTN
Flaggor
Beskrivning
Clear register or memory
0  A, eller 0  M
N: Nollställs.
Z: Ettställs.
V: Nollställs
C: Nollställs
Beskrivning: Register A eller innehållet på minnesadress nollställs.
Detaljer:
Instruktion
CLR
Variant
CLRA
CLR Adr
CLR n,SP
CLR n,X
CLR A,X
CLR n,Y
CLR A,Y
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
05
35
45
55
65
75
85
#
1
2
2
2
1
2
1
~
3
3
3
3
3
3
3
0A
0  M(Adr)
0  M(n+SP)
0  M(n+X)
0  M(A+X)
0  M(n+Y)
0  M(A+Y)
Flaggor
NZVC
0 1 0 0
25
FLISP - HANDBOK
CMP
RTN
Flaggor
Beskrivning
Compare register and data
R  Opr där R = A, X, Y eller SP
N: Får värdet hos skillnadens teckenbit (bit 7).
Z: Ettställs om skillnaden blir noll.
V: Ettställs om 2-komplementoverflow uppstår vid subtraktionen
C: Ettställs om borrow uppstår vid subtraktionen.
Operanden subtraheras från innehållet i det angivna registret. Skillnaden lagras
ej, utan påverkar endast flaggorna.
Detaljer:
Instruktion
CMP
Variant
CMPA #Data
CMPA Adr
CMPA n,SP
CMPA n,X
CMPA n,Y
CMPX #Data
CMPX Adr
CMPX n,SP
CMPY #Data
CMPY Adr
CMPY n,SP
CMPSP #Data
CMPSP Adr
26
Adressering
metod
Immediate
Absolute
Indexed
Indexed
Indexed
Immediate
Absolute
Indexed
Immediate
Absolute
Indexed
Immediate
Absolute
Operation
OP
97
A7
B7
C7
D7
9C
AC
BC
9D
AD
BD
9E
AE
#
2
2
2
2
2
2
2
2
2
2
2
2
2
~
3
4
4
4
4
3
4
4
3
4
4
3
4
A – Data
A – M(Adr)
A – M(n+SP)
A – M(n+X)
A – M(n+Y)
X – Data
X – M(Adr)
X – M(n+SP)
Y – Data
Y – M(Adr)
Y – M(n+SP)
SP – Data
SP – M(Adr)
Flaggor
NZVC
Δ Δ Δ Δ
DEL I: PROGRAMMERARENS BILD
COM
RTN
Flaggor
Complement register or memory
R'  R eller M'  M
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Nollställs.
C: Påverkas ej
Beskrivning
Detaljer:
Instruktion
COM
Variant
COMA
COM
Adr
COM
n,SP
COM
n,X
COM
A,X
COM
n,Y
COM
A,Y
DEC
RTN
Flaggor
Beskrivning
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
0A
3A
4A
5A
6A
7A
8A
#
1
2
2
2
1
2
1
~
3
4
4
4
4
4
4
A'  A
M(Adr) '  M(Adr)
M(n+SP) '  M(n+SP)
M(n+X) '  M(n+X)
M(A+X) '  M(A+X)
M(n+Y) '  M(n+Y)
M(A+Y) '  M(A+Y)
Flaggor
NZVC
Δ Δ 0 ‐
Decrement register or memory
R  1  R eller M  1  M
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1
Z: Ettställs om samtliga åtta bitar i resultatet blir noll
V: Ettställs om 2-komplementoverflow uppstår
C: Påverkas ej
Subtraherar 1 från operanden
Detaljer:
Instruktion
DEC
Variant
DECA
DEC Adr
DEC n,SP
DEC n,X
DEC A,X
DEC n,Y
DEC A,Y
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
08
38
48
58
68
78
88
#
1
2
2
2
1
2
1
~
3
4
4
4
4
4
4
A–1A
M(Adr) –1  M(Adr)
M(n+SP) –1  M(n+SP)
M(n+X) –1  M(n+X)
M(A+X) –1  M(A+X)
M(n+Y) –1  M(n+Y)
M(A+Y) –1  M(A+Y)
Flaggor
NZVC
Δ Δ Δ ‐
27
FLISP - HANDBOK
EOR
Exclusive-OR register A
AMA
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Nollställs.
C: Påverkas ej.
Utför bitvis XOR-operation mellan dataordet i minnet och innehållet i register A.
Resultatet placeras i register A.
RTN
Flaggor
Beskrivning
Detaljer:
Instruktion
DEC
Variant
EORA #Data
EORA Adr
EORA n,SP
EORA n,X
EORA n,Y
EXG
Adressering
metod
Immediate
Absolute
Indexed
Indexed
Indexed
Operation
OP
9B
AB
BB
CB
DB
#
2
2
2
2
2
~
4
5
5
5
5
AData  A
AM(Adr)  A
AM(n+SP)  A
AM(n+X)  A
AM(n+Y)  A
Flaggor
NZVC
Δ Δ 0 ‐
Exchange register contents
RTN
Flaggor
Beskrivning
R1  R2
Påverkas endast om CC-registret är det ena registret som används
Data skiftas mellan angivna register
Detaljer:
Instruktion
EXG
Variant
EXG A,CC
EXG X,Y
EXG X,SP
EXG Y,SP
28
Adressering
metod
Inherent
Inherent
Inherent
Inherent
OP
9F
AF
BF
CF
#
1
1
1
1
~
4
4
4
4
Operation
Flaggor
A  CC
XY
X  SP
Y  SP
N

-
Z

-
V

-
C

-
DEL I: PROGRAMMERARENS BILD
INC
RTN
Flaggor
Increment register or memory
A + 1  A eller M + 1  M
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Ettställs om 2-komplementoverflow uppstår.
C: Påverkas ej
Beskrivning
Detaljer:
Instruktion
INC
Variant
INCA
INC Adr
INC n,SP
INC n,X
INC A,X
INC n,Y
INC A,Y
JMP
RTN
Flaggor
Beskrivning
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
07
37
47
57
67
77
87
#
1
2
2
2
1
2
1
~
3
4
4
4
4
4
4
A+1A
M(Adr) +1  M(Adr)
M(n+SP) +1  M(n+SP)
M(n+X) +1  M(n+X)
M(A+X) +1  M(A+X)
M(n+Y) +1  M(n+Y)
M(A+Y) +1  M(A+Y)
Flaggor
NZVC
Δ Δ Δ ‐
Jump
EA  PC
Påverkas ej
Ovillkorlig programflödesändring, nästa instruktion hämtas från effektiva adressen
EA.
Detaljer:
Instruktion
JMP
Variant
JMP Adr
JMP n,X
JMP A,X
JMP n,Y
JMP A,Y
Adressering
metod
Absolute
Indexed
Indexed
Indexed
Indexed
Operation
OP
33
53
63
73
83
#
2
2
1
2
1
~
2
4
4
4
4
Adr  PC
n+X  PC
A+X  PC
n+Y  PC
A+Y  PC
Flaggor
NZVC
- - - -
29
FLISP - HANDBOK
JSR
Jump to subroutine
RTN
Flaggor
Beskrivning
SP–1  SP; PC  M(SP); EA  PC
Påverkas ej
PC-värdet, som är adressen till instruktionen efter JSR-instruktionen, dvs
återhoppsadressen, skrivs först på stacken. Ett hopp utförs sedan till adressen
EA.
Detaljer:
Instruktion
JSR
Variant
JSR Adr
metod
Absolute
JSR
n,X
Indexed
JSR
A,X
Indexed
JSR
n,Y
Indexed
JSR
A,Y
Indexed
30
Adressering
Operation
OP # ~
34 2 4 SP–1  SP
PC  M(SP)
Adr  PC
54 2 5 SP–1  SP
PC  M(SP)
n+X  PC
64 1 5 SP–1  SP
PC  M(SP)
A+X  PC
74 2 5 SP–1  SP
PC  M(SP)
n+X  PC
84 1 5 SP–1  SP
PC  M(SP)
A+X  PC
Flaggor
NZVC
- - - -
DEL I: PROGRAMMERARENS BILD
LD
Load register
RTN
Flaggor
M (EA) R
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Nollställs.
C: Påverkas ej
Beskrivning Laddar dataord från minnet till angivet register R (A,X,Y eller SP)
Detaljer:
Instruktion
LD
Variant
LDA
#Data
LDA
Adr
LDA
n,SP
LDA
n,X
LDA
A,X
LDA
,X+
LDA
,XLDA
,+X
LDA
,-X
LDA
n,Y
LDA
A,Y
LDA
,Y+
LDA
,YLDA
,+Y
LDA
,-Y
LDX
#Data
LDX
Adr
LDX
n,SP
LDX
n,X
LDX
n,Y
LDY
#Data
LDY
Adr
LDY
n,SP
LDY
n,X
LDY
n,Y
LDSP #Data
LDSP Adr
LDSP n,SP
LDSP n,X
LDSP n,Y
Adressering
metod
Immediate
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Immediate
Absolute
Indexed
Indexed
Indexed
Immediate
Absolute
Indexed
Indexed
Indexed
Immediate
Absolute
Indexed
Indexed
Indexed
Operation
OP
F0
F1
F2
F3
F4
F5
F6
F7
F8
F9
FA
FB
FC
FD
FE
90
A0
B0
C0
D0
91
A1
B1
C1
D1
92
A2
B2
C2
D2
#
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
~
2
3
3
3
3
4
4
4
4
3
3
4
4
4
4
2
3
3
3
3
2
3
3
3
3
2
3
3
3
3
Data  A
M(Adr)  A
M(n+SP)  A
M(n+X)  A
M(A+X)  A
M(X)  A, X+1  X
M(X)  A, X-1  X
X+1  X, M(X)  A
X–1  X, M(X)  A
M(n+Y)  A
M(A+Y)  A
M(Y)  A, Y+1  Y
M(Y)  A, Y-1  Y
Y+1  Y, M(Y)  A
Y–1  Y, M(Y)  A
Data X
M(Adr)  X
M(n+SP)  X
M(n+X)  X
M(n+Y)  X
Data Y
M(Adr)  Y
M(n+SP)  Y
M(n+X)  Y
M(n+Y)  Y
Data  SP
M(Adr)  SP
M(n+SP)  SP
M(n+X)  SP
M(n+Y)  SP
Flaggor
NZVC
  0 -
31
FLISP - HANDBOK
LEA
Load effective address
Varianter
RTN
Flaggor
Beskrivning
Detaljer:
EA  R ; R kan vara X,Y eller SP
Påverkas ej
Laddar effektiva adressen i R.
Instruktion
LEA
Variant
LEAX
n,X
LEAX
n,SP
LEAY
n,Y
LEAY
n,SP
LEASP n,SP
LEASP n,X
LEASP n,Y
LSL
RTN
Flaggor
Beskrivning
Adressering
metod
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
CC
DC
CD
DD
BE
CE
DE
Logical shift left,
#
2
2
2
2
2
2
2
~
4
4
4
4
4
4
4
X+nX
SP + n  X
Y+nY
SP + n  Y
SP + n  SP
X + n  SP
Y + n  SP
Flaggor
NZVC
- - - -
ASL Arithmetic shift left
A <<1  A eller M(EA) <<1  M(EA)
N: Kopia av bit 7 efter skiftet.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Ettställs om C och bit 7 är olika efter operationen, dvs overflow vid 2komplements-representation inträffar.
C: bit 7 före skiftet blir ny carrybit efter skiftet.
Skiftar operanden ett steg till vänster, dvs. multiplicerar ett tal med eller utan
inbyggt tecken med 2. Instruktionen är identisk med ASL.
Detaljer:
Instruktion
LSL
Variant
LSLA
LSL
Adr
LSL
n,SP
LSL
n,X
LSL
A,X
LSL
n,Y
LSL
A,Y
32
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
0B
3B
4B
5B
6B
7B
8B
#
1
2
2
2
1
2
1
~
3
4
4
4
4
4
4
A<<1  A
M(Adr)<<1  M(Adr)
M(n+SP)<<1  M(n+SP)
M(n+X)<<1  M(n+X)
M(A+X)<<1  M(A+X)
M(n+Y)<<1  M(n+Y)
M(A+Y)<<1  M(A+Y)
Flaggor
NZVC
Δ Δ Δ Δ
DEL I: PROGRAMMERARENS BILD
LSR
Logical shift right
A >>1  A eller M >>1  M
N: Nollställs.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Ettställs om overflow vid 2-komplements-representation inträffar.
C: bit 0 före skiftet blir ny carrybit efter skiftet.
Beskrivning Skiftar operanden ett steg till höger, dvs. dividerar ett tal utan inbyggt tecken med 2
RTN
Flaggor
Detaljer:
Instruktion
LSR
Variant
LSRA
LSR
Adr
LSR
n,SP
LSR
n,X
LSR
A,X
LSR
n,Y
LSR
A,Y
NEG
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
0C
3C
4C
5C
6C
7C
8C
#
1
2
1
2
1
2
1
~
3
4
4
4
4
4
4
A>>1  A
M(Adr)>>1  M(Adr)
M(n+SP)>>1  M(n+SP)
M(n+X)>>1  M(n+X)
M(A+X)>>1  M(A+X)
M(n+Y)>>1  M(n+Y)
M(A+Y)>>1  M(A+Y)
Flaggor
NZVC
0 Δ Δ Δ
Negate register or memory
0 – R  R eller 0 – M  M
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll, dvs om det gamla värdet är
noll.
V: Ettställs om 2-komplementoverflow uppstår.
C: Ettställs om det gamla värdet  0.
Beskrivning 2-komplementerar innehållet i angivet register eller minnesinnehåll.
RTN
Flaggor
Detaljer:
Instruktion
NEG
Variant
NEGA
NEG
Adr
NEG
n,SP
NEG
n,X
NEG
A,X
NEG
n,Y
NEG
A,Y
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
06
36
46
56
66
76
86
#
1
2
2
2
1
2
1
~
3
4
4
4
4
4
4
–AA
– M(Adr)  M(Adr)
– M(n+SP)  M(n+SP)
– M(n+X)  M(n+X)
– M(A+X)  M(A+X)
– M(n+Y)  M(n+Y)
– M(A+Y)  M(A+Y)
Flaggor
NZVC
Δ Δ Δ Δ
33
FLISP - HANDBOK
NOP
No operation
RTN
Flaggor
Påverkas ej
Beskrivning Instruktionen utför ingenting
Detaljer:
Instruktion
NOP
Adressering
metod
Inherent
NOP
ORA
Operation
OP # ~
00 1 2 No operation
Flaggor
NZVC
- - - -
Logical OR data into register A
AMA
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Nollställs.
C: Påverkas ej
Beskrivning Utför bitvis OR-operation mellan dataordet i minnet och innehållet i register A.
Resultatet placeras i register A.
RTN
Flaggor
Detaljer:
Instruktion
Adressering
ORA
Variant
ORA
ORA
ORA
ORA
ORA
metod
Immediate
Absolute
Indexed
Indexed
Indexed
#Data
Adr
n,SP
n,X
n,Y
ORCC
Operation
OP
9A
AA
BA
CA
DA
#
2
2
2
2
2
~
4
5
5
5
5
AData  A
AM(Adr)  A
AM(n+SP)  A
AM(n+X)  A
AM(n+Y)  A
Flaggor
N Z V C
Δ Δ 0 -
Logical OR Data into register CC
RTN
CC  Data  CC
Flaggor
Flaggorna ettställs i de positioner där CC eller Data innehåller någon etta
Beskrivning Utför bitvis OR-operation mellan innehållet i flaggregistret (CC) och dataordet.
Resultatet placeras i flaggregistret
Detaljer:
Instruktion
ORCC
ORCC
34
Adressering
metod
#Data Inherent
Operation
OP # ~
02 2 4 CC Data  CC
Flaggor
I NZVC
Δ Δ Δ Δ Δ
DEL I: PROGRAMMERARENS BILD
PSH
Push register on Stack
SP–1  SP
R  M(SP)
Flaggor
Påverkas ej
Beskrivning Stackpekaren uppdateras först. Angivet registerinnehåll skrivs sedan på stacken
RTN
Detaljer:
Instruktion
PSH
Variant
PSHA
Adressering
PSHX
Inherent
PSHY
Inherent
PSHCC
Inherent
PUL
Varianter
RTN
Flaggor
Beskrivning
metod
Inherent
Operation
OP # ~
10 1 3 SP–1  SP
A  M(SP)
11 1 3 SP–1  SP
X  M(SP)
12 1 3 SP–1  SP
Y  M(SP)
13 1 3 SP–1  SP
CC  M(SP)
Flaggor
NZVC
- - - -
Pull register from stack
M(SP)  R
SP+1  SP
Flaggorna påverkas endast vid PULC, då flaggorna får värden från stacken
Översta dataordet på stacken läses och placeras i angivet register. Stackpekaren
uppdateras sedan
Detaljer:
Instruktion
PUL
Variant
PULA
Adressering
PULX
Inherent
PULY
Inherent
PULCC
Inherent
metod
Inherent
Operation
OP # ~
14 1 3 M(SP)  PC,
SP+1  SP
15 1 3 M(SP)  X
SP+1  SP
16 1 3 M(SP)  Y
SP+1  SP
17 1 3 M(SP)  CC
SP+1  SP
Flaggor
NZVC
- - - - - - - - - Δ Δ Δ Δ
35
FLISP - HANDBOK
ROL
Rotate left
A <<A  A eller M <<1  M
N: Kopia av bit 7 efter skiftet.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Ettställs om C och bit 7 är olika efter operationen, dvs overflow vid 2komplements-representation inträffar.
C: bit 7 före skiftet blir ny carrybit efter skiftet.
Beskrivning Skiftar operanden ett steg till vänster, dvs. multiplicerar ett tal med eller
utan inbyggt tecken med 2
RTN
Flaggor
Detaljer:
Instruktion
ROL
Variant
ROLA
ROL
Adr
ROL
n,SP
ROL
n,X
ROL
A,X
ROL
n,Y
ROL
A,Y
36
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
0D
3D
4D
5D
6D
7D
8D
#
1
2
2
2
1
2
1
~
3
4
4
4
4
4
4
A<<1  A
M(Adr)<<1  M(Adr)
M(n+SP)<<1  M(n+SP)
M(n+X)<<1  M(n+X)
M(A+X)<<1  M(A+X)
M(n+Y)<<1  M(n+Y)
M(A+Y)<<1  M(A+Y)
Flaggor
NZVC
Δ Δ Δ Δ
DEL I: PROGRAMMERARENS BILD
ROR
Rotate right
A >>1  A eller M >>1  M
N: C före skiftoperationen.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Ettställs om overflow vid 2-komplements-representation inträffar.
C: bit 0 före skiftet blir ny carrybit efter skiftet.
Beskrivning Skiftar operanden ett steg till höger, dvs. dividerar ett tal utan inbyggt
tecken med 2
RTN
Flaggor
Detaljer:
Instruktion
ROR
Variant
RORA
ROR
Adr
ROR
n,SP
ROR
n,X
ROR
A,X
ROR
n,Y
ROR
A,Y
RTS
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
0E
3E
4E
5E
6E
7E
8E
#
1
2
2
2
1
2
1
~
3
4
4
4
4
4
4
A>>1  A
M(Adr)>>1  M(Adr)
M(n+SP)>>1  M(n+SP)
M(n+X)>>1  M(n+X)
M(A+X)>>1  M(A+X)
M(n+Y)>>1  M(n+Y)
M(A+Y)>>1  M(A+Y)
Flaggor
NZVC
Δ Δ Δ Δ
Return from Subroutine
RTN
M(SP)  PC; SP+1  SP
Flaggor
Påverkas ej
Beskrivning Återhopp från en subrutin utförs genom att översta dataordet på
stacken, dvs återhoppsadressen, läses och placeras i PC.
Stackpekaren uppdateras sedan
Detaljer:
Instruktion
RTS
RTS
Adressering
metod
Inherent
Operation
OP # ~
43 1 2 M(SP)  PC
SP+1  SP
Flaggor
NZVC
- - - -
37
FLISP - HANDBOK
RTI
Return from Interrupt
Varianter
RTN
M(SP)  CC; SP+1  SP,
M(SP)  A; SP+1  SP,
M(SP)  X; SP+1  SP,
M(SP)  Y; SP+1  SP,
M(SP)  PC; SP+1  SP
Flaggor
Påverkas ej
Beskrivning Återhopp från undantagshantering utförs genom att samtliga register
återställes från stacken och stackpekaren uppdateras.
Detaljer:
Instruktion
RTI
Variant
RTI
38
Adressering
metod
Inherent
Operation
OP # ~
44 1 6 M(SP)  CC; SP+1  SP,
M(SP)  A; SP+1  SP,
M(SP)  X; SP+1  SP,
M(SP)  Y; SP+1  SP,
M(SP)  PC; SP+1  SP
Flaggor
I NZVC
Δ Δ Δ Δ Δ
DEL I: PROGRAMMERARENS BILD
SBCA
Subtract with borrow Data from register A
A – M – C  A, M = data från minneasadress eller instruktionen själv
och C = carryflaggan (här borrow) i flaggregistret (CCR).
Flaggor
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1 vid subtraktionen.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll vid subtraktionen.
V: Ettställs om overflow vid 2-komplementsrepresentation inträffar vid
subtraktionen.
C: Ettställs om en lånesiffra = 1 uppstår från bitpositionen längst till
vänster vid subtraktionen
Beskrivning Utför åttabitars subtraktion av dataordet i minnet från innehållet i register
A, resultatet placeras i register A. En eventuell lånebit (borrow) som
uppstår vid subtraktionen placeras i C-biten (C-flaggan) i CC-registret.
Det gamla värdet på C-biten i flaggregistret används som lånesiffra i
minst signifikant position (lånesiffra in) vid subtraktionen.
RTN
Detaljer:
Instruktion
SBC
Variant
SBCA #Data
SBCA Adr
SBCA n,SP
SBCA n,X
SBCA n,Y
Adressering
metod
Immediate
Absolute
Indexed
Indexed
Indexed
Operation
OP
93
A3
B3
C3
D3
#
2
2
2
2
2
~
4
5
5
5
5
A–Data-C  A
A–M(Adr)-C  A
A – M(n+SP) – C  A
A – M(n+X) – C  A
A – M(n+Y) – C  A
Flaggor
NZVC
Δ Δ Δ Δ
39
FLISP - HANDBOK
ST
Store register into memory
RM
N: Påverkas ej.
Z: Påverkas ej.
V: Påverkas ej.
C: Påverkas ej
Beskrivning Lagrar angivet registerinnehåll i minnet på den effektiva adressen
RTN
Flaggor
Detaljer:
Instruktion
ST
Variant
STA
Adr
STA
n,SP
STA
n,X
STA
A,X
STA
,X+
STA
,XSTA
,+X
STA
,-X
STA
n,Y
STA
A,Y
STA
,Y+
STA
,YSTA
,+Y
STA
,-Y
STX
Adr
STX
n,SP
STX
n,X
STX
A,X
STX
n,Y
STX
A,Y
STY
Adr
STY
n,SP
STY
n,X
STY
A,X
STY
n,Y
STY
A,Y
STSP Adr
STSP n,SP
STSP n,X
STSP A,X
STSP n,Y
STSP A,Y
40
Adressering
metod
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Indexed
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
E1
E2
E3
E4
E5
E6
E7
E8
E9
EA
EB
EC
ED
EE
30
40
50
60
70
80
31
41
51
60
71
81
32
42
52
62
72
82
#
2
2
2
1
1
1
1
1
2
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
~
3
3
3
3
4
4
4
4
3
3
4
4
4
4
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
A  M(Adr)
A  M(n+SP)
A  M(n+X)
A  M(A+X)
A  M(X), X+1  X
A  M(X), X–1  X
X+1  X, A  M(X)
X–1  X, A  M(X)
A  M(n+Y)
A  M(A+Y)
A  M(Y), Y+1  Y
A  M(Y), Y–1  Y
Y+1  Y, A  M(Y)
X–1  X, A  M(X)
X  M(Adr)
X  M(n+SP)
X  M(n+X)
X  M(A+X)
X  M(n+Y)
X  M(A+Y)
Y  M(Adr)
Y  M(n+SP)
Y  M(n+X)
Y  M(A+X)
Y  M(n+Y)
Y  M(A+Y)
SP  M(Adr)
SP  M(n+SP)
SP  M(n+X)
SP  M(A+X)
SP  M(n+Y)
SP  M(A+Y)
Flaggor
NZVC
- - - -
DEL I: PROGRAMMERARENS BILD
SUBA
Subtract data from register A
A – Opr  A
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1 vid subtraktionen.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll vid subtraktionen.
V: Ettställs om overflow vid 2-komplementsrepresentation inträffar vid
subtraktionen.
C: Ettställs om en lånesiffra = 1 uppstår från bitpositionen längst till
vänster vid subtraktionen.
Beskrivning Utför åttabitars subtraktion av operanden från innehållet i register A.
Resultatet placeras i register A. En eventuell lånebit (borrow) som
uppstår vid subtraktionen placeras i C-biten (C-flaggan) i CC-registret.
C-flaggan representerar i detta fall en lånesiffra vid subtraktion och sätts
till inversen av det värde som kommer ut från ALU:n när subtraktionen A
– M utförs på det traditionella sättet A + M' + 1
RTN
Flaggor
Detaljer:
Instruktion
SUBA
Variant
SUBA #Data
SUBA Adr
SUBA n,SP
SUBA n,X
SUBA n,Y
Adressering
metod
Immediate
Absolute
Indexed
Indexed
Indexed
Operation
OP
94
A4
B4
C4
D4
#
2
2
1
2
2
~
4
5
5
5
5
A–Data  A
A–M(Adr)  A
A – M(n+SP)  A
A – M(n+X)  A
A – M(n+Y)  A
Flaggor
NZVC
Δ Δ Δ Δ
41
FLISP - HANDBOK
TFR
Transfer register to register
Varianter
RTN
Flaggor
Beskrivning
R1  R2
Påverkas ej såvida man inte flyttar ett registerinnehåll till CC-registret
Data kopieras mellan angivna register
Detaljer:
Instruktion
TFR
Variant
TFR A,CC
TFR CC,A
TFR X,Y
TFR Y,X
TFR X,SP
TFR SP,X
TFR Y,SP
TFR SP,Y
TST
Adressering
metod
Inherent
Inherent
Inherent
Inherent
Inherent
Inherent
Inherent
Inherent
OP
18
19
1A
1B
1C
1D
1E
1F
#
1
1
1
1
1
1
1
1
~
2
2
2
2
2
2
2
2
Operation
Flaggor
A  CC
CC  A
XY
YX
X  SP
SP  X
Y  SP
SP  Y
N
Δ
-
Z
Δ
-
V
Δ
-
C
Δ
-
Test
RTN
Flaggor
A – 0 eller M – 0 M = data från minnesadress
N: Ettställs om resultatets teckenbit (bit 7) får värdet 1.
Z: Ettställs om samtliga åtta bitar i resultatet blir noll.
V: Nollställs.
C: Nollställs
Beskrivning Låter datavärdet i A eller M passera ALU:n och sätter flaggvipporna N
och Z så att man kan avgöra datavärdets tecken eller om det är noll.
Endast flaggvipporna påverkas.
Detaljer:
Instruktion
TST
Variant
TSTA
TST
Adr
TST
n,SP
TST
n,X
TST
A,X
TST
n,Y
TST
A,Y
42
Adressering
metod
Inherent
Absolute
Indexed
Indexed
Indexed
Indexed
Indexed
Operation
OP
09
39
49
59
69
79
89
#
1
2
1
1
1
1
1
~
2
3
3
3
3
3
3
A–0
M(Adr)–0
M(n+SP) – 0
M(n+X) – 0
M(A+X) – 0
M(n+Y) – 0
M(A+Y) – 0
Flaggor
NZVC
Δ Δ 0 0
DEL II: MIKROARKITEKTUREN
ALU-funktioner
Flisp ALU (Aritmetic and Logic
Unit) arbetar med 8-bitars
operander (D och E) samt 1-bits
operand Cin.
Resultatet består av 8-bitar (U) och
fyra ”flaggbitar”, N,Z,V och C.
D (d7-d0)
E (e7-e0)
F (f3,f2,f1,f0)
Cin
ALU
N,Z,V,C
U (u7-u0)
U(u7-u0)
D(d7-d0)
E(e7-e0)
Cin
F = (f3, f2,
f1, f0).
N
Z
V
C
Utsignal, 8 bitar, resultatet av ALU:ns operation
Insignal, 8 bitar, operand 1
Insignal, 8 bitar, operand 2
Insignal, 1 bit, operand 3
Bestämmer den operation som utförs av ALU:n
Teckenflaggan är identisk med den mest signifikanta biten
(teckenbiten) av utsignalen U från ALU:n
Nollflaggan, visar om en ALU-operation ger värdet noll
som resultat på U-utgången
Spillflaggan visar om en aritmetisk operation ger
"overflow" enligt reglerna för 2-komplementaritmetik.
V-flaggans värde är 0 vid andra operationer än aritmetiska
Carryflaggan innehåller minnessiffran ut (carry-out) från
den mest signifikanta bitpositionen (längst till vänster) då
en aritmetisk operation utförs av ALU:n.
Vid subtraktion gäller för denna ALU att
C = 1 om lånesiffra (borrow) uppstår och
C = 0 om lånesiffra inte uppstår.
Carryflaggans värde är 0 vid andra operationer än
aritmetiska
43
FLISP - HANDBOK
Funktionstabell för ALU
funktion
f3 f2 f1 f0
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
operation
RTN
U=0
U=FD16
U=FE16
U=FF16
U=E
U=D1k + Cin
U=DE
U=DE
U=DE
U=D + Cin
U=D + FF16
U=D + E + Cin
U=D + E1k + Cin
U=D<<1 (Cin)
U=(Cin) D >> 1
U=(d7) D >> 1
flaggor
N Z V C
0 1 0 0
1 0 0 0
1 0 0 0
1 0 0 0
u7 (1) 0 0
u7 (1) (8) (7)
u7 (1) 0 0
u7 (1) 0 0
u7 (1) 0 0
u7 (1) (2) (3)
u7 (1) (2) (3)
u7 (1) (2) (3)
u7 (1) (2) (3)
u7 (1) (6) (4)
u7 (1) (6) (5)
u7 (1) 0 (5)
Anm:
D1k = 1-komplement D = D'
(1)
Z  u7  u6  u5  u4  u3  u2  u1  u0 ,
dvs. Z=1 då samtliga bitar i register U är 0, Z=0 annars.
(2)
V  (u7  d7  e7 )  (u7  d7  e7 ) ,
dvs. V-flaggan sätts enligt reglerna för tvåkomplementsaritmetik.
(3)
(4)
(5)
(6)
(7)
(8)
44
C = c8, dvs. carry ut från additionen av de mest signifikanta
siffrorna.
C = utskiftad bit, dvs. bit d7 före vänsterskiftet.
C = utskiftad bit, dvs. bit d0 före högerskiftet.
V = Cind7 vid högerskift, d7d6 vid vänsterskift, dvs. sätts till 1
om skiftet föranleder teckenbyte.
C nollställs om D=0, C ettställs annars.
V ettställs om D=(10000000)2, V nollställs annars.
DEL II: MIKROARKITEKTUREN
Dataväg, styrenhet och minne
45
FLISP - HANDBOK
RTN (register transfer notation)
Operationsbeskrivningar
n
Konstant uttryckt i talbas 10
Nr
Konstanten N uttryckt i talbasen r.
EA
Effektiv adress
Opr
Operand, data på effektiv adress
M(Adr)
Minnesinnehåll på adressen ”Adr”
→
Kopiering
Följande symboler är beteckningar som reserverats för FLISP register
A
Ackumulator A
X
Adressregister X
Y
Adressregister Y
CC
Flaggregister (Condition Codes)
PC
Programräknare (Program Counter)
SP
Stackpekare (Stack Pointer)
T
Temporärregister
R
Resultatregister
TA
Temporärt adressregister
Följande symboler är beteckningar som reserverats för villkorsindikatorer (flaggor).
N
Teckenflaggan ("Negative")
Z
Nollflaggan ("Zero")
V
Overflowflaggan
C
Carryflaggan
Operatorer
+
Addition
Subtraktion
Logiskt ”OCH” (AND)

Logiskt ”ELLER” (OR)

Logiskt ”EXKLUSIVT ELLER” (XOR)

Opr<<1 (d) ”Opr” skiftas vänster ett steg. Biten d skiftas in i den minst signifikanta positionen.
(d) 1>>Opr ”Opr” skiftas höger. Biten d skiftas in i den mest signifikanta positionen.
Opr’
Bitvis komplementering av operanden ”Opr”
Relationsoperatorer
=
likhet
!=
olikhet
>
större än
<
mindre än
>=
större än eller likhet
<=
mindre än eller likhet
46
DEL II: MIKROARKITEKTUREN
Signaler i fast styrenhet
Signal
Funktion
Insignaler till styrenheten
CP
”Clock Pulse”, systemklocka
Reset
Asynkron återställningssignal
Interrupt Extern avbrottsignal, samplas vid CP (positiv flank),kontrolleras vid NF
Qstate
Tillstånd, ”state” anges på hexadecimal form med siffrorna 0 t.o.m F, dvs totalt 16
olika tillstånd
Iopcode
Operationskod, anger innehållet i instruktionsregistret avkodat av en ”en av 256väljare”. ”opcode” anges på hexadecimal form, dvs 0 t.o.m FF.
N-flagga N-flaggan, dvs. bit 3 i CC
Z-flagga Z-flaggan, dvs. bit 2 i CC
V-flagga V-flaggan, dvs. bit 1 i CC
C-flagga C-flaggan, dvs. bit 0 i CC
Utsignaler från styrenheten
LDA
”Load register A enable”, Ackumulator
LDI
”Load register I enable”, instruktionsregister
OEA
”Output enable register A”, Ackumulator
LDT
”Load register T enable”, Temporärregister
CLRT
”Clear register T”, Temporärregister
LDR
”Load register R enable”, Resultatregister
OER
”Output enable register R”, Resultatregister
LDCC
”Load register CC enable”, Flaggregister (Condition Codes)
OECC
”Output enable register CC”, Flaggregister (Condition Codes)
LDX
”Load register X enable”, Adressregister
OEX
”Output enable register X”, Flaggregister
LDY
”Load register Y enable”, Adressregister
OEY
”Output enable register Y”, Flaggregister
LDPC
”Load register PC enable”, Programräknare
OEPC
”Output enable register PC”, Programräknare
INCPC
”Increment register PC”, Addera 1 till programräknare
LDSP
”Load register SP enable”, Stackpekare
OESP
”Output enable register SP”, Stackpekare
INCSP
”Increment register PC”, Addera 1 till stackpekare
DECSP
”Decrement register SP”, Subtrahera 1 från stackpekare
LDTA
”Load register TA enable”, Adressberäkningsregister
MR
”Memory Read”, Avkoda adressbuss och klocka ut data från minne/”Input”
MW
”Memory Write”, Avkoda adressbuss och klocka in data till minne/”Output”
f3..f0
Funktionsväljare för ALU (se sidan 44)
g14..g0
Styrsignaler för väljarfunktioner (se sidan 48)
Dessutom genereras internt signalen NF (New Fetch) för att initiera en ny hämtfas.
47
FLISP - HANDBOK
Styrsignaler för väljarfunktioner
Val av flaggsättning i CC
g3 g2 C väljs enligt:
0 0 C tas från ALU:n
0 1 C tas från bit 0 på bussen
1 0 Återställning (nollställning)
av C
1 1 C återförs (ändras ej)
RTN
ALU(C)→C
b0→ C
0→ C
g5 g4
0 0
0 1
1 0
V väljs enligt:
V tas från ALU:n
V tas från bit 1 på bussen
Återställning (nollställning)
av V
1 1 V återförs (ändras ej)
RTN
ALU(V)→V
b1→ V
0→ V
g7 g6 Z väljs enligt:
0 0 Z tas från ALU:n
0 1 Z tas från bit 2 på bussen
1 0 Återställning (nollställning)
av C
1 1 Z återförs (ändras ej)
RTN
ALU(Z)→ Z
b2→ Z
0→ Z
g9 g8
0 0
0 1
1 0
RTN
ALU(N)→N
b3→ N
0→ N
g11
0
0
1
g10
0
1
0
1
1 I återförs (ändras ej)
N väljs enligt:
V tas från ALU:n
N tas från bit 3 på bussen
Återställning (nollställning)
av N
1 1 N återförs (ändras ej)
I väljs enligt:
RTN
I återförs (ändras ej)
I tas från bit 4 på bussen b4→ I
I återställs (ettställs)
1→ I
Val av Carry in till ALU
g1 g0 Signal till Cin
0 0 konstant värde 0
0 1 konstant värde 1
1 0 C-flagga från CC
1 1 C-flagga invers från CC
RTN
0→ Cin
1→ Cin
C→ Cin
C’→ Cin
Val av register för adressering av minne/IO
g14 g13 g12 Register till adressbuss:
0 0 0 Register PC
0 0 1 Register SP (”bas”) och register T (”offset”)
0 1 0 Register Y (”bas”) och register T (”offset”)
0 1 1 Register X (”bas”) och register T (”offset”)
1 0 0 Adressberäkningsregister, ingen offset
1 0 1 Adressberäkningsregister, ingen offset
1 1 0 Adressberäkningsregister, ingen offset
1 1 1 Adressberäkningsregister, ingen offset
48
RTN
M(PC)
M(T+SP)
M(T+Y)
M(T+X)
M(TA)
M(TA)
M(TA)
M(TA)