- Maschinensprach- / Assemblerprogrammierung
- Rechnermodell
- Maschinensprache
- Datentypen
- Operandenzugriffe
- Befehle
|
- Assemblersprache
- Assemblerprogrammierung ( Beispiele )
- Wie funktioniert die Hardware eines Rechners
Grundzüge der Rechnerarchitektur
- Wie wird die Hardware eines Rechners benutzt / genutzt
Grundzüge der Maschinensprachprogrammierung
|
=> Basiswissen auch für Problembereich der Systemsoftware
Prozessor M 68000
seit 1979 auf dem Markt; einer der ersten 16 / 32 bit - µ - Prozessoren
inzwischen: |
|
68010
68020
68030
68040
|
|
=> echte 32 bit Breite Speicherverwaltung
- höhere Taktfrequenz
- etwas ausgebauter Befehlssatz
|
Grobe Daten:
- Chipfläche 6,2 * 7,1 mm2 24 Adreßbits
- 64 Anschlußbeine ( 2* ) 16 Datenbits
intern 32 - bit - Register
- Für Busarchitektur Arbeitsspeicher in
Wort / Byte - Struktur
Adresse identifiziert Byte
oder
Folge zweier Byte ( Wort )
falls Adresse gerade
- Befehlslänge: 16, 32, 48, 64 bit
- Register: 8 Daten, 8 Adreßregister
- Unterbrechungsfähigkeiten
- 4 - 12,5 MHz Taktfrequenz
- 2- Adreßbefehle: Register, Speicher
Rechner mit M 68000 Prozessor:
Grundarchitektur
( Bild siehe Seite 91 im Krumm-Skript )
- Busarchitektur
- Arbeitsspeicher:
16 Datenbits ( 8 Datenbits )
24 Adreßbits ( 224 Byte )
- Buskontrolle auf Prozessorchip
- Geräteanschaltungen ( wie Arbeitsspeicher ) an Bus
- Bus ( 2 Varianten unterstützt ):
- schneller asynchroner Bus
für 68000 - Peripherie
- aus Kompatibilitätsgründen synchroner
8 - bit Bus des 68000 zusätzlich
|
Die Architektur Prozessor als Hardwarebaustein:
( Bild siehe Seite 92 im Krumm-Skript )
- Stromversorgung
- Takt
- Unterbrechungen
- Bus => Adreß - und Datenleitungen
- Buskontrolle
- Speicherzugriffsfunktionscode
Funktionscode:
- Befehl holen: System / Nutzer
- Daten: System / Nutzer
- Unterbrechungszyklus aktiv
|
}
|
für Speicherverwaltung
|
Unterbrechungen:
- Rücksetzen
- Busfehler
- IPL0, IPL1, IPL2
- HALT
Meldungen:
Adressen:
- A1, ... , A23
- A0: LDS, UDS *1
Speichersteuerung:
- LDS: D0 - D7 relevant *1
- UDS: D8 - D15 relevant *1
bzw. 16 bit - Transfer
Datenleitungen:
- D0, ... , D15 Buskontrolle
- BR: Bus Request <=
- BG: Bus Granted =>
- BGA: Bus Grant Acknowledge <=
Synchroner Busbetrieb:
- => E: Bustakt
- => VMA: Angelegte Adresse gültig
- VPA: Bus ist freigegeben
( siehe auch Krumm-Skript Seite 92 )
Asynchroner Busbetrieb:
- R / W: Lese - oder Schreibzyklus
- => AS sowie <= DTACK: Handshake - Synchronisation
( siehe auch Krumm-Skript Seite 92 )
Maschinensprache - M 68000:
 Abb. 4-23: Zugriff auf den Bus
- Maschinenbefehle
- Maschinenzustände
- Prozessorregister
- Arbeitsspeicher
- Gerätesteuerungsregister
( - Hilfsregister )
- Befehlsausführung:
Befehlstyp * Argumente * Zustand vorher => Zustand
nachher
Prozessorregister des M 68000:
( Bilder siehe Seite 93, 94 im Krumm-Skript )
Befehlsausführung: Zustandsänderung
 Abb. 4-24: Befehlsausführung
Datentypen des M 68000:
- Grundlegende Typen: Bit, Bitmuster
- Bit: einzelne Bits in Speicher oder Register
- Byte ( .B ): Byte in Arbeitsspeicher / Byte in Register
- Wort ( .W ): Folge 2er Bytes im Arbeitsspeicher oder
Register
- Langwort ( .L ): Folge von 4 Bytes im Arbeitsspeicher
oder Register
Bit, Bitmuster - Operationen
Speicher:
 Abb. 4-25: Ablage im Speicher
Register:
 Abb. 4-26: Ablage im Register
