tutorium tech ii
Post on 15-Jan-2016
49 Views
Preview:
DESCRIPTION
TRANSCRIPT
Daniel BetzWintersemester 2011/12
*Tutorium Tech II
Daniel Betz • daniel.betz@daniel-betz.com
2
*Register C166-Familie
*Insgesamt 16 Register von je 16 Bit (=WORD) Breite
*„Untere“ 8 Register auch als 2 Register mit je 8 Bit (=BYTE) ansprechbar
*Alle Register sind Bit-adressierbar
22.11.2011
Daniel Betz • daniel.betz@daniel-betz.com
3 22.11.2011
*Processor Status Word
*Speichert (u.a.) zusätzliche Ergebnis-Informationen zu ALU-Operationen
*C: Übertrag bei Addition und Subtraktion
*V: Überlauf der Signed-Darstellung
*N: Negatives Ergebnis
*Z: Null-Ergebnis
Daniel Betz • daniel.betz@daniel-betz.com
4 22.11.2011
*Befehle
*Binäre Operationen
*„Überdeckung“ spart Speicher
*Erster Operand wird mit Ergebnis überschrieben
*Außerdem: Explizite Angabe von 3 Operanden
*Eher unwichtig
*Unäre Operationen
*z.B. Addition auf Akkumulator
*Auch nicht so wichtig
Daniel Betz • daniel.betz@daniel-betz.com
5 22.11.2011
*Adressierung
*Direktoperand: Wert steht direkt im Code
*Markiert durch Raute #
*Auch für EQU-Konstanten
*Register-Adressierung: Register-Zugriffe
*Markiert durch Registername, z.B. R1 oder RH2
*Direktadressierung: Variablen-Zugriffe
*Für z.B. mit DW oder DB definierte Variablen
*Unterstützt „Pointer-Arithmetik“
Daniel Betz • daniel.betz@daniel-betz.com
6 22.11.2011
*Adressierung
* Indirekte Adressierung: Pointer
* Für Variablen
*Mit der Raute wird statt dem Wert die Adresse verwendet: #Variable
*Mit eckigen Klammern wird die Adresse „aufgelöst“: [R0]
*Pointer-Arithmetik: Byte-Adressen
* Inkrement/Dekrement ähnlich C: [R0+], [R0-], [+R0], [-R0]
* Aber Achtung: Sprung von Zielregister abhängig – Byte (1) oder Word (2)
* Expliziter Sprung: [R0+#2], [R0-#3]
* Explizite Sprünge immer Byte-weise
Daniel Betz • daniel.betz@daniel-betz.com
7 22.11.2011
*Befehle
*MOV: Daten kopieren
*PUSH/POP: Register(!) auf Stack legen und von Stack laden
*JMP: Springen zu Label
* cc_UC: Unbedingt
* cc_Z/cc_NZ: Wenn PSW.Z 1/0
* cc_V/cc_NV: Wenn PSW.V 1/0
* cc_N/cc_NN: Wenn PSW.N 1/0
* cc_C/cc_NC: Wenn PSW.C 1/0
* cc_EQ/cc_NE: Wenn gleich/ungleich (nach CMP)
*… und viele andere lustige Bedingungen
Daniel Betz • daniel.betz@daniel-betz.com
8 22.11.2011
*Befehle
*CMP: Vergleichen
*CALL: Unterprogramm aufrufen
*Funktioniert im Prinzip wie JMP
*RET: Aus Unterprogramm zurückspringen
*ADD/ADDC: Addition ohne/mit Carry-Bit
*SUB/SUBC: Subtraktion ohne/mit Carry-Bit
*AND/OR/XOR: Bitweise Logik
*MOV, ADD, ADDC, SUB, SUBC und CMP können durch Anhängen von B (z.B. MOVB oder SUBCB) auch erzwungen Byte-weise arbeiten
Daniel Betz • daniel.betz@daniel-betz.com
9 22.11.2011
*Direktiven
*EQU: Konstanten, wie #define
*Alle Vorkommnisse der Konstante werden beim Übersetzen durch den eigentlichen Wert ersetzt
*DB: Erstellt Byte-Variable mit Wert
*DW: Erstellt Word-Variable mit Wert
*DS: Erstellt Variable mit angegebener Größe ohne Wert
Daniel Betz • daniel.betz@daniel-betz.com
10
*AufgabenVHDL, aus Klausuren
22.11.2011
Daniel Betz • daniel.betz@daniel-betz.com
11 22.11.2011
*VHDL-BezeichnerSS08
*_negiertes_Signal
*Gruppe
*Group
*4_gewinnt
*mit_Mühe
Daniel Betz • daniel.betz@daniel-betz.com
12 22.11.2011
*SchieberegisterSS08
*Aufgabe:
*32 Bit breites Register
*Schieben bei steigender Taktflanke
*Laden von D nach Q bei Lade = 1
*Hinweise:
*Schieberichtung ist nach „links“, also von Q(0) in Q(1) usw
*SerIn ist das neue Q(0)
*& ist der Konkatenations-Operator
Shifter
Takt
SerIn
Lade
D(31..0)
Q(31..0)
Daniel Betz • daniel.betz@daniel-betz.com
13 22.11.2011
*Schieber. mit Rückkopplung
SS08
*Gegeben: Schieberegister von eben
*Aufgabe: Linear rückgekoppeltes Schieberegister
*XOR-Modell schreiben
*Skizze der Anordnung
*VHDL-Modell
*Hinweise:
*SerIn = (Q(31) XOR Q(23)) XOR Q(11)
*Ausgabe ist nur das Bit Q(31)
LSFRQ31
Takt
Lade
D(31..0)
Daniel Betz • daniel.betz@daniel-betz.com
14 22.11.2011
*Strukturelles VHDL
WS08/09
* Aufgabe: VHDL-Strukturmodell
* Skizze
* Modell
* Gegeben: Folgende Bausteine
* entity nicht is port (an : IN std_logic; yn : OUT std_logic);end;
* entity und3 is port (au, bu, cu : IN std_logic; yu : OUT std_logic);end;
* entity oder4 is port (ao, bo, co, do : IN std_logic; yo : OUT std_logic);end;
Daniel Betz • daniel.betz@daniel-betz.com
15
*AufgabenAssembler, aus Klausuren
22.11.2011
Daniel Betz • daniel.betz@daniel-betz.com
16 22.11.2011
*Der C166 führt folgendes Programm aus:MOV R1,#0xCAFFADD R1,#13569
*Welchen Wert haben die Flags (C, V, N, Z) nach der Ausführung und warum?
*Flags nach AdditionSS06
Daniel Betz • daniel.betz@daniel-betz.com
17 22.11.2011
*EndiannessWS06/07
*Ein 32-Bit-Prozessor kann seine Byte Order zwischen Little Endian und Big Endian umstellen
*Die Zahl -123.456.789 wird an der Adresse 0x1000 gespeichert
*Gefragt: Das Byte an Adresse 0x1002 für beide Anordnungen
Daniel Betz • daniel.betz@daniel-betz.com
18 22.11.2011
*Flags nach AdditionWS06/07
*Der C166 führt folgendes Programm aus:MOV R1,#50000ADD R1,#0x3CB0
*Welchen Wert haben die Flags (C, V, N, Z) nach der Ausführung und warum?
Daniel Betz • daniel.betz@daniel-betz.com
19 22.11.2011
*Adressierung und Ausführung
SS07
*Gegeben ist folgender ASM-Code für den C166:INDEX EQU 4V1 DW 9, 99, 10, 13, 5V2 DW 0xbebe, 0xadeMOV R0, #INDEXMOV R1,#V2 + 2 ;?1MOV R2,[R0 + #V1] ;?2MOV R3,[R1] ;?3MOV RH3,RL3 ;?4
*Welche Adressierungsarten werden an den markierten Stellen benutzt?
*Angenommen, die Adresse von V1 sei 0x100. Was steht nach Programmende in R0 bis R3?
Daniel Betz • daniel.betz@daniel-betz.com
20 22.11.2011
*FPGA-WissenSS07
*Zum Abschluss noch eine Wissensfrage…
*Das „F“ in FPGA steht für … und das bedeutet: …
Daniel Betz • daniel.betz@daniel-betz.com
21
*Danke für die Aufmerksamkeit
Bis nächste Woche!
22.11.2011
top related