Mikrocomputertechnik
Thema:
- Prinzipielle Adressierungsarten, Beispiele 8051, ARM
- Befehlssatz
MU0-2 Operation ADD
Inputs Outputs Funktion
ALU Function
Instruction
DOUToe
DOUTie
Opcode
MEMrq
Adress
ACCoe
DINoe
/Reset
ACCie
DINie
PCoe
SPoe
RnW
PCie
IRoe
SPie
step
step
IRie
N
Z
1 1 x x 2 1 0 0 0 0 1 0 0 0 0 1 0 0 x 1 1 Din = [IR]
ADD S 0010
1 2 x x 0 x 1 1 0 0 0 0 0 0 1 0 0 0 A+B,S 0 1 ACC = ACC + Din
Folie 7 22.09.2023, Prof. L. M. Comella, übernommen und modifiziert aus Vorlagen von Prof. J. Wietzke
ADD Befehl in XC888
Folie 8 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Adressierungsarten
MOV A,#data Move immediate to A
Folie 9 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Prof. G. Raffius
Adressierungsarten
MOV A,#data Move immediate to A
Folie 10 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Prof. G. Raffius
Adressierungsarten
Direkte Adressierung
HC 888 MOV A, 1000
MOV A, Label
A= [1000]
A= [Label]
MU0 LDA S
Intel mov ax, hugo
...
...
hugo dw 1234 // intel 16 bit
Folie 11 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Prof. G.
Raffius
Adressierungsarten
Folie 12 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Prof. G.
Raffius
Adressierungsarten
MOV Rn,A Move A to register
ADD A,R0 Acc = Acc+R0
Folie 13 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Prof. G.
Raffius
Adressierungsarten
Folie 14 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Prof. G.
Raffius
Adressierungsarten
HC 888 MOV A,@Ri Move indirect memory to A
“C” int* Roph
A = *Roph
ARM LDR r1, [r0]
Intel MOV ax, [bx]
Folie 15 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Prof. G.
Raffius
Adressierungsarten
Folie 16 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Prof. G.
Raffius
Adressierungsarten
HC888 MOVC A,@A +DPTR Move code byte relative DPTR to A
MOVC A,@A +PC Move code byte relative PC to A
ARM LDR r0,[r1+#4]
“c” g = x[3]
Folie 17 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Prof. G.
Raffius
Befehlssatz XC 8xx
Thema:
Befehlssatz
20.08.2014, Prof. J. Wietzke
Folie 18
Der Befehlssatz des 8051
➢ Alle Derivate der 8051-Familie besitzen die gleichen Maschinenbefehle und somit
den gleichen Befehlssatz.
➢ Besonderheit beim 8051-Befehlssatz: Bei Befehlen mit Quell- und Zielangabe
wird immer erst das Ziel und danach die Quelle angeführt.
Opcode Ziel Quelle
➢ Die Befehle können z.B. nach der Art ihrer Funktion gegliedert werden in…
➢ Transportbefehle,
➢ Arithmetische und logische Befehle,
➢ Sprungbefehle und
➢ Befehle für Unterprogramme.
02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Folie 19
Befehlssatz XC 8xx
Mnemonic Description Hex Code Bytes Cycles
ARITHMETIC
ADD A,Rn Add register to A 28-2F 1 1
ADD A,direct Add direct byte to A 25 2 1
ADD A,@Ri Add indirect memory to A 26-27 1 1
ADD A,#data Add immediate to A 24 2 1
ADDC A,Rn Add register to A with carry 38-3F 1 1
ADDC A,direct Add direct byte to A with carry 35 2 1
ADDC A,@Ri Add indirect mem to A with carry 36-37 1 1
ADDC A,#data Add immediate to A with carry 34 2 1
SUBB A,Rn Subtract register from A with borrow 98-9F 1 1
SUBB A,direct Subtract direct byte from A with borrow 95 2 1
SUBB A,@Ri Subtract indirect mem. from A with borrow 96-97 1 1
SUBB A,#data Subtract immediate from A with borrow 94 2 1
INC A Increment A 04 1 1
INC Rn Increment register 08-0F 1 1
INC direct Increment direct byte 05 2 1
INC @Ri Increment indirect memory 06-07 1 1
DEC A Decrement A 14 1 1
DEC Rn Decrement register 18-1F 1 1
DEC direct Decrement direct byte 15 2 1
DEC @Ri Decrement indirect memory 16-17 1 1
INC DPTR Increment data pointer A3 1 2
MUL AB Multiply A by B A4 1 4
DIV AB Divide A by B 84 1 4
DA A Decimal Adjust A D4 1 1
Folie 20 20.08.2014, Prof. J. Wietzke, All mnemonics copyrighted: Intel Corporation 1980
Befehlssatz XC 8xx
Mnemonic Description Hex Code Bytes Cycles
LOGICAL
ANL A,Rn AND register to A 58-5F 1 1
ANL A,direct AND direct byte to A 55 2 1
ANL A,@Ri AND indirect memory to A 56-57 1 1
ANL A,#data AND immediate to A 54 2 1
ANL direct,A AND A to direct byte 52 2 1
ANL direct,#data AND immediate to direct byte 53 3 2
ORL A,Rn OR register to A 48-4F 1 1
ORL A,direct OR direct byte to A 45 2 1
ORL A,@Ri OR indirect memory to A 46-47 1 1
ORL A,#data OR immediate to A 44 2 1
ORL direct,A OR A to direct byte 42 2 1
ORL direct,#data OR immediate to direct byte 43 3 2
XRL A,Rn Exclusive-OR register to A 68-6F 1 1
XRL A,direct Exclusive-OR direct byte to A 65 2 1
XRL A,@Ri Exclusive-OR indirect memory to A 66-67 1 1
XRL A,#data Exclusive-OR immediate to A 64 2 1
XRL direct,A Exclusive-OR A to direct byte 62 2 1
XRL direct,#data Exclusive-OR immediate to direct Byte 63 3 2
CLR A Clear A E4 1 1
CPL A Complement A F4 1 1
SWAP A Swap Nibbles of A C4 1 1
RL A Rotate A left 23 1 1
RLC A Rotate A left through carry 33 1 1
RR A Rotate A right 03 1 1
RRC A Rotate A right through carry 13 1 1
Folie 21 20.08.2014, Prof. J. Wietzke, All mnemonics copyrighted: Intel Corporation 1980
Befehlssatz XC 8xx
Mnemonic Description Hex Code Bytes Cycles
DATA TRANSFER
MOV A,Rn Move register to A E8-EF 1 1
MOV A,direct Move direct byte to A E5 2 1
MOV A,@Ri Move indirect memory to A E6-E7 1 1
MOV A,#data Move immediate to A 74 2 1
MOV Rn,A Move A to register F8-FF 1 1
MOV Rn,direct Move direct byte to register A8-AF 2 2
MOV Rn,#data Move immediate to register 78-7F 2 1
MOV direct,A Move A to direct byte F5 2 1
MOV direct,Rn Move register to direct byte 88-8F 2 2
MOV direct,direct Move direct byte to direct byte 85 3 2
MOV direct,@Ri Move indirect memory to direct byte 86-87 2 2
MOV direct,#data Move immediate to direct byte 75 3 2
MOV @Ri,A Move A to indirect memory F6-F7 1 1
MOV @Ri,direct Move direct byte to indirect memory A6-A7 2 2
MOV @Ri,#data Move immediate to indirect memory 76-77 2 1
MOV DPTR, #data16 Move immediate to data pointer 90 3 2
MOVC A,@A +DPTR Move code byte relative DPTR to A 93 1 2
MOVC A,@A+PC Move code byte relative PC to A 83 1 2
MOVX A,@Ri Move external data (A8) to A E2-E3 1 2
MOVX A,@DPTR Move external data (A16) to A E0 1 2
MOVX @Ri,A Move A to external data (A8) F2-F3 1 2
MOVX @DPTR,A Move A to external data (A16) F0 1 2
PUSH direct Push direct byte onto stack C0 2 2
POP direct Pop direct byte from stack D0 2 2
XCH A,Rn Exchange A and register C8-CF 1 1
XCH A,direct Exchange A and direct byte C5 2 1
XCH A,@Ri Exchange A and indirect memory C6-C7 1 1
Folie 22
XCHD A,@Ri Exchange A and indirect memory nibble D6-D7 1 1
20.08.2014, Prof. J. Wietzke, All mnemonics copyrighted: Intel Corporation 1980
Übung
Wie funktionieren die folgende Befehle: Memory
Sp -
>
[]
-
ACC
-
MOV direct, … SP = ACC [A]
MOV @Ri,…
XCHD A,@Ri
02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Folie 23
Befehlssatz XC 8xx
Mnemonic Description Hex Code Bytes Cycles
BOOLEAN
CLR C Clear carry C3 1 1
CLR bit Clear direct bit C2 2 1
SET B C Set carry D3 1 1
SET bit Set direct bit D2 2 1
CPL C Complement carry B3 1 1
CPL bit Complement direct bit B2 2 1
ANL C,bit AND direct bit to carry 82 2 2
ANL C,/bit AND direct bit inverse to carry B0 2 2
ORL C,bit OR direct bit to carry 72 2 2
ORL C,/bit OR direct bit inverse to carry A0 2 2
MOV C,bit Move direct bit to carry A2 2 1
MOV bit,C Move carry to direct bit 92 2 2
Folie 25 20.08.2014, Prof. J. Wietzke, All mnemonics copyrighted: Intel Corporation 1980
Befehlssatz XC 8xx
Mnemonic Description Hex Code Bytes Cycles
BRANCHING
ACALL addr11 Absolute call within current 2 K 11-F1 2 2
LCALL addr16 Long call to addr16 12 3 2
RET Return from subroutine 22 1 2
RETI Return from interrupt routine 32 1 2
AJMP addr11 Absolute jump within current 2 K 01-E1 2 2
LJMP addr16 Long jump unconditional 02 3 2
SJMP rel Short jump to relative address 80 2 2
JC rel Jump relative on carry = 1 40 2 2
JNC rel Jump relative on carry = 0 50 2 2
JB bit,rel Jump relative on direct bit = 1 20 3 2
JNB bit,rel Jump relative on direct bit = 0 30 3 2
JBC bit,rel Jump relative and clear on direct bit = 1 10 3 2
JMP @A+DPTR Jump indirect relative DPTR 73 1 2
JZ rel Jump relative on accumulator = 0 60 2 2
JNZ rel Jump relative on accumulator = 1 70 2 2
CJNE A,direct,rel Compare direct mem to acc, jump rel. if not equal B5 3 2
CJNE A,#data,rel Compare immediate to acc, jump rel. if not equal B4 3 2
CJNE Rn,#data,rel Comp. immediate to register, jump rel. if not equal B8-BF 3 2
CJNE @Ri,#data,rel Comp. immed. to indirect mem, jump rel. if not equal B6-B7 3 2
DJNZ Rn,rel Decrement register and jump relative if not zero D8-DF 2 2
DJNZ direct,rel Decrement direct mem and jump relative if not zero D5 3 2
20.08.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Folie 26
Übung
Wie funktionieren die folgende Befehle:
CJNE A,direct,rel
DJNZ Rn,rel For loop
↑
--
Anzahl
02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Folie 27
Litterature
XC800 Manual
8051instruction set
Mikroprozessortechnik, Wüst,
VIEWEG+TEUBNER
02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Folie 29
Thema:
Rechnerarchitektur, Fortsetzung
Folie 30 02.09.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Architekturen
➢ Harvard-Architektur
➢ von Neumann-Architektur
20.08.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Folie 31
Von-Neumann-Architektur
Folie 32 20.08.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-
Ing.(FH) Ralf Hanke
Von-Neumann-Architektur
CS = Programm
DS = Globale Date
SS = Lokale Variablen, Parameter
Rücksprungadresse
Heap = Dynamik Variablen Stack Heap
Heap SS
DS DS
CS CS
Folie 33 20.08.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-
Ing.(FH) Ralf Hanke
Von-Neumann-Architektur
Der Von-Neumann-Flaschenhals
In den Anfängen der Computertechnik stellte die CPU die langsamste Einheit eines
Rechners dar. Hierdurch fand die Bereitstellung der Daten schneller statt, als die
Verarbeitung dieser. Heutige CPUs sind jedoch um einiges schneller als die
verwendeten Busse bzw. eingesetzten Speicherbausteine. Somit nimmt die
Datenbereitstellung heute mehr Zeit in Anspruch, als die eigentliche
Datenverarbeitung.
Speicher und Bussystem bilden den sogenannten Von-Neumann-Flaschenhals.
Verbesserungen werden durch Cache-Speicher, Pipelining und weitere interne
Bussysteme erreicht.
20.08.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Folie 34
Harvard-Architektur
Die Harvard-Architektur ist eine Weiterentwicklung der Von-Neumann-Architektur.
Bei dieser Modifikation der Von-Neumann-Architektur sind Programm- und
Datenspeicher physisch von einander getrennt. Programm- und Datenspeicher
werden hierbei über getrennte Busse angesteuert. Hierdurch ist eine parallele
(gleichzeitige) Verarbeitung von Befehlen und Daten möglich.
Durch die Trennung der Speicher wird
Prozessor außerdem das Überschreiben von
Programmcode bei fehlerhafter Software
verhindert.
Steuerwerk Rechenwerk
Ein weiterer Vorteil liegt in der
Unabhängigkeit von Datenwort- und
Befehlswortbreite (geringerer
Bussystem Speicherbedarf für Programmcode).
Bei den heutigen Prozessoren wird meist
eine Mischform aus Von-Neumann- und
Ein-/ Harvard-Architektur verwendet. Intern
Programm Daten
Ausgabe-
Speicher Speicher
(innerhalb des Prozessorchips) sind
system Programm- und Datenspeicher getrennt.
Extern liegen Programm und Daten jedoch
in einem gemeinsamen Speicher.
20.08.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Folie 35
Harvard-Architektur
ROM, Flash
RAM
CS DS
SS
Bussystem gleichzeitig Zugriff
Befehl fetch
Data fetch 1 Zyklus
20.08.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Folie 36
Harvard-Architektur
ROM, Flash
XRAM RAM
CS HS DS
SS
Keil: #include mempool Heap => XRAM
20.08.2014, Prof. J. Wietzke, übernommen und modifiziert aus Vorlagen von Dipl.-Ing.(FH) Ralf Hanke
Folie 37