Datentypen des M 68000:
Steuerwerk:
- Grundlegende Typen: Bit, Bitmuster
- Zahlen:
- Betragszahlen:
|
|
8-
16-
32- |
bit Länge |
- Ganzzahlen:
|
|
8-
16-
32- |
bit Länge |
- BCD: ( Addition, Negation, Subtraktion )
Operationen: +, -, * (-1), *, div/mod
- Gleitkommazahlen:
- reservierter Opcode
- Zusatzprozessor aus 68000 - Chipfamilie |
- Sehr lange Zahlen:
z.B. 128 bit Betragszahlen
- über Folge von Befehlen ( z.B. Addiere mit
Übertrag ) |
Operandenzugriffsarten des M68000:
( Bild siehe Seite 95 im Krumm-Skript )
AS 68000 Assemblersprache:
- Konstanten:
=> Bitmuster:
Dezimalzahlen
Hexadezimalzahlen
Zeichenketten ( ISO - 7- bit - Code, US-ASCII )
Ausdrucksberechnung zur Übersetzungszeit (, ),
+, -, *, /
Literale ( Bezeichner, Marken )
Absolute Werte <=> Adressen:
ABSLABEL EQU 100
ADRLABEL
gemischte Ausdrücke:
ABSLABEL * 2
ADRLABEL + ABSLABEL
ADRLABEL - ADRLABEL2
Verboten:
ADRLABEL * 5
ADRLABEL + ADRLABEL
ADRLABEL * ADRLABEL |
|
.B, .W, .L, ( 8, 16, 32 bit )
100, 18, -2345, ...
$AFFE, $0001, ...
`A`, `AB`, ...
( 1000 + 3 * 16 ) * 4
Vereinbarung:
a) LABEL1 <= Speicheradresse
b) LABEL2 EQU Ausdruck
Wert: 100
Wert: ORG + Distanz
2 * 100 = 200
ORG + Distanz + 100
ORG + D1 - ORG - D2
Unsinn:
5 * ORG + 5 * Distanz
ORG + Distanz + ORG + Distanz
ORG2
+ Distanz2 |
- Pseudobefehle:
- Programmkopf:
ORG Adresse
RORG Adresse
- Markenvereinbarung:
LABEL
LABEL EQU Ausdruck LABEL 2
- Speicher reservieren:
DS.L 100
DC.B „A„ |
|
Speicheradresse des Programmbeginns
Code verschieblich:
aus
( Label ) wird Label„ ( PC )
keine PC - relativen
Speicherbefehle verfügbar
Speicher reservieren 400 Bytes
Speicher reservieren „A„ und belegen |
AS 68000 - Befehle = M 68000 Maschinenbefehle:
- Transportbefehle ( Bild siehe Krumm-Skript Seite 98 oben )
- Arithmetische Befehle ( Bild siehe Krumm-Skript Seite 98 unten )
- Vergleichsbefehle ( Bild siehe Krumm-Skript Seite 99 oben )
- Bitmanipulation ( Bild siehe Krumm-Skript Seite 99 mitte )
- Sprungbefehle ( Bild siehe Krumm-Skript Seite 99 unten )
Unterprogrammentwurf:
 4-27: Unterprogrammentwurf
Unterprogrammschachtelung:
rekursive Unterprogramme
durch Speicherung der Rücksprungadresse im Keller beliebig möglich
( wobei beliebig heißt: solange genügend Platz im Keller vorhanden ist)
Programmunterbrechung (Interrupt):
 Abb. 4-28: Programmunterbrechung (Interrupt)
Um nach Rückkehr von Interrupt-routine das Programm
-so als wäre nichts gewesen- fortsetzen zu können, müssen:
- PC und CCR durch den Prozessor gerettet werden
- zu Beginn der ITR-Routine programmgesteuert die übrigen Register gerettet werden
- vor Rücksprung aus ITR-Routine die übrigen Register wiederhergestellt werden
- der Rücksprung durch RTR-Befehl erfolgen:
PC, CCR wiederherstellen
Dekrementiere und Springe
MOVE.W #13, D1 D1:=13
MOVE.W #4, D2 D1:=4
SKOPF m:
SUB.W X, D1 D1:=D1-X
DBLT D2, SKOPF if D1>= 0 then
(dekrementiere bis <0) d2:=d2-1
(Dekrement Bit until Lower Than 0)
if D2 <> -1 then
goto m;
Beispiel für x=5:
 Abb. 4-29: Beispiel x=5
Beispiel für x=5:
 Abb. 4-30: Beispiel x=1
Maschinensprache M68000
die Sonderbefehle:
-NOP No OPeration
-Softwareinterrupts:
 Abb. 4-31: Beispiel eines Softwareinterrupts
wie Unterprogrammaufruf, aber
-Programm i.d.R. im Nutzermodus
-ITR-Routine im Systemmodus
-> Identitätswechsel
Anwendung:
Supervisorcall
Betriebssystemaufruf
Aufruf:
TRAP #NR Rufe ITR-Routine NR
TRAPV Falls V in CCR: rufe ITR-Routineüberlauf
CHK Op1, Dn Falls Dn außerhalb 0..(Op1) rufe ITR-Routine CHK
Die letzten beiden Aufrufe dienen dem :
Programmlaufbesonderheiten-Test und der Maßnahmen-Einleitung
Prozeduren => Unterprogramm, Keller
Beispiel:
procedure Summe (I,J : integer):integer;
var H:integer;
begin
H:=I+J;
H:=H+H;
return H;
end Summe;
=>
Hauptprogramm:
* D1 enthalte X,D2,Y
* es soll Summe gerufen werden
SUBA.L #2, A7 Platz für Ergebnis
MOVE.W D1, -(A7) Parameter I
MOVE.W D2, -(A7) Parameter J
JSR Summe UP-Aufruf
ADDA.L #4, A7 Parameter entfernen
MOVE.W (A7)+, D1 Ergebnis->D1
Unterprogramm:
H EQU -2
J EQU +8
I EQU +10
result EQU +12
Distanzen der formalen Parameter und Hilfsvariablen in Schachtel
Summe:
LINK A6, #-2
MOVE.W J(A6), D1
ADD.W I(A6),D1
MOVE.W D1, H(A6)
ADD.W D1, D1
MOVE.W D1, H(A6)
MOVE.W D1, result(A6)
UNLK A6
RTS
 Abb. 4-32: Beispiel eines Unterprogramms, Keller
AS-68000-Beispiele:
for i:=1 downto 1 do m[i]:=0;
MOVE.W N,D0
LEA M,A0
BLT M2
M1
MOVE.W D0, D1
ASL.W #1, D1
CLR.W 0(A0, D1.W)
SUBQ.W #1, D0
BGT M1
M2 ...
N DC.W 27
M DS.W 28
MOVE.W N,D0
LEA M,A0
ADDA #2, A0
BSR CLEAR
...
N DC.W 27
M DS.W 28
...
* UPS CLEAR Speicherbereich mit Nullen belegen
*
* Ein:
* D0 Länge in Wörtern D0>0
* A0 Anfangsadresse
* Aus:
* Mem [A0,...,A0+2*D0+1]=0,...,0
* Verändert: CCR, A0, D0
CLEAR
SUB.W #1,D0
M1
CLR.W (A0)+
DBF D0, M1
RTS
Peripheriegeräte:
 Abb. 4-33: Anschluß von Peripheriegeräten
E / A - Geräte:
- Standard E/A - Geräte:
=> Ausgabe
<= Eingabe
<=> interaktiv / Dialog
- Texte, Textzeichen
- Graphiken
- Graubilder / Farbbilder
- Bilder / bewegt
- Stimme / akustisch
- Multimedia / ( Verbund)
- Speichergeräte:
- Schreib / Lesespeicher
- Einmalchreibspeicher
- wahlfreier Zugriff
- segmentieller Zugriff
- dateiorientiert
- Sonderperipherie:
- digitale / analoge Ein- / Ausgabe
|
|
Kommunikation: Mensch - Rechner Bildschirm
Tastatur
Drucker, Plotter
Maus, Digitalisierer
Filmbelichter
Mikrophon
Lautsprecher
Videokamera
Kommunikation: Rechner - ( derselbe ) Rechner in der
Zeit
magnetische Schichten ( Platte, Floppy, Band )
optischer Speicher
Magnetblasen,
Ladungsverschiebung ( CCD )
Kommunikation: technischer Prozeß --- Rechner
|
 Abb. 4-34: Peripheriesteuerung
- Speicherhierarchie:
teuer <- günstig
schnell -> langsam
Prozessor - Cache - Arbeitsspeicher
Register
- dauerhafter Speicher ( persistent )
|
Peripheriegeräte:
Trends der Mensch-/ Maschine - Kommunikation:
früher: Orientierung am Rechner
- Rechnerkosten überwiegen
Personalkosten
- Rechner nur belasten mit tatsächlicher Verarbeitung
- Datenaufbereitung durch Mensch
schwierige Steuersprachen, komplexes
Operating,
"arme" Peripherie, Batch - Betrieb
Trend: Orientierung am Menschen
- Personalkosten überwiegen
Rechnerkosten
- Rechner unterstützen bei Ein- / Ausgabe und Dialog
- Daten möglichst früh an Rechner
graphische objektorientierte
Oberflächen
Operating an Anwenderparadigmen orientiert,
interaktiver Betrieb / Dialogbetrieb
Teure Schwelle ( Mensch - Rechner ) möglichst selten
überwinden !
- Datenhaltung im Rechner (
Speicherperipherie ) ausgeprägt,
Wiederverwendung früher eingegebener Daten
Trend: auch Langzeitarchivierung per Rechner
- Persönliche Rechner als Zugang zum
Gesamtrechensystem:
Mensch <=> Mensch ==> Mensch <=> Rechner <=>
Rechner <=> Mensch
z. B. : papierloses Büro
- Daten unmittelbar am Ort der Entstehung aufnehmen:
Betriebsdatenerfassungsgeräte
- Rechnernetze / Verteilte Systeme
integrierte, verteilte Mensch-/
Rechner- Systeme
( Vorstufen: BTX, E-Mail, DTP )
|