Mikrocomputertechnik mit dem Prozessor 6809 und den Prozessoren 6800 und 6802: Maschinenorientierte Programmierung. Grundlagen, Schaltungstechnik und Anwendungen 9783486787269, 9783486231038


204 62 26MB

German Pages 386 [392] Year 1994

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
Inhaltsverzeichnis
Vorwort
1. Einführung
2. Grundlagen
3. Hardware
4. Einführung in die maschinenorientierte Programmierung
5. Parallele Datenübertragung
6. Serielle Datenübertragung
7. Datenerfassung und Datenverarbeitung
8. Lösungen der Übungsaufgaben
9. Ergänzende und weiterführende Literatur
10. Anhang
11. Register
Recommend Papers

Mikrocomputertechnik mit dem Prozessor 6809 und den Prozessoren 6800 und 6802: Maschinenorientierte Programmierung. Grundlagen, Schaltungstechnik und Anwendungen
 9783486787269, 9783486231038

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

Mikrocomputertechnik mit dem Prozessor 6809 und den Prozessoren 6800 und 6802 Maschinenorientierte Programmierung Grundlagen, Schaltungstechnik und Anwendungen von Prof. Dipl.-Ing. Günter Schmitt 3. Auflage Mit 374 Bildern und 25 Tabellen

R. Oldenbourg Verlag München Wien 1994

Die Deutsche Bibliothek — CIP-Einheitsaufnahme Schmitt, Günter: Mikrocomputertechnik mit dem Prozessor 6809 un den Prozessoren 6800 und 6802 : maschinenorientierte Programmierung ¡Grundlagen - Schaltungstechnik Anwendungen ; mit 25 Tabellen / von Günter Schmitt. - 3. Aufl. - München ;Wien : Oldenbourg, 1994 ISBN 3-486-23103-0

© 1994 R. Oldenbourg Verlag GmbH, München Nachdruck der 2. Auflage Das Werk außerhalb lässig und filmungen

einschließlich aller Abbildungen ist urheberrechtlich geschützt. Jede Verwertung der Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzustrafbar. Das gilt insbesondere fiir Vervielfältigungen, Übersetzungen, Mikroverund die Einspeicherung und Bearbeitung in elektronischen Systemen.

Gesamtherstellung: R. Oldenbourg Graphische Betriebe GmbH, München

ISBN 3-486-23103-0

Inhaltsverzeichnis Vorwort

5

1

Einführung

7

1.1 1.2 1.3

Anwendung von Mikrorechnern Aufbau und Bauformen von Mikrorechnern Die Programmierung von Mikrorechnern

7 8 10

2

Grundlagen

13

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8

Darstellung der Daten im Mikrorechner Zahlensysteme und Umrechnungsverfahren Rechenschaltungen Speicherschaltungen Aktive Zustände von Steuersignalen Speicherorganisation Befehle und Programme Übungen zum Abschnitt Grundlagen

13 15 19 23 29 34 39 47

3

Hardware

50

3.1 3.1.1 3.1.2 3.1.3

Halbleitertechnik Die MOS-Technik Die CMOS-Technik Die bipolare Technik

50 51 52 54

3.2 3.2.1 3.2.2 3.2.3

Schaltungstechnik Eingangsschaltungen Ausgangsschaltungen Zusammenschaltung der Bausteine

56 56 58 64

3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7

Der Mikroprozessor 6809 Die Familien der 68xx- und 65xx-Bausteine Aufbau und Anschlußbelegung des Prozessors 6809 Der Zugriff auf Speicher-und Peripheriebausteine Die Betriebszustände Reset und Interrupt Die Betrieb szustände Halten und Warten Mikrorechnerschaltung mit dem Prozessor 6809 Die Prozessoren 6800 und 6802

71 71 72 75 84 90 93 94

3.4 3.4.1 3.4.2

Speicherbausteine Aufbau und Wirkungsweise Der Festwertspeicher (EPROM) 2716

98 98 102

2

Inhaltsverzeichnis

3.4.3 3.4.4 3.4.5

Der statische Schreib/Lesespeicher (RAM) 2016 Dynamische Schreib/Lesespeicher (DRAM) Gemeinsame Anschlußbelegung verschiedener Speichertypen

104 106 110

3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6

Peripheriebausteine Aufbau und Wirkungsweise TTL-Bausteine zur Ein/Ausgabe Parallelschnittstellen Serienschnittstellen Zeitgeber (Timer) Digital/Analog-und Analog/Digitalwandler

111 111 114 115 119 121 122

3.6 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6

Bausteinauswahl und Adreßdecodierung Adreßdecoder Die Teildecodierung Die Volldecodierung Die Lineare Auswahl Die Decodierung eines Peripheriebereiches Speicherumschaltung und Speichererweiterung

125 125 128 130 135 136 138

3.7

Der Entwurf eines Kleinsystems

143

3.8

Der Entwurf eines Übungssystems

148

3.9 3.9.1 3.9.2 3.9.3 3.9.4

Der Entwurf eines Bauplattensystems Der Systembus Die 6809-Prozessorkarte Die Speicherkarten Die Peripheriekarten

154 154 156 158 160

4

Einführung in die maschinenorientierte Programmierung . . . 163

4.1

Die Hardware des Übungsrechners

163

4.2

Assemblerprogrammierung

165

4.3 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7

Einfache Datenübertragung Datenübertragung zwischen den Registern des Prozessors Das Laden von Konstanten Die absolute (erweiterte) Adressierung Die direkte (direct) Adressierung Assembleranweisungen Einfache Datenübertragung mit den Prozessoren 6800 und 6802 . . . . Übungen zum Abschnitt Datenübertragung

170 172 175 178 182 186 189 190

4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5

Sprünge und Verzweigungen Unbedingte Sprung-und Verzweigungsbefehle Bedingte Verzweigungsbefehle Der Aufruf von Unterprogrammen Sprünge und Verzweigungen der Prozessoren 6800 und 6802 Übungen zum Abschnitt über Sprünge und Verzweigungen

191 192 197 200 203 203

1

ZN427

18

00 - >

GND

1

A/D

?4

CTS < -

2

D1 - >

- > RxD

2

23

ÜCD < -

D2 - >

- > RxC

3

22

DO < - >

D3 - >

- > TxC

4

21

D1 < - >

D4 - >

< - RTS

5

20

D2 < - >

- > CLK

3

- > SC

4

17 16 15

Rext

5

14

6850

6

13

D5 - >

< - TxD

6

19

D3 < - >

in

7

12

D6 - >

< - IRQ

7

18

D4 < - >

Vref out

8

11

D7 - >

- > CSO

8

17

D5 < - >

GND

9

10

+5V

- > CS2

9

1fi

D6 < - > D7 < - >

Vref

- > CS1

10

15

- > RS

11

14

E < -

+5V

12

13

R/W < -

- > A7

1

2716

24

+5 V

- > A7

1

2016

¿4

+5V

- > A6

2

EPROM

23

A8 < -

- > A6

2

RAM

23

A8 < A9 < -

- > A5

3

22

A9 < -

- > A5

3

22

- > A4

4

21

Vpp

- > A4

4

21

WE < -

- > A3

5

20

OE < -

- > A3

5

20

OE < -

- > A2

6

19

A10 < -

- > A2

6

19

A10 < -

- > A1

7

18

CE < -

- > A1

7

18

CE < D7 < - >

11

14

D4 - >

< - > D2

11

14

D4 < - >

GND

12

13

D3 - >

GND

12

13

D3 < - >

ro

E cz a.

UJ

RAM

CSi C\i

EPROM

EPROM

RAM

a) +J >> ca

EPROM 27256 (32 KByte)

< - D2

xx64 (8 KByte)

D5 < - >

EPROM 27128 (16 KByte)

15

2764 (8 KByte)

10

2732 (4 KByte)

< - > D1

EPROM

D5 - >

xx16 (2 KByte)

15

RAM

10

2716 (2 KByte)

D6 < - >

< - D1

EPROM

16

2716 (2 KByte)

17

9

xx16 (2 KByte)

8

EPROM

- > AO < - > DO

RAM

D7 - > D6 - >

2764 (8 KByte)

17 16

XX64 (8 KByte)

8 9

EPROM 27256 (32 KByte)

- > AO < - DO

xx256 (32 KByte)

383

-> E

EPROM 27128 (16 KByte)

RAM

XX256 (32 KByte)

Analog e i n ->

der wichtigsten

RAM

10.6 Stiftbelegung

Vpp

1

28

Vcc Vcc V c c Vcc Vcc

A 1 2 A12 A 1 2 A 1 2 A 1 2

2

27

PGM UE

A14 Vpp Vpp A7

A7

A7

A7

A7

A7

A6

A6

A6

A5

A6 A5

A6

A5

A5

A5

A4

A4

A4

A4

A3

A3

A3

A2

A2

A2

Al

A1

AO

AO

DO

3 ( 0 4 (2)

A7

A6

A6

A6

A5

A5

A5

A4

A4

A4

A4

A3

A3

A3

A3

A3

A2

A2

A2

A2

A2

A1

A1

A1

A1

A1

A1

AO

AO

AO

AO

AO

AO

10 ( 8 )

(17)

19 D7

D7

D7

D7

D7

D7

D7

D7

DO

DO

DO

DO

DO

00

DO

11 ( 9 )

( 1 6 ) 18 D6

D6

D6

06

06

06

D6

D6

D1

01

D1

01

D1

01

D1

01

12 ( 1 0 ) ( 1 5 )

17 D5

D5

D5

D5

D5

D5

05

D5

D2

02

D2

D2

D2

D2

D2

D2

13 ( 1 1 ) ( 1 4 ) 16 D4 GND GND GND GND GND GND GND GND 14 ( 1 2 ) ( 1 3 ) 15 D3

D4

D4

D4

D4

D4

04

D4

D3

D3

D3

D3

D3

D3

D3

5 (3) 6 (4) 7 (5) 8 (6) 9 (7)

Ì 2 4 " ) 26 Vcc Vcc Vcc A8 A8 A8 ( 2 3 ) 25 A8 A9 A9 A9 ( 2 2 ) ? 4 A9

P ® A14 WE

A7

( 2 1 ) 2 3 Vpp WE OE ( 2 0 ) 2 2 SE

A11 A l l

CE2 A 1 3 A13 A13 A8

A8

A8

A8

A9

A9

A9

A9

A11 A11 A11 A11

SE OE OE OE OE ( 1 9 ) 21 A10 A10 A10 A10 A10 A 1 0 A10 A10 CE CE CE CE CE CE CE ( 1 8 ) 2 0 CE

4

Inhaltsverzeichnis

5.3 5.4 5.5 5.6 5.7

Dateneingabe mit Schaltern und Tastern Datenausgabe mit Leuchtdioden und Siebensegmentanzeigen Tastatur und neunstellige Mulitplexanzeige Der Entwurf eines Tastenmonitors Parallele Datenübertragung mit Steuersignalen

303 307 310 315 320

6

Serielle Datenübertragung

324

6.1 6.2 6.3 6.4

Die V.24-Schnittstelle Die Programmierung der Serienschnittstelle 6850 ASCII-Code-Umwandlungen Der Entwurf eines Terminalmonitors

324 326 332 335

7

Datenerfassung und Datenverarbeitung

343

7.1 7.1.1 7.1.2 7.1.3

Verarbeitung analoger Daten Widerstands-Frequenz-Umsetzung Beispiel eines Analog/Digitalwandlers Beispiel eines Digital/Analogwandlers

343 343 345 347

7.2

Die Analogperipherie des Übungssystems

348

7.3

Aufbau und Arbeitsweise eines Arithmetikprozessors

351

8

Lösungen der Übungsaufgaben

357

9

Ergänzende und weiterführende Literatur

370

10

Anhang

371

10.1 10.2 10.3 10.4 10.5 10.6

Zahlentabellen ASCII-Zeichen-Tabelle Sinnbilder für Ablaufpläne und Struktogramme Befehlstabellen des 6800/6802 Befehlstabellen des 6809 Stiftbelegung der wichtigsten Bausteine

371 372 373 374 377 381

11

Register

384

Vorwort

Die r a s c h e Entwicklung der M i k r o c o m p u t e r t e c h n i k h a t mich veranlaßt, meine beiden Bücher " M a s c h i n e n o r i e n t i e r t e Programmierung für Mikroprozessoren " und " G r u n d l a g e n der M i k r o c o m p u t e r t e c h n i k " zu ü b e r a r b e i t e n . H a r d w a r e , S o f t w a r e und Anwendungen eines Prozessors werden jetzt in einem Band z u s a m m e n g e f a ß t . Auf den e r s t e n Band mit dem Prozessor 8085A folgt nun der zweite Band f ü r die Prozessoren 6800, 6802 und 6809. Der Schwerpunkt liegt auf dem modernen Prozessor 6809. Damit sind die Grundlagen für w e i t e r e B ä n de mit den Prozessoren 8086 und 68000 g e l e g t . Nach d e n e r s t e n L e h r j a h r e n gilt es nun, die Mikrocomputertechnik fest in die Ausbildung des technischen Nachwuchses einzubauen. Dieses Buch e n t s t a n d aus und f ü r meinen U n t e r r i c h t im P f l i c h t f a c h " M i k r o c o m p u t e r t e c h n i k " und in den w e i t e r f ü h r e n d e n W a h l p f l i c h t f ä c h e r n an der Fachhochschule Dieburg. In der Gliederung des S t o f f e s und in der Auswahl der Beispiele habe ich v e r s u c h t , einen " L e h r b u c h s t i l " zu finden, wie er sich z.B. auf dem Gebiet der Grundlagen der E l e k t r o t e c h n i k s e i t langem herausgebildet h a t . Der P r o g r a m m i e r t e i l b e s c h ä f t i g t sich ausschließlich mit der m a s c h i n e n o r i e n t i e r t e n Programmierung auf A s s e m b l e r e b e n e , wie sie f ü r die Programmierung von technischen Anwendungen und in d e r S y s t e m p r o g r a m m i e r u n g vorzugsweise verwendet wird. Auch im Z e i t a l t e r der 16- und 3 2 - B i t - P r o z e s s o r e n haben die " a l t e n " 8 - B i t Prozessoren durchaus noch ihre B e r e c h t i g u n g . G e r a d e der Prozessor 6809 ist in b e s t i m m t e n Anwendungen seinen großen Brüdern bezüglich V e r a r b e i t u n g s g e schwindigkeit und e i n f a c h e r Handhabung überlegen. G l e i c h e s gilt auch für die P r o g r a m m i e r u n g im Assembler gegenüber der Arbeit mit h ö h e r e n P r o g r a m m i e r s p r a c h e n . G e r a d e die Grundlagenausbildung im F a c h " M i k r o c o m p u t e r t e c h n i k " sollte auch w e i t e r h i n auf dieser Ebene e r f o l g e n , auf der der Z u s a m m e n h a n g zwischen H a r d w a r e und S o f t w a r e u n m i t t e l b a r zu sehen ist. Ich b e d a n k e mich bei meinen S t u d e n t e n für die vielen Fragen und F e h l e r , die viel zu e i n e r besonders eingehenden Darstellung wichtiger und schwieriger F r a g e n b e i g e t r a g e n haben. Dem Oldenbourg Verlag danke ich f ü r die g u t e Z u s a m m e n a r b e i t und bei meiner F a m i l i e entschuldige ich mich, daß ich t r o t z aller B e t e u e r u n g e n noch ein Buch geschrieben h a b e .

Günter Schmitt

1

Einführung

Dieser Abschnitt gibt Ihnen einen zusammenfassenden Überblick über die Anwendung, den Aufbau und die Programmierung von Mikrorechnern, neudeutsch auch Mikrocomputer genannt. In den Fällen, in denen die deutsche Fachsprache noch keine eigenen Ausdrücke gebildet h a t , mußten die amerikanischen Bezeichnungen übernommen werden. Dabei wurde versucht, zusätzlich einen e n t s p r e chenden deutschen Ausdruck zu finden. Diese Einführung sowie die Abschnitte Grundlagen und Hardware (3.1 und 3.2) sind nicht auf einen b e s t i m m t e n Mikroprozessor zugeschnitten.

1.1

Anwendung von Mikrorechnern

Der Mikrorechner hat zwei Ahnen: die hochintegrierte Logikschaltung des Taschenrechners und die Großrechenanlage, Computer genannt. Auf einer F l ä che von e t w a 20 bis 50 Quadratmillimetern lassen sich heute mehr als 100 000 Schaltfunktionen unterbringen. Und dies in großen Stückzahlen zu niedrigen Preisen. Ähnlich wie bei einem Großrechner sind auch die Funktionen des Mikrorechners programmierbar. Was die Schaltung, die Hardware, tun soll, b e stimmt ein Programm, die S o f t w a r e . Dadurch erst lassen sich die Bausteine universell einsetzen. Heute unterscheidet man hauptsächlich zwei große Einsatzgebiete: Mikrorechner in der technischen Anwendung steuern z.B. Drucker, e l e k t r o n i sche Schreibmaschinen, Kopierautomaten, Telefonvermittlungen und F e r t i g u n g s anlagen. Durch den Einsatz von Mikrorechnern werden die G e r ä t e kleiner und billiger und können mehr und "intelligentere" Funktionen übernehmen. Mikrorechner werden in zunehmendem Maße als Klein-EDV-Anlagen eingesetzt und übernehmen damit Aufgaben ihres großen Bruders, des Großrechners. Die elektronische Datenverarbeitung, kurz EDV genannt, hält dadurch ihren Einzug als Personal-Computer oder Hobby-Computer in jeden Haushalt. Ob dies sinnvoll ist, darüber kann man g e t e i l t e r Meinung sein; die Anwendung von Mikrorechnern zur Textverarbeitung oder Buchführung in Büros und kleineren B e t r i e ben hat sich heute durchgesetzt. Der Text dieses Buches wurde mit Hilfe eines Mikrorechners am Bildschirm entworfen und korrigiert.

8

1.2

1

Einführung

Aufbau und Bauformen von Mikrorechnern

Was ist allen Mikrorechnern in den v e r s c h i e d e n e n E i n s a t z g e b i e t e n g e m e i n s a m ? Von d e r F u n k t i o n h e r gesehen sind es z u n ä c h s t p r o g r a m m i e r b a r e R e c h n e r . In einem P r o g r a m m s p e i c h e r b e f i n d e t sich e i n e A r b e i t s v o r s c h r i f t , das P r o g r a m m . Bei e i n e m T y p e n r a d d r u c k e r z.B. gibt das P r o g r a m m dem H a m m e r g e n a u dann einen A u s g a b e b e f e h l , wenn d e r richtige B u c h s t a b e des Rades am Papier v o r b e i k o m m t . Bei einem Abrechnungsprogramm z.B. e n t h ä l t das Programm R e c h e n b e f e h l e , die a u s d e r Menge und dem Einzelpreis den G e s a m t p r e i s b e r e c h n e n . Der D a t e n s p e i c h e r e n t h ä l t d i e zu v e r a r b e i t e n d e n D a t e n . Im Beispiel e i n e s D r u c k e r s sind es d i e auszugebenden B u c h s t a b e n und Z i f f e r n , im Beispiel des A b r e c h n u n g s p r o g r a m m s sind e s A r t i k e l b e z e i c h n u n g e n und Zahlen. In d e r S p e i c h e r t e c h n i k u n t e r s c h e i d e t man F e s t w e r t s p e i c h e r und S c h r e i b / L e s e s p e i c h e r . F e s t w e r t s p e i c h e r b e h a l t e n ihren S p e i c h e r i n h a l t unabhängig von der V e r s o r gungsspannung. Sie können im Betrieb nur g e l e s e n w e r d e n . Die S t e u e r p r o g r a m m e f ü r G e r ä t e und kleine Anlagen w e r d e n h a u p t s ä c h l i c h in F e s t w e r t s p e i c h e r n u n t e r g e b r a c h t . S c h r e i b / L e s e s p e i c h e r v e r l i e r e n ihren Speicherinhalt b e i m A b s c h a l t e n d e r Versorgungsspannung; sie können a b e r während des B e t r i e b e s sowohl g e l e s e n als auch neu b e s c h r i e b e n w e r d e n . Sie werden vorzugsweise f ü r die S p e i c h e r u n g der Daten v e r w e n d e t . K l e i n - E D V - A n l a g e n werden in den m e i s t e n F ä l l e n mit m a g n e t i s c h e n Speichern ( D i s k e t t e n - oder F l o p p y - L a u f w e r k e n ) a u s g e r ü s t e t , von denen man A n w e n d u n g s p r o g r a m m e (z.B. B u c h f ü h r u n g s p r o g r a m me) und D a t e n (z.B. Adressen der Kunden) in den S c h r e i b / L e s e s p e i c h e r l ä d t . Der Mikroprozessor ist die Z e n t r a l e i n h e i t , die das P r o g r a m m a u s f ü h r t und die D a t e n v e r a r b e i t e t . Die B e f e h l e werden in e i n e r b e s t i m m t e n R e i h e n f o l g e aus dem P r o g r a m m s p e i c h e r in das S t e u e r w e r k des Prozessors g e h o l t . Das R e c h e n werk v e r a r b e i t e t die D a t e n , indem es z.B. den auszugebenden B u c h s t a b e n mit dem a u g e n b l i c k l i c h e n Stand d e s T y p e n r a d e s vergleicht oder bei einem A b r e c h n u n g s p r o g r a m m Zahlen a d d i e r t und s u b t r a h i e r t . E i n / A u s g a b e s c h a l t u n g e n , auch S c h n i t t s t e l l e n g e n a n n t , verbinden den M i k r o r e c h n e r mit s e i n e r U m w e l t , der P e r i p h e r i e . Im Beispiel des T y p e n r a d d r u c k e r s muß d e r R e c h n e r , n a t ü r l i c h im richtigen Z e i t p u n k t , d e m Magneten des H a m m e r s e i n e n Impuls g e b e n . Bei einem A b r e c h n u n g s p r o g r a m m müssen z.B. von der B e d i e n u n g s t a s t a t u r Zahlen eingelesen w e r d e n . E i n / A u s g a b e s c h a l t u n g e n d i e n e n h a u p t s ä c h l i c h zur Ü b e r t r a g u n g von D a t e n . Bild 1 - 1 zeigt z u s a m m e n f a s s e n d die w i c h t i g s t e n F u n k t i o n s e i n h e i t e n e i n e s M i k r o r e c h n e r s . Der G r o ß r e c h n e r h a t prinzipiell den gleichen A u f b a u . Die E n t wicklung scheint h e u t e dahin zu g e h e n , d a ß die mit einem M i k r o r e c h n e r a u s g e r ü s t e t e K l e i n - E D V - A n l a g e den G r o ß r e c h n e r bei vielen Anwendungen v e r d r ä n g t .

1.2 Aufbau und Bauformen von Mikrorechnern

9

P e r i pher i e

ProgrammSpeicher

DatenSpeicher

E in/Ausgabe (PeripherieBaustein )

1 S t e u e r w e r k

R e c h e n w e r k

M i k r o p r o z e s s o r

Bild 1 - 1 :

A u f b a u eines M i k r o r e c h n e r s

M i k r o r e c h n e r b e s t e h e n im w e s e n t l i c h e n aus dem Mikroprozessor, P r o g r a m m und D a t e n s p e i c h e r n sowie E i n / A u s g a b e s c h a l t u n g e n f ü r die Verbindung zur P e r i p h e r i e . Man u n t e r s c h e i d e t f o l g e n d e B a u f o r m e n : Single-Chip-Mikrocomputer (Ein-Baustein-Mikrorechner) enthalten alle Funkt i o n s e i n h e i t e n (Prozessor, Speicher und E i n / A u s g a b e s c h a l t u n g e n ) auf einem Baustein der . G r ö ß e 15 mal 50 m m . Das P r o g r a m m b e s t e h t aus e t w a 1000 B e f e h l e n und b e f i n d e t sich in einem F e s t w e r t s p e i c h e r auf dem B a u s t e i n . Der S c h r e i b / L e s e s p e i c h e r kann e t w a 100 D a t e n ( Z e i c h e n oder Zahlen) a u f n e h m e n . An den A n s c h l u ß b e i n c h e n ( c a . 40) s t e h e n nur die E i n / A u s g a b e l e i t u n g e n f ü r d i e P e r i p h e r i e zur V e r f ü g u n g . Ein d e r a r t i g e r B a u s t e i n k o s t e t zwischen 10 und 100 DM. Der E i n - B a u s t e i n - M i k r o r e c h n e r wird vorzugsweise f ü r die S t e u e r u n g von kleineren G e r ä t e n (z.B. e i n f a c h e n D r u c k e r n o d e r M e ß g e r ä t e n ) bei großen S t ü c k z a h l e n e i n g e s e t z t , bei d e n e n es auf g e r i n g e A b m e s s u n g e n a n k o m m t . Man kann ihn m e h r als i n t e l l i g e n t e n S t e u e r b a u s t e i n denn als R e c h n e r b e t r a c h t e n . Single-Board-Mikrocomputer (Ein-Platinen-Mikrorechner) enthalten alle Funkt i o n s e i n h e i t e n eines M i k r o r e c h n e r s a u f g e b a u t aus m e h r e r e n B a u s t e i n e n auf einer L e i t e r p l a t t e . Im e i n f a c h s t e n F a l l e n t h ä l t eine P l a t i n e im E u r o p a f o r m a t (100 x 160 m m ) also einen Mikroprozessor z.B. vom Typ 6809, einen F e s t w e r t S p e i c h e r b a u s t e i n mit dem P r o g r a m m , e i n e n S c h r e i b / L e s e - S p e i c h e r b a u s t e i n f ü r die v e r ä n d e r l i c h e n D a t e n und einige E i n / A u s g a b e b a u s t e i n e f ü r den P e r i p h e r i e -

10

1

Einßhrung

anschluß. Die Verbindungsleitungen, auf denen die Befehle und Daten zwischen den Bausteinen übertragen werden, bezeichnet man als Bus. Die Bausteine kosten zusammen c a . 50 DM, die L e i t e r p l a t t e zwischen 50 und 200 DM. Dazu kommen die Kosten für das Programm und für die Peripherie. Das Haupteinsatzgebiet der Ein-Platinen-Mikrorechner liegt in der Steuerung von größeren Geräten wie z.B. elektronischen Schreibmaschinen oder Hobby-Computern. Die Entwicklung des Gerätes umfaßt den Entwurf des Rechners (Hardware), des Programms (Software) und die Anpassung an die Peripherie. Bauplatten-Mikrocomputer bestehen aus mehreren Karten, meist im Europaf o r m a t , die in einem Rahmen zusammengesteckt werden. Hier teilt man den Mikrorechner auf in eine Prozessorkarte, Speicherkarten für F e s t w e r t s p e i c h e r , Speicherkarten für Schreib/Lesespeicher und Peripheriekarten f ü r die D a t e n übertragung. Sein Haupteinsatzgebiet sind die Klein-EDV-Anlagen (PersonalComputer, Büro-Computer), die sich durch Einfügen neuer Karten leicht e r w e i tern oder durch den Austausch defekter Karten schnell reparieren lassen. Für die Anwendung im technischen Bereich zur Steuerung von größeren G e r ä t e n und Anlagen werden von verschiedenen Herstellern Bauplattensysteme angeboten. Bei einem aus Bauplatten zusammengestellten Mikrorechner e n t f ä l l t der größte Teil der Hardwareentwicklung, und die Entwicklung des Programms, der S o f t ware, kann sofort beginnen. Bei steigenden Stückzahlen kann es wirtschaftlich sein, bei unverändertem Programm aus einem Bauplatten-Mikrorechner einen maßgeschneiderten Ein-Karten-Mikrorechner zu entwickeln.

1.3

Die Programmierung von Mikrorechnern

Die sogenannten Maschinenbefehle im Programmspeicher des Mikrorechners sind binär verschlüsselt, d.h. sie bestehen nur aus Nullen und Einsen. In Programmlisten bedient man sich der kürzeren hexadezimalen Schreibweise, die jeweils vier Binärzeichen durch ein neues Zeichen e r s e t z t . Da diese Art der Programmdarstellung sehr unanschaulich ist, benutzt man beim Programmieren Sprachen, als wolle man mit dem Rechner "reden". Dabei u n t e r s c h e i det man maschinennahe Sprachen, den Assembler, und aufgabennahe "höhere" Sprachen wie z.B. BASIC. Bei der Programmierung von Problemen der Datenübertragung sind sehr genaue Kenntnisse über den Aufbau des Mikroprozessors und der Ein/Ausgabebausteine erforderlich. Hier bevorzugt man die maschinennahe Assemblersprache, die aus leicht merkbaren Abkürzungen besteht. Ein Assemblerbefehl entspricht einem Maschinenbefehl. Da jeder Mikroprozessor einen eigenen Befehls- und Registersatz h a t , gibt es für jeden Prozessortyp eine eigene Assemblersprache, so daß sich im Assembler geschriebene Programme nicht zwischen verschiedenen Prozessortypen austauschen lassen. Die Programmierung im Assembler ist sehr zeitaufwendig, ergibt aber schnelle und kurze Programme.

1.3 Die Programmierung von Mikrorechnern

11

Bei d e r P r o g r a m m i e r u n g von E D V - P r o b l e m e n wie z.B. e i n e r A d r e s s e n v e r w a l t u n g bevorzugt man " h ö h e r e " P r o g r a m m i e r s p r a c h e n , die z.T. d e r F o r m e l - und A l g o r i t h m e n s c h r e i b w e i s e d e r M a t h e m a t i k e n t s p r e c h e n . Ein Algorithmus ist die m a t h e m a t i s c h e Beschreibung e i n e s L ö s u n g s v e r f a h r e n s . E i n Ü b e r s e t z u n g s p r o g r a m m ( I n t e r p r e t i e r e r oder C o m p i l e r ) w a n d e l t einen B e f e h l in m e h r e r e M a s c h i n e n b e f e h l e u m . Die P r o g r a m m i e r u n g in e i n e r h ö h e r e n p r o b l e m o r i e n t i e r t e n S p r a c h e e r f o r d e r t k e i n e K e n n t n i s s e über den A u f b a u und die Funktion des M i k r o r e c h n e r s und seiner B a u s t e i n e , die P r o g r a m m e sind zwischen v e r s c h i e d e n e n R e c h nern a u s t a u s c h b a r . Sie sind jedoch länger und l a n g s a m e r als e n t s p r e c h e n d e A s s e m b l e r p rog r a m m e . Bild 1 - 2 zeigt e i n i g e Beispiele f ü r B e f e h l e in v e r s c h i e d e n e n D a r s t e l l u n g e n . Sie sind j e d o c h n i c h t m i t e i n a n d e r v e r g l e i c h b a r , da z.B. der BASIC-Befehl zum Wurzelziehen im Assembler nur mit sehr hohem A u f w a n d p r o g r a m m i e r t w e r d e n kann.

Bild 1 - 2 :

Befehl

binär

101 101 10010001 1 100010001

Befehl

hexadezimal

B6 47 11

Assembler-Befehl

LDA

BASIC-Befehl

LET

WERT WERT = 13

Beispiele f ü r v e r s c h i e d e n e B e f e h l s a r t e n

Mikrorechner in der t e c h n i s c h e n Anwendung w e r d e n vorzugsweise im Assembler oder in b e s o n d e r s auf t e c h n i s c h e P r o b l e m e z u g e s c h n i t t e n e n S p r a c h e n p r o g r a m m i e r t . In der Anwendung als K l e i n - E D V - A n l a g e bevorzugt man p r o b l e m n a h e S p r a c h e n wie z.B. BASIC und g r e i f t bei der D a t e n ü b e r t r a g u n g auf S y s t e m p r o g r a m m e z u r ü c k , die mit der Anlage vom H e r s t e l l e r g e l i e f e r t w e r d e n und im Assembler g e s c h r i e b e n sind. Die S y s t e m p r o g r a m m e , die zum B e t r i e b e i n e s R e c h n e r s e r f o r d e r l i c h sind, b e z e i c h n e t man a u c h als B e t r i e b s s y s t e m . Dieses Buch b e s c h ä f t i g t sich a u s s c h l i e ß l i c h mit d e r m a s c h i n e n o r i e n t i e r t e n P r o g r a m m i e r u n g im Assembler d e r Prozessoren 6800, 6802 und 6809, die m i t e i n a n d e r " v e r w a n d t " sind, so daß sie in einem Buch z u s a m m e n g e f a ß t werden k o n n t e n . P r o g r a m m e der Prozessoren 6800 und 6802 laufen mit geringen Ä n d e r u n gen auch auf d e m Prozessor 6809; u m g e k e h r t jedoch n i c h t . Bild 1 - 3 f a ß t die w i c h t i g s t e n Erkenntnisse dieser Einführung z u s a m m e n .

12

1 Einßhrung

Bild 1 - 3 :

MikrorechnerHardware

MikrorechnerAnwendungen

MikrorechnerSoftware

E in-Bauste inoder Kle i n s t s y s t e m

Kleingeräte Meßgeräte Drucker

A s s e m b 1er

Ein-KartenSystem

Größere Geräte A s s e m b 1 er Schre i b m a s c h i ne Tischcomputer BASIC

Baup1attenSystem

Prozeßrechner Klein-EDVAn1agen

Assembler PASCAL BASIC

A n w e n d u n g , B a u f o r m e n und P r o g r a m m i e r u n g von M i k r o r e c h n e r n

Der Mikroprozessor

ist d i e Z e n t r a l e i n h e i t des M i k r o r e c h n e r s . Je nach Z a h l d e r

Datenleitungen unterscheidet

man hauptsächlich 4 - B i t - P r o z e s s o r e n f ü r e i n f a c h e

Steuerungsaufgaben, 8-Bit-Prozessoren

für allgemeine

Anwendungen,

16-Bit-

P r o z e s s o r e n f ü r K l e i n - E D V - A n l a g e n und P r o z e ß r e c h n e r und 3 2 - B i t - P r o z e s s o r e n , d i e in den k o m m e n d e n w e r d e n . Zu j e d e m pheriebausteinen zusammen

Jahren als " m i t t l e r e "

Mikroprozessor wie

z.B.

Großrechner Verwendung Hersteller

Parallelschnittstellen

mit d e m P r o z e s s o r

s t e i n e sind w e i t g e h e n d

liefern die

eine

finden

R e i h e von P e r i -

und S e r i e n s c h n i t t s t e l l e n ,

die

eine " B a u s t e i n f a m i l i e " b i l d e n . D i e S p e i c h e r b a u -

prozessorunabhängig.

D i e " h ö h e r e n " P r o g r a m m i e r s p r a c h e n ( B A S I C , F O R T R A N und P A S C A L ) sind u n a b h ä n g i g von e i n e m b e s t i m m t e n R e c h n e r d e f i n i e r t , sie können auch f ü r G r o ß r e c h n e r v e r w e n d e t w e r d e n ; d i e Anpassung an d i e M a s c h i n e ü b e r n i m m t e i n Ü b e r setzungsprogramm

(Interpretierer

i m m e r auf einen b e s t i m m t e n schinentyp zugeschnitten.

oder

Compiler).

Die

Prozessor und d a m i t auf

Assemblersprache einen b e s t i m m t e n

ist Ma-

2

Grundlagen

Dieser Abschnitt ist f ü r Leser ohne Vorkenntnisse gedacht, die ohne b e g l e i t e n den Unterricht arbeiten. Wer b e r e i t s mit den Grundlagen der Datenverarbeitung und Digitaltechnik vertraut ist, kann diesen Abschnitt überschlagen.

2.1

Darstellung der Daten im Mikrorechner

Daten sind Zahlen (z.B. Meßwerte), Zeichen (z.B. Buchstaben) oder analoge Signale (z.B. Spannungen). Sie werden im Rechner binär gespeichert und v e r a r b e i t e t . Binär heißt zweiwertig, es sind also nur zwei Zustände entsprechend Bild 2 - 1 erlaubt:

wahr Schalter hohes

ein

Potential

HIGH-Potential

falsch Schalter niedriges

aus Potential

LOW-Potential

Bild 2-1: Binäre Zustände

Die Datenverarbeitung bezeichnet die beiden Zustände mit den Z i f f e r n Null und Eins. In der Digitaltechnik wird ein niedriges Potential zwischen 0 und 0,8 Volt als LOW bezeichnet; ein hohes Potential zwischen 2 und 5 Volt heißt HIGH . Eine Speicherstelle, die eines der beiden Binärzeichen e n t h ä l t , nennt man ein Bit. Acht Bits, also a c h t Speicherstellen, bilden ein Byte. Weitere Einheiten entsprechend Bild 2 - 2 sind das Kilobyte für 1024 Bytes und das Megabyte für 1024 Kilobytes.

14

2 Grundlagen

Bild 2-2:

Bit

=

Speicherstelle mit

Byte

=

Speicherwort

Kilobyte

=

1024 B y t e s

Megabyte

=

1024 K i l o b y t e

aus

0 oder 1

a c h t Bits

= 1 0 4 8 576

Bytes

Speichereinheiten

Für d i e D a r s t e l l u n g von Z a h l e n g i b t es z w e i M ö g l i c h k e i t e n : d i e B C D - C o d i e r u n g und d i e d u a l e BCD b e d e u t e t

Zahlendarstellung. Binär C o d i e r t e

D e z i m a l z i f f e r . Jede D e z i m a l z i f f e r w i r d e n t s p r e -

c h e n d Bild 2 - 3 binär v e r s c h l ü s s e l t ( c o d i e r t ) . D a b e i b l e i b t j e d o c h d i e Z a h l im dezimalen Zahlensystem

erhalten.

Ziffer Code 0 1 2 3 4 5 6 7 8 9

Bild 2 - 3 :

0000 0001 0010 001 1 0100 0101 0110 0111 1000 1001

Beispiel:

Dezimalzahl Ziffer

123 =

000100100011

I 1

1 0001

Ziffer

0010

Ziffer

0011

BCD-Codierung

Das d u a l e Z a h l e n s y s t e m kennt nur d i e b e i d e n Z i f f e r n 0 und 1. D i e D e z i m a l z a h l 123 l a u t e t in d i e s e r D a r s t e l l u n g 01111011. Da w i r unsere D a t e n d e z i m a l e i n g e ben und auch d i e E r g e b n i s s e d e z i m a l e r w a r t e n , ist b e i d e r dualen Speicherung von Z a h l e n im R e c h n e r e i n e Umwandlung d e r Z a h l e n e r f o r d e r l i c h . Für d i e b i n ä r e

D a r s t e l l u n g von Z e i c h e n v e r w e n d e t man C o d e s , mit d e n e n man

a l l e B u c h s t a b e n , Z i f f e r n und Sonderzeichen d e r S c h r e i b m a s c h i n e n t a s t a t u r stellen

kann.

Bild

2 - 4 z e i g t einen Ausschnitt

aus d e m

in d e r

dar-

Mikrorechner-

technik v o r w i e g e n d v e r w e n d e t e n A S C I I - C o d e . D e r Anhang e n t h ä l t d i e v o l l s t ä n dige Tabelle.

2.2 Zahlensysteme und

Buchstaben A ß C D E F

Bild 2 - 4 :

= = = = = =

Ziffern

01000001 01000010 01000011 01000100 01000101 01000110

0 1 2 3 4 5

= = = = = =









00110000 00110001 00110010 00110011 00110100 00110101

15

Umrechnungsverfahren

Sonderzeichen ! " # $ % S

= = = = = =

00100001 00100010 00100011 00100100 00100101 00100110



ASCII-Codierung

ASCII ist e i n e Abkürzung a u s d e m A m e r i k a n i s c h e n und b e d e u t e t f r e i ü b e r s e t z t : Amerikanischer sprünglich

N o r m c o d e für den A u s t a u s c h von N a c h r i c h t e n . E r wurde u r -

für den F e r n s c h r e i b v e r k e h r v e r w e n d e t . Zu den s i e b e n B i t s d e s

g e n t l i c h e n Z e i c h e n s fügt

kann ein B y t e g e n a u ein Z e i c h e n s p e i c h e r n . D e r Code ist r e g e l m ä ß i g baut.

Die

ei-

man o f t e i n a c h t e s B i t a l s K o n t r o l l b i t hinzu. D a m i t

l e t z t e n vier B i t s d e r Z i f f e m c o d i e r u n g z . B . e n t s p r e c h e n d e m

aufgeBCD-

Code. A n a l o g e S i g n a l e ( S p a n n u n g e n und S t r ö m e ) w e r d e n d u r c h W a n d l e r b a u s t e i n e b i n ä r e W e r t e u m g e s e t z t . S i e finden b e s o n d e r e

D e r A b s c h n i t t 7 z e i g t die V e r a r b e i t u n g a n a l o g e r D a t e n .

2.2

Zahlensysteme und Umrechnungsverfahren

Bild 2 - 5 :

Dezimal

Dual

Aufbau der

0 1 2 3 4 5 6 7 8 9

0000 0001 0010 001 1 0100 0101 01 10 0111 1000 1001

0 0 0 0 0 0 0 0 8 8

Die e r s t e n neun D u a l z a h l e n

+ 0 + 0 + 0 + 0 + 0 + 2 + 0+ 2 + 4 + 0 + 4 + 0 + 4 + 2 + 4 + 2 + 0+ 0 + 0 + 0

in

Anwendung in d e r M e ß t e c h n i k .

Dualzahl + + + + + + + + + +

0 1 0 1 0 1 0 1 0 1

= = = = = = = = = =

0 1 2 3 4 5 6 7 8 9

16

2

Grundlagen

Der e i n f a c h s t e Weg zu den Dualzahlen führt über das Zählen. Die Zahlen 0 und 1 sind im dezimalen und im dualen Zahlensystem gleich. Da damit im Dualsystem der Wertevorrat erschöpft ist, rückt man eine Stelle nach links, und es ergibt sich die Dualzahl 10 für die dezimale 2. Bild 2 - 5 zeigt die ersten neun Dualzahlen nach der Zählmethode. Sie entsprechen den BCD-Codierungen. Im Dezimalsystem läßt man führende Nullen f o r t . Da die Rechentechnik mit einer festen Stellenzahl a r b e i t e t , müssen führende Nullen entsprechend der Zahl der Stellen m i t g e f ü h r t werden, denn den binären Wert "leer" gibt es nicht. Für die Umwandlung größerer Zahlen gibt es Verfahren, die sich aus dem Aufbau der Zahlensysteme herleiten lassen. Das dezimale Zahlensystem verwendet die zehn Ziffern von 0 bis 9. Der Wert einer Ziffer hängt von der Stelle ab, an der sie s t e h t . Bild 2 - 6 zeigt als Beispiel den Aufbau der Dezimalzahl 123.

dezimal

123

1-102

+

2•101

+

3-10°

100

+

20

+

3

123

Bild 2-6:

Aufbau der Dezimalzahl 123

Die Wertigkeiten der Stellen sind Potenzen zur Basis 10. Multipliziert man jede Ziffer mit ihrer Wertigkeit und addiert man die Produkte, so ergibt sich wieder die ursprüngliche Zahl. Das duale Zahlensystem verwendet die beiden Ziffern 0 und 1. Daher sind die Wertigkeiten der Dualstellen Potenzen zur Basis 2. Bild 2 - 7 zeigt als Beispiel die Umrechung der Dualzahl 01111011 in eine Dezimalzahl und die Umwandlungsregel.

dual

01111011

= 0 - 2 ? + 1 -26+ 1 . 25+ 1 -2*+ 1 - 2 3 + 0 - 2 Z + 1 -21+ = 0 =

+ 64

123

+ 32

+ 16

+ 8

+ 0

+2

dezimal

Umwandlungsregel Die D u a l s t e l l e n sind m i t i h r e r W e r t i g k e i t zu m u l t i p l i z i e r e n . D i e P r o d u k t e e r geben addiert die Dezimalzahl.

Bild 2-7:

Umwandlung einer DualzahJ in eine Dezimalzahl

1-2°

+ 1

2.2 Zahlensysteme

und

Umrechnungsverfahren

Will man umgekehrt eine Dezimalzahl in eine Dualzahl umrechnen, so ist sie in Zweierpotenzen zu zerlegen. Bild 2 - 8 zeigt als Beispiel die Umwandlung der Dezimalzahl 123 in eine achtstellige Dualzahl und die Umwandlungsregel (Divisions restverfahren). dezimal

123 : 61 : 30 : 1 5 : 7 : 3 : 1 : 0 :

2 = 61 2 = 30 2 = 15 2 = 7 2 = 3 2 = 1 2 = 0 2 = 0

Rest Rest Rest Rest Rest Rest Rest Rest

Dualzahl

oder oder oder oder oder oder oder oder

1 1 0 1 1 — 1-, 1-, 0

123 61 30 15 7 3 1 0

== == == == == == == ==

2 - 61 2 . 30 2 . 15 2- 7 2- 3 2- 1 2- 0 2- 0

+ + + + + + + +

1 1 0 1 1 1 1 0

I

01111011

Umwandlungsrege 1 Die Dezimalzahl wird laufend durch die Zahl 2 dividiert, bis das Ergebnis 0 ist. Die R e s t e (0 oder 1) e r g e b e n die Dualstellen. Bei der e r s t e n Division e n t s t e h t die w e r t n i e d r i g s t e S t e l l e , bei der letzten Division e n t s t e h t die w e r t h ö c h s t e Stelle der Dualzahl.

Bild 2-8:

Umwandlung einer Dezimalzahl in eine Dualzahl

+ 123 d e z i m a l

=

01111011

komplementieren

:

10000100

1 addieren

:

+ 1

123 d e z i m a l

=

10000101

-

dual

dual

Ilmwandlungsregel Die positive Dualzahl wird mit führenden Nullen versehen und Stelle f ü r Stelle k o m p l e m e n t i e r t (aus 0 mach 1 und aus 1 mach 0). Dann ist eine 1 zu a d d i e r e n . Eine negative Dualzahl e n t h ä l t i m m e r e i ne 1 in der höchsten Bitposition.

Bild 2 - 9 : Bildung negativer Dualzahlen Es lassen sich auch negative Dualzahlen bilden. Von den verschiedenen Möglichkeiten soll nur die bei Mikrorechnern gebräuchliche Darstellung im Z w e i e r -

18

2 Grundlagen

Komplement

erwähnt

positive Wert

Stelle

w e r d e n . Zur Bildung e i n e r n e g a t i v e n für Stelle komplementiert

Dualzahl w i r d

der

( e r g ä n z t ) , und es w i r d z u s ä t z -

lich e i n e 1 a d d i e r t . Bild 2 - 9 z e i g t ein B e i s p i e l und d i e

Umwandlungsregel.

Aus e i n e r n e g a t i v e n Dualzahl w i r d durch R ü c k k o m p l e m e n t i e r e n nach d e m g l e i chen V e r f a h r e n wieder eine positive

Dualzahl, denn e i n e d o p p e l t e

Verneinung

h e b t sich a u f . Man b e a c h t e , d a ß bei v o r z e i c h e n b e h a f t e t e n Dualzahlen d i e ganz links s t e h e n d e S t e l l e nicht m e h r B e s t a n d t e i l d e r Zahl ist, sondern das V o r z e i chen d a r s t e l l t . Eine 0 b e d e u t e t p o s i t i v , e i n e 1 n e g a t i v . Beim

Programmieren

und

bei

der

Eingabe

und

Ausgabe

von

Daten

arbeitet

man n o r m a l e r w e i s e im d e z i m a l e n Z a h l e n s y s t e m ; zur Z a h l e n u m w a n d l u n g g i b t es fertige

Systemprogramme

und b e i d e r F e h l e r s u c h e der

Entwickler

mit

oder

Tabellen.

Bei der E n t w i c k l u n g

von

Hardware

in P r o g r a m m e n kann e s j e d o c h v o r k o m m e n , daß sich

Speicherinhalten

beschäftigen

muß. D i e s e w e r d e n in d e r

R e g e l nicht binär, so w i e s i e im S p e i c h e r s t e h e n , sondern h e x a d e z i m a l geben. vier

Das h e x a d e z i m a l e

Dualstellen

Zahlensystem

zu e i n e m

ausge-

e n t s t e h t durch Z u s a m m e n f a s s u n g

neuen Z e i c h e n . Entsprechend

von

Bild 2 - 1 0 v e r w e n d e t

es d i e Z i f f e r n 0 bis 9 und zusätzlich d i e Buchstaben A bis F .

Bild 2 - 1 0 :

Die

Hexadezimal

Dezimal

0000 0001 0010 001 1 0100 0101 0110 0111 1000 1001 1010 1011 1 100 1 101 1110 1111

0 1 2 3 4 5 6 7 8 9 A B C D E F

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

D i e 16 H e x a d e z i m a l z i f f e r n v o n 0 bis F

Dezimalzahl

stellige

Dual

123 l a u t e t a l s a c h t s t e l l i g e

Hexadezimalzahl

Dualzahl 01111011 und a l s

7B. Das h e x a d e z i m a l e

Z a h l e n s y s t e m hat

zwei-

16 Z i f f e r n ;

d i e W e r t i g k e i t e n d e r S t e l l e n sind P o t e n z e n zur Basis 16. In den U m r e c h n u n g s verfahren binäre

der

Bilder

2-7

Speicherinhalte,

Zeichencodierungen,

und die

werden

2-8 keine

ist a n s t e l l e der 2 d i e Dualzahlen

ebenfalls

kürzer

sind

16 zu s e t z e n .

wie

hexadezimal

z.B.

Befehle

ausgegeben.

B u c h s t a b e A ist e n t s p r e c h e n d Bild 2 - 4 binär 01000001 h e x a d e z i m a l 41.

Auch oder Der

2.3 Rechenschaltungen

2.3

19

Rechenschaltungen

Die Boolsche Algebra der Mathematik a r b e i t e t mit den beiden (binären) logischen Zuständen " w a h r " und " f a l s c h " . Die Digitaltechnik e n t w i c k e l t e daraus die S c h a l t a l g e b r a . Sie bildet die Grundlage für das Rechnen mit Dualzahlen und binär codierten Daten. Bild 2 - 1 1 faßt die wichtigsten logischen F u n k t i o nen zusammen.

Name

JA

Tabelle

X |Z 0 0 1 1

NICHT

UND

ODER

EODER

(NOT)

(AND)

(OR)

X |Z 0 1 1 0

X 0 0 1 1

X IY Z 0|0 0 0 ¡1 1 1)0 1 Iii 1

NICHT ODER (NOR)

X 0 0 1 1

X 0 0 1 1

X 0 0 1 1

Y 0 1 0 1

Z 0 1 1 0

Y 0 1 0 1

Z 1 1 1 0

Y 0 1 0 1

Z 1 0 0 0

m © iHh

neues Symbol

altes Symbol

amer i k Symbol

Bild 2 - 1 1 :

Y IZ_ OTÖ 1 0 0 0 1 1

(XOR )

NICHT UNO (NAND)

-o-

i£fc 3H =8-jy I> =D-3>i>

Logische Grundfunktionen

Die JA-Schaltung zeigt an ihrem Ausgang immer den am Eingang anliegenden Zustand. Sie wird als V e r s t ä r k e r oder T r e i b e r verwendet. Die NICHT-Schaltung verneint oder negiert den am Eingang anliegenden Z u stand. Sie wird zur Bildung des Komplementes bei der Darstellung negativer Zahlen verwendet. Die UND-Schaltung hat nur dann am Ausgang eine 1, wenn beide Eingänge 1 sind. Dies gilt auch für UND-Schaltungen mit mehr als zwei Eingängen. Die UND-Schaltung bildet das logische Produkt nach dem kleinen Einmaleins der Dualzahlen.

20

2 Grundlagen

Die ODER-Schaltung hat nur dann am 0 sind. Dies gilt

Ausgang eine 0, wenn b e i d e Eingänge

auch für O D E R - S c h a l t u n g e n

mit mehr als z w e i

Eingängen.

Die O D E R - S c h a l t u n g bildet d i e logische Summe, die jedoch für den F a l l 1 + 1 =

10

korrigiert

werden

muß,

da sich ein

Übertrag

auf

d i e nächste

Stelle

ergibt. Die EODER-Schaltung hat nur dann am Ausgang eine 0, wenn beide Eingänge gleich sind, also beide 0 oder beide 1. E O D E R b e d e u t e t " E n t w e d e r o d e r , a b e r nicht

alle

beide

".

Die

der für den Fall 0 - 1 Die

NICHT-UND-

zusätzliche

und

Verneinung

amerikanischen

EODER-Schaltung

bildet die logische D i f f e r e n z , bei

= 1 von der f o l g e n d e n Stelle g e b o r g t werden muß. die

NICHT-ODER-Schaltungen

am

Ausgang

Bezeichnungen

der

NAND

UND-

entstehen

durch

eine

bzw. O D E R - S c h a l t u n g . und N O R für

für N O T - A N D

Die

NOT-OR

sind b e r e i t s Bestandteil der deutschen Fachsprache g e w o r d e n . Für die Addition z w e i e r Dualstellen ist eine Schaltung e r f o r d e r l i c h , an deren Eingängen d i e beiden Dualstellen anliegen und an deren Ausgängen die e i n s t e l lige

Summe und der

Übertrag

auf

d i e nächste

Stelle

erscheinen. Bild 2 - 1 2

zeigt die W e r t e t a b e l l e und die Schaltung eines Halbaddierers. Eingänge Ausgänge U

X Y

X Y

We r t e t a b e 1 1 e Bild 2-12:

Scha1tung

HA

— U . — S

Symbo 1

Halbaddierer

Ein V e r g l e i c h

mit den W e r t e t a b e l l e n der logischen Grundfunktionen z e i g t , daß

die EODER-Schaltung die Summe und die U N D - S c h a l t u n g den Ü b e r t r a g b i l d e t . Auf

einen

systematischen

Entwurf

einer

logischen Schaltung aus der

Werte-

tabelle kann an dieser S t e l l e nicht eingegangen w e r d e n . Der Halbaddierer net

sich nur zur Addition der wertniedrigsten

( l e t z t e n ) Stellen z w e i e r

eigDual-

zahlen, da bei allen f o l g e n d e n Stellen ein Übertrag der vorhergehenden S t e l l e mit

berücksichtigt

werden

muß.

Bild

2-13

zeigt

die

Wertetabelle

und

die

Schaltung eines V o l l a d d i e r e r s , der drei Eingänge und z w e i Ausgänge hat. Der e r s t e Halbaddierer addiert die beiden Dualstellen X und Y . Die Z w i s c h e n summe läuft mit dem Ü b e r t r a g UV der vorhergehenden S t e l l e über den z w e i t e n Halbaddierer die beiden

der

Halbaddierer zum

Gesamtübertrag

addiert

U N , der an

ist. Bild 2-14 zeigt d i e

Schal-

eines A d d i e r w e r k e s ,aus acht V o l l a d d i e r e r n , das z w e i a c h t s t e l l i g e

Dual-

den nächsten tung

und bildet die Ergebnissumme S. Eine O D E R - S c h a l t u n g

Teilüberträge Volladdierer

w e i t e r zu

reichen

zahlen addieren kann, die parallel auf .je acht L e i t u n g e n am Eingang ankommen

2.3 Rechenschaltungen

Eingänge X V UV 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

Ausgänge UN s 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1

Wertetabe 1 le

Bild 2 - 1 3 :

»UN Schaltung

Volladdierer

2.Summand

I.Summand

Su m me Bild 2 - 1 4 :

5 Symbo1

Achtstelliger

Paralleladdierer

21

22

2 Grundlagen

D e r Ü b e r t r a g s a u s g a n g d e s w e r t h ö c h s t e n V o l l a d d i e r e r s wird m i t C f ü r C a r r y = Ü b e r t r a g b e z e i c h n e t . Ist C = 1, so ist bei d e r A d d i t i o n z w e i e r a c h t s t e l l i g e r Dualzahlen eine n e u n t e Stelle e n t s t a n d e n . Dies kann als Fehleranzeige dienen, da der zulässige Zahlenbereich ü b e r s c h r i t t e n wurde. Der Addierer kann auch s u b t r a h i e r e n , wenn man die abzuziehende Dualzahl vorher mit einer NICHTSchaltung k o m p l e m e n t i e r t und zusätzlich über den Ü b e r t r a g s e i n g a n g des w e r t n i e d r i g s t e n V o l l a d d i e r e r s e i n e 1 a d d i e r t . Die S u b t r a k t i o n wird auf d i e A d d i t i o n d e r n e g a t i v e n Z a h l z u r ü c k g e f ü h r t : A - B = A + ( - B ) . Bild 2 - 1 5 z e i g t abschließend das Symbol einer Arithmetisch-logischen Einheit, die a d d i e r t , s u b t r a h i e r t und logische Operationen a u s f ü h r t .

1.

2.Operand

Operand

-CV CN S



Z



ALU addieren subtrahieren UND ODER EODER

- Steuere i ngänge - z u r Auswahl -der Funktionen

Ergebn i s

Bild 2 - 1 5 :

A r i t h m e t i s c h - l o g i s c h e E i n h e i t f ü r a c h t Bit

ALU ist e i n e Abkürzung f ü r A r i t h m e t i c - L o g i c Unit g l e i c h A r i t h m e t i s c h l o g i s c h e E i n h e i t . Sie ist B e s t a n d t e i l d e s R e c h e n w e r k e s e i n e s M i k r o p r o z e s s o r s . Die ALU e n t h ä l t z w e i m a l a c h t D a t e n e i n g ä n g e f ü r d i e zu v e r k n ü p f e n d e n O p e r a n d e n und a c h t D a t e n a u s g ä n g e f ü r d a s E r g e b n i s . Der Ü b e r t r a g s e i n g a n g CV a d d i e r t bei e i n e r S u b t r a k t i o n z u s ä t z l i c h e i n e 1 z u m K o m p l e m e n t o d e r k a n n bei e i n e r A d d i t i o n von m e h r a l s a c h t bit l a n g e n D u a l z a h l e n d e n Z w i s c h e n ü b e r t r a g a d d i e r e n . D a h e r ist d e r Ü b e r t r a g d e s Ü b e r t r a g s a u s g a n g s C z w i s c h e n d e n T e i l a d d i t i o n e n zu s p e i c h e r n . Der Ausgang S f ü r Sign g l e i c h V o r z e i c h e n ist g l e i c h d e m w e r t h ö c h s t e n Bit des E r g e b n i s s e s u n d e n t h ä l t d a s V o r z e i c h e n bei v o r z e i c h e n b e h a f t e t e n D u a l z a h l e n . Der Ausgang Z f ü r Z e r o g l e i c h Null z e i g t ü b e r e i n e L o g i k s c h a l t u n g ( N O R mit a c h t E i n g ä n g e n ) , ob d a s E r g e b n i s g l e i c h Null i s t . Ü b e r d i e S t e u e r e i n g ä n g e w i r d d i e g e w ü n s c h t e O p e r a t i o n d e r ALU a u s g e w ä h l t , also Addition, Subtraktion, U N D - F u n k t i o n , O D E R - F u n k t i o n oder E O D E R F u n k t i o n . An d i e s e n E i n g ä n g e n liegt b e i m M i k r o p r o z e s s o r d e r F u n k t i o n s c o d e des Befehls.

2.4 Speicherschaltungen

2.4

23

Speicherschaltungen

S p e i c h e r s c h a l t u n g e n h a b e n d i e A u f g a b e , b i n ä r e Z u s t ä n d e (0 o d e r 1) a u f z u n e h men, zu s p e i c h e r n und auf Abruf w i e d e r a b z u g e b e n . Die e i n f a c h s t e S p e i c h e r s c h a l t u n g b e s t e h t aus zwei r ü c k g e k o p p e l t e n N A N D - S c h a l t u n g e n e n t s p r e c h e n d Bild 2 - 1 6 . Ein Flipflop kann auch a u s zwei N O R - S c h a l t u n g e n b e s t e h e n .

X V z 0 0 1 0 1 1 1 0 1 1 1 0 NAND-Tabelle Bild 2 - 1 6 :

Scha1tung

Symbol

NAND-Flipflop

Das Wort " F l i p f l o p " k o m m t aus d e r a m e r i k a n i s c h e n L a b o r s p r a c h e und b e d e u t e t so viel wie " K l i c k - K l a c k " . Die d e u t s c h e Bezeichnung " B i s t a b i l e r M u l t i v i b r a t o r " h a t sich n i c h t d u r c h g e s e t z t . Die Schaltung h a t zwei Eingänge und zwei A u s g ä n g e . Mit dem S-Eingang kann man den Speicher auf 1 s e t z e n , mit d e m R Eingang auf 0 r ü c k s e t z e n . Der Ausgang Q ist gleich d e m S p e i c h e r i n h a l t , d e r Ausgang (J ist durch einen Q u e r s t r i c h g e k e n n z e i c h n e t und e n t h ä l t d a s K o m p l e m e n t ( V e r n e i n u n g ) von Q. Ruhe- oder Speicherzustand: Bild 2 - 1 7 zeigt den S p e i c h e r z u s t a n d des N A N D - F l i p f l o p s . Der linke Teil z e i g t die Speicherung des W e r t e s Q = 0, d e r r e c h t e den des W e r t e s Q = 1.

Speicherinhalt Bild 2 - 1 7 :

Q = 0

Speieherinha1t

Speicherzustand des N A N D - F l i p f l o p s

Q = 1

24

Ist

2 Grundlagen

ein

Eingang

der

NAND-Schaltung

1, so hängt der Ausgang vom

des anderen Eingangs ab. Ist der Speicherinhalt

Zustand

Q = 0 (linkes Bild), so l i e g t

die 0 zusammen mit R = 1 am unteren N A N D und e r g i b t am Ausgang Q = 1. Diese

1 wird

auf

das obere

NAND

zurückgeführt und e r g i b t zusammen

mit

S = 1 w i e d e r den Ausgang Q = 0: die Schaltung speichert stabil den Inhalt 0. Auch für den

Speicherzustand Q = 1 ( r e c h t e s Bild) ergibt sich wieder ein s t a -

biler Zustand, so daß also R = S = 1 auf jeden Fall einen der beiden S p e i c h e r zustände Q = 0 oder Q = 1 festhält ( s p e i c h e r t ) . Einschreiben einer 1 ( S e t z e n ) : Bringt

man den Setzeingang S kurzzeitig auf 0, so e r g i b t sich immer der A u s -

gang und d a m i t der Speicherinhalt Q = 1. R muß dabei auf 1 bleiben. Einschreiben einer 0 ( R ü c k s e t z e n ) : Bringt

man den Rücksetzeingang

R kurzzeitig auf 0, so e r g i b t sich immer der

Ausgang Q = 1 und damit der Speicherinhalt Q = 0. S muß dabei auf 1 bleiben. Das N A N D - F l i p f l o p wird auch als R S - F l i p f l o p b e z e i c h n e t . Es dient z.B. zum Entprellen von Schaltern und Tastern. Die Eingänge R und S schalten mit einem 0 - S i g n a l , sie sind also " a k t i v L O W " . Das e i n f a c h e R S - F l i p f l o p kann entsprechend Bild 2-18 zum D - F l i p f l o p e r w e i tert w e r d e n .

C=, &1

^

1

R

-0

D — T •

I—Ö

Schaltung

Bild 2-18:

—Q -Q

T 0 1 1

Symbol

D X 0 1

Q 1Q speichern 0 |1 1 I 0

Wertetabe11 e

D-Flipflop

D b e d e u t e t Delay wie Verzögerung. Dieses F l i p f l o p hat nur noch einen einzigen Dateneingang D. Die NICHT-Schaltung sorgt d a f ü r , daß die Eingänge R ' und S 1 der

beiden

NAND-Schaltungen

NAND-Schaltungen

kann

immer

komplementär

zueinander

man sich a u f g e t e i l t denken in ein U N D

sind. mit

Die

einem

folgenden N I C H T . Durch das UND werden die Daten nur dann w e i t e r g e r e i c h t , wenn der T a k t T g l e i c h 1 ist. Die N I C H T - S c h a l t u n g k o m p l e m e n t i e r t die D a t e n . Der D - E i n g a n g ist j e t z t "aktiv H I G H " . D = 1 wird als Q = 1 g e s p e i c h e r t , D = 0 als Q = 0. Bild 2-19 zeigt den zeitlichen V e r l a u f eines Schreibvorganges.

2.4 Speicherschaltungen

T Q

& — Q

Eingang gesperrt

©

0

Ä

Eingang offen

neue D a t e n

25

Eingang gesperrt

(3)

am E i n g a n g

Q alte Daten speichern

Bild 2 - 1 9 :

neue Daten übernehmen

neue Daten speichern

S c h r e i b e n eines D - F l i p f l o p s

Im Bereich 1 ist d e r S c h r e i b t a k t 0, d a m i t sind die Eingänge R und S d e s R S Flipflops unabhängig von den an D bzw. R ' und S' a n l i e g e n d e n D a t e n i m m e r 1. Der Eingang ist g e s p e r r t , das Flipflop s p e i c h e r t . Im Bereich 2 ist d e r S c h r e i b t a k t 1, d a m i t w e r d e n d i e am Eingang D a n l i e g e n den D a t e n über R ' und S ' in d a s F l i p f l o p ü b e r n o m m e n und e r s c h e i n e n a m A u s gang Q . Während d e s T a k t z u s t a n d e s T = 1 d ü r f e n sich die D a t e n n i c h t ä n d e r n . Das vorliegende F l i p f l o p wird d u r c h den Zustand des T a k t e s g e s t e u e r t . D a n e b e n gibt es auch F l i p f l o p s , die d u r c h eine T a k t f l a n k e g e s t e u e r t w e r d e n . Die Ü b e r n a h m e e r f o l g t dann nur zu d e m Z e i t p u n k t , zu dem sich der T a k t von 0 auf 1 (positive F l a n k e ) oder von 1 auf 0 ( n e g a t i v e F l a n k e ) ä n d e r t . Im Bereich 3 ist d e r S c h r e i b t a k t wieder 0. D a m i t ist die D a t e n ü b e r n a h m e wieder g e s p e r r t , und das Flipflop b e w a h r t die D a t e n bis zum n ä c h s t e n S c h r e i b vorgang a u f . Der Ausgang Q des Flipflops kann j e d e r z e i t ohne V e r ä n d e r u n g des I n h a l t e s gelesen w e r d e n . Dies kann d u r c h d a s Anlegen eines L e s e t a k t e s g e s c h e h e n . D F l i p f l o p s w e r d e n u n t e r d e r Bezeichnung L a t c h - f r e i ü b e r s e t z t A u f f a n g s p e i c h e r - a l s R e g i s t e r f ü r d i e Eingabe und Ausgabe von D a t e n v e r w e n d e t . Für r e c h e n t e c h n i s c h e Anwendungen ist es o f t n ö t i g , in einem Flipflop g l e i c h zeitig einen a l t e n S p e i c h e r i n h a l t im H a u p t s p e i c h e r zu b e h a l t e n und einen n e u e n Inhalt z u n ä c h s t in e i n e n V o r s p e i c h e r zu s c h r e i b e n . Bild 2 - 2 0 zeigt die S c h a l tung eines M a s t e r - S l a v e - F l i p f l o p s z u s a m m e n mit d e m z e i t l i c h e n Verlauf d e r Datenübernahme.

26

2 Grundlagen

Master (Mei s t e r )

Slave (Sklave)

©

, (3)

I © j

7 7 x/ n e u e

Scha1tung

• / •

X

/

.

/

/

n

Slave

Der

/

e

u

/

/

/

al t

Master-Slave-Flipflop

Vorspeicher

Sklave.

/

Übernahme S1 ave

Symbol

Bild 2 - 2 0 :

/

Übernahme 1 Master J

al t

Q

/

Daten /

Master

D T

i /

heißt

Master

Neue D a t e n liegen am

gleich

M e i s t e r , der

Hauptspeicher

Slave

Eingang d e s M e i s t e r s ; der Sklave e r h ä l t

wie seine

D a t e n vom M e i s t e r . D i e Ü b e r n a h m e e r f o l g t j e d o c h durch den n e g i e r t e n T a k t d e s Sklaven zu u n t e r s c h i e d l i c h e n Im B e r e i c h

Zeitpunkten.

1 ist der T a k t d e s M e i s t e r s 0 . Dadurch ist sein D a t e n e i n g a n g

ge-

s p e r r t . Der T a k t des Sklaven dagegen ist 1. Der Sklave ü b e r n i m m t die D a t e n d e s M e i s t e r s ; b e i d e F l i p f l o p s haben den g l e i c h e n I n h a l t . Im

Bereich

2 ist der T a k t des M e i s t e r s 1, und e r ü b e r n i m m t die an s e i n e m

Eingang a n l i e g e n d e n

D a t e n . D e r T a k t des Sklaven d a g e g e n ist 0; d a h e r b e h ä l t

d i e s e r noch s e i n e n a l t e n I n h a l t . Im B e r e i c h 2 s p e i c h e r t

a l s o der M e i s t e r

be-

r e i t s die neuen D a t e n , während der Sklave noch die a l t e n W e r t e f e s t h ä l t . Im B e r e i c h 3 ü b e r n i m m t wie im B e r e i c h 1 der Sklave die D a t e n des M e i s t e r s ; b e i d e F l i p f l o p s h a b e n w i e d e r den g l e i c h e n Inhalt. A c h t p a r a l l e l e M a s t e r - S l a v e - F l i p f l o p s e n t s p r e c h e n d Bild 2 - 2 1 bilden den A k k u m u l a t o r , das w i c h t i g s t e D a t e n r e g i s t e r im R e c h e n w e r k e i n e s M i k r o p r o z e s s o r s .

2.4 Speicherschaltungen

1. O p e r a n d

27

2.Operand

Bild 2-21: ALU und Akkumulator f ü r a c h t Bit

Der Akkumulator gibt an seinen Ausgängen z.B. eine zu addierende Dualzahl an die a r i t h m e t i s c h - l o g i s c h e Einheit a b und n i m m t an seinen Eingängen die Summe a u f . Der z w e i t e Summand kann z.B. aus einem aus D - F l i p f l o p s b e s t e henden D a t e n r e g i s t e r k o m m e n . Akkumulator b e d e u t e t S a m m l e r . Er gibt seinen Speicherinhalt auf a c h t parallelen Leitungen gleichzeitig a b und n i m m t an seinen a c h t Eingängen das Ergebnis auf a c h t p a r a l l e l e n Leitungen a u f . Er wird daher auch als p a r a l l e l e s S c h i e b e r e g i s t e r b e z e i c h n e t . Eine Rückführung der Ausgänge eines M a s t e r - S l a v e - F l i p f l o p s auf die Eingänge entsprechend Bild 2 - 2 2 l i e f e r t einen 2 : 1 - F r e q u e n z t e i l e r , mit dem sich eine Z ä h l e r k e t t e a u f b a u e n läßt. Jede fallende T a k t f l a n k e s c h a l t e t den Ausgang eines Z ä h l e l e m e n t e s u m , d.h. von 0 auf 1 oder von 1 auf 0. Die im Bild u n t e r e i n a n d e r g e z e i c h n e t e n logischen Zustände der T a k t e bilden eine Dualzahl, die z.B. mit 0000 beginnend mit j e dem Takt um 1 weitergezählt wird. Auf den g r ö ß t e n Wert 1111 folgt wieder der Anfangswert 0000. Andere hier nicht b e h a n d e l t e Zähler lassen sich mit einem Anfangswert laden und wahlweise a u f w ä r t s oder a b w ä r t s zählen. Das Zählen geht s c h a l t u n g s t e c h n i s c h schneller und e i n f a c h e r als die Addition oder Subtraktion der Zahl 1.

28

2 Grundlagen

B I

I

I

0 R 0 I I

I I

0 '0

111

0

1

0

1 I1

0 I 0

1

' 1

0,0

1

I 1*0 1 '

B 0 I0

0 ' 0

1

1

0

0 I0

0

0

0

1 1

0

0 0

0 , 0

1 I 1

1 1

1

4-41 I1 I1 I 1

< 0010 =2«

0001 = 1.

0000 = 0«

Bild 2 - 2 2 :

V i e r s t e l l i g e r Binärzähler

1

I

1 0

0

0

1

I

,

0

0

0 I 0

I ' i_! • t 00 01 = 1. 0000 = 0« 1111 = 15.

2.5 Aktive Zustände von

2.5

Steuersignalen

29

Aktive Zustände von Steuersignalen

Die Arbeitsgeschwindigkeit eines Mikrorechners hängt ab von den Schaltzeiten seiner R e c h e n - und Speicherschaltungen. Diese ergeben sich aus den Z e i t e n f ü r den Aufbau und den Abbau von L a d u n g s t r ä g e r n in den H a l b l e i t e r s c h i c h t e n . S c h a l t e t man m e h r e r e Logikbausteine (z.B. NICHT, UND, ODER) wie bei einem Volladdierer Bild 2 - 1 3 h i n t e r e i n a n d e r , so addieren sich ihre L a u f z e i t e n . Besonders zeitkritisch ist der a c h t s t e l l i g e P a r a l l e l a d d i e r e r nach Bild 2 - 1 4 , bei d e m der G e s a m t ü b e r t r a g a c h t Volladdierer d u r c h l a u f e n muß. Aus diesem Grunde werden d e r a r t i g e Schaltungen in der Praxis möglichst aus p a r a l l e l e n Logikelementen a u f g e b a u t . Dadurch erhöht sich jedoch die Anzahl d e r E l e m e n t e und damit ihr P l a t z - und L e i s t u n g s b e d a r f . Die Bilder dieses A b s c h n i t t s z e i gen nur die Funktionsweise der R e c h e n - und Speicherschaltungen, nicht jedoch ihren t a t s ä c h l i c h e n Aufbau im Mikrorechner. Der zeitliche Ablauf aller Funktionen eines Mikrorechners wird durch den T a k t g e s t e u e r t . Dies ist ein von außen an den Mikroprozessor a n g e l e g t e s R e c h t e c k signal von c a . 1 bis 10 MHz, für d a s es jedoch aus technologischen Gründen eine obere und auch eine u n t e r e Frequenzgrenze g i b t . Innerhalb dieser aus den D a t e n b l ä t t e r n der Bausteine ersichtlichen Grenzen kann der Benutzer die A r beitsgeschwindigkeit seines Mikrorechners durch den Takt selbst b e s t i m m e n . Aus dem Takt leitet das S t e u e r w e r k des Mikroprozessors e n t s p r e c h e n d Bild 2 - 2 3 w e i t e r e Steuersignale ab. Die modernen Prozessoren e n t h a l t e n T a k t g e n e r a toren f ü r innere und Frequenzteiler f ü r ä u ß e r e T a k t s i g n a l e .

Daten l e i t u n g e n

=

Datenbus

Speicher

schreiben

lesen

Steuerwerk

t tt

lesen

Register

schreiben

Steuere i ngänge (Befehlsregister) Mikroprozessor

Bild 2 - 2 3 :

Steuerwerk und Steuersignale

30

2

Grundlagen

Das S t e u e r w e r k b e s t e h t aus Logik-, S p e i c h e r - und Zählschaltungen. Aus dem T a k t e i n g a n g und weiteren Steuereingängen werden die äußeren S t e u e r s i g n a l e (z.B. Speicher Lesen und Schreiben) und die inneren Steuersignale (z.B. T a k t e i n g ä n g e von Registern) a b g e l e i t e t . Bild 2 - 2 4 zeigt als Beispiel den z e i t lichen Verlauf der Signale "Lesen" und " S c h r e i b e n " , die zu den S p e i c h e r b a u steinen führen.

T1

Takt

T2

lesen

schreiben

Bild 2 - 2 4 :

I

»

¡

I ' i i

U

T3

I

I

!

! i i

i

I i i

i

i I

i.

Zeitlicher Verlauf eines " a k t i v - H I G H " - L e s e s i g n a l s

Die beiden Steuersignale "Lesen" und "Schreiben" des Beispiels sind "aktiv HIGH". Ein hohes P o t e n t i a l bzw. eine logische 1 löst den gewünschten Vorgang aus. Die Prozesoren der 68xx-Familie kennen nur ein Lese/Schreibsignal. T a k t T l : Beide Steuersignale sind nicht aktiv. Takt T2: Das Lesesignal ist aktiv, das Schreibsignal nicht. Takt T3: Das Lesesignal ist aktiv, das Schreibsignal n i c h t . T a k t T4: Beide Steuersignale sind nicht aktiv. Die Mikrorechnertechnik a r b e i t e t jedoch vorzugsweise mit Steuersignalen, die "aktiv LOW" sind. Ein niedriges P o t e n t i a l bzw. eine logische 0 soll den g e wünschten Vorgang auslösen. Bild 2 - 2 5 zeigt wieder die Steuersignale " L e s e n " und "Schreiben" jedoch für aktiv LOW. S t e u e r s i g n a l e , die aktiv LOW sind, werden meist durch einen Q u e r s t r i c h g e k e n n z e i c h n e t . Die Eingänge der Bausteine e r h a l t e n einen Punkt. Die Signale des Bildes 2 - 2 4 bzw. 2-25 könnten dazu dienen, die Übertragung von D a t e n zwischen dem Speicher und dem Mikroprozessor zu s t e u e r n . Im Takt T l müssen die Daten noch verschiedene Schaltstufen zu den Speichern d u r c h l a u f e n und sind noch nicht gültig. In den T a k t e n T2 und T3 sind die Daten stabil und gültig und können von den Speicherschaltungen übernommen w e r d e n . Das L e s e -

2.5 Aktive Zustände von Steuersignalen

Takt

T1

T2

T3

31

U

lesen

schreiben

Bild 2-25:

Z e i t l i c h e r V e r l a u f eines

"aktiv-LOW"-Lesesignals

signal legt nicht nur den Zeitpunkt, sondern auch die Richtung vom Speicher in den Mikroprozessor f e s t . Mit dem Schreibsignal werden Daten vom M i k r o prozessor in den Speicher g e b r a c h t . Die Prozessoren der 6 8 x x - F a m i l i e u n t e r scheiden mit dem Lese/Schreib-Signal d i e Richtung der Datenübertragung und legen mit dem F r e i g a b e t a k t E den Zeitpunkt der Übertragung f e s t . Die

L o g i k von Steuersignalen

läßt

sich durch N I C H T - S c h a l t u n g e n

leicht von

aktiv L O W nach aktiv HIGH und umgekehrt umdrehen. Bei der logischen V e r knüpfung mehrerer Steuersignale ist zu b e a c h t e n , daß sich die U N D - bzw. die O D E R - S c h a l t u n g des Bildes 2-11 nur auf aktiv HIGH beziehen. Für die V e r knüpfung von Steuersignalen, die aktiv L O W sind, ist entsprechend Bild 2 - 2 6 die e n t g e g e n g e s e t z t e Logikfunktion zu wählen.

l o g i s c h e ODERV e r k n i i p f ung

l o g i s c h e UNDVerknüpfung aktiv HIGH

aktiv LOW

Bild 2-26:

X 0 0 1

Y IZ 0 0 1 0 * — 0 0 V — Ii 1 Ii X lo 0 1 1

Y IZ 0 1 1 ! 0 1 1 1

Y



&

— Z

— z

"x 0 0 1 1 X o 0 1 1

Y 0 1 0 1

z 0 1 X — 1 Y — > 1 1

Y n 1 0 1

z n X — 0 0 Y — i

&

— Z

— z

Logische Verknüpfung von Steuersignalen

Für aktiv HIGH bildet die U N D - S c h a l t u n g g l e i c h z e i t i g auch die logische Verknüpfung, denn der Ausgang

ist nur dann 1, wenn b e i d e Eingänge

UND1 sind.

32

2 Grundlagen

E n t s p r e c h e n d e s gilt f ü r d a s O D E R . Auch hier s t i m m e n Schaltung und V e r k n ü p fung ü b e r e i n . Anders d a g e g e n bei Signalen, die aktiv LOW sind. Die O D E R S c h a l t u n g h a t nur dann a m Ausgang eine 0 (aktiv LOW), wenn b e i d e Eingänge 0 ( a k t i v LOW) sind. E n t s p r e c h e n d ist f ü r eine logische U N D - V e r k n ü p f u n g z w e i er Signale aktiv LOW eine O D E R - S c h a l t u n g e i n z u s e t z e n . Die U N D - S c h a l t u n g ist i m m e r d a n n am Ausgang 0 (LOW), wenn m i n d e s t e n s e i n e r d e r b e i d e n E i n g ä n g e 0 (LOW) ist. Für e i n e logische O D E R - V e r k n ü p f u n g z w e i e r aktiv LOW Signale ist also eine U N D - S c h a l t u n g e i n z u s e t z e n . Bild 2 - 2 7 zeigt als Beispiel, wie a u s den b e i d e n Signalen Lesen und Schreiben ein n e u e s Signal g e w o n n e n w i r d , das dann aktiv LOW i s t , wenn e n t w e d e r gelesen o d e r g e s c h r i e b e n wird. Das S t e u e r w e r k sorgt d a f ü r , daß nicht beide S t e u e r s i g n a l e gleichzeitig aktiv sein k ö n n e n . Daten gültig

m

Daten

Takt

—t Vorbereitungszeit lesen

m Haltezeit

schreiben

lesen . schreiben •

lesen •ODER schreiben

lesen ODER schreiben

Bild 2 - 2 7 :

O D E R - V e r k n ü p f u n g bei aktiv LOW

Die S t e u e r s i g n a l e " L e s e n " und " S c h r e i b e n " wurden z u n ä c h s t als z u s t a n d s g e s t e u e r t e i n g e f ü h r t . Die D a t e n ü b e r t r a g u n g e r f o l g t innerhalb der Z e i t , in d e r das Signal im aktiven Z u s t a n d ist. Der g e n a u e Z e i t p u n k t d e r D a t e n ü b e r n a h m e wird in vielen Fällen d u r c h eine T a k t f l a n k e g e s t e u e r t . Bild 2 - 2 4 zeigt a l s Beispiel eine n e g a t i v e ( f a l l e n d e ) F l a n k e , Bild 2 - 2 5 eine positive ( s t e i g e n d e ) F l a n k e . Die D a t e n müssen eine b e s t i m m t e Zeit vor d e r F l a n k e ( V o r b e r e i t u n g s z e i t ) und eine b e s t i m m t e Zeit nach der F l a n k e ( H a l t e z e i t ) s t a b i l sein. Diese Z e i t e n wurden in d a s Bild 2 - 2 7 e i n g e t r a g e n .

2.5 Aktive Zustände von

Steuersignalen

33

Bild 2 - 2 8 zeigt am Beispiel eines handelsüblichen Flipflops (SN 7474) den Unterschied zwischen einer Steuerung durch einen Zustand und d u r c h eine Flanke.

Zustnd Flanke ke ine F lanke

Bild 2-28:

Eingänge PRE CLR C L K X 0 1 1 0 X

t

1

1

1

1

1

1

0

1

1

1



Ausgänge D X X

Q

Q

1

0

0

1

1

--

1

0

0 X X

--

0

1

bleibt bleibt

C LR

Funktion setzen löschen setzen rücksetzen s pe i che rn spe i che rn

0CLK74 74

PRE

F l a n k e n - und z u s t a n d s g e s t e u e r t e s Flipflop

In der Tabelle könnten a n s t e l l e der logischen Bezeichnungen 0 und 1 a u c h die elektrischen Potentiale LOW und HIGH abgekürzt L und H s t e h e n . Ein X b e d e u t e t , daß der Zustand des Eingangs die Schaltung nicht b e e i n f l u ß t . Die beiden z u s t a n d s g e s t e u e r t e n Eingänge PRE und CLR sind aktiv LOW und wirken wie ein RS-Flipflop e n t s p r e c h e n d Bild 2-17 und 2 - 1 8 . PRE b e d e u t e t PRESET gleich s e t z e n . Durch e i n e logische 0 (LOW-Potential) a n diesem E i n gang wird der Speicherzustand des Flipflops Q = 1 g e s e t z t . CLR b e d e u t e t CLEAR gleich löschen. Durch eine logische 0 (LOW-Potential) a n diesem E i n gang wird der Speicherzustand des Flipflops auf Q = 0 g e b r a c h t . Sind b e i d e Eingänge 1 ( H I G H - P o t e n t i a l ) , so s p e i c h e r t das Flipflop seinen augenblicklichen Inhalt. Der Dateneingang D wird durch eine positive (steigende) Flanke des T a k t e i n gangs CLK g e s t e u e r t . CLK b e d e u t e t CLOCK gleich T a k t g e b e r oder Uhr. Im Gegensatz zum D-Flipflop des Bildes 2 - 1 8 e r f o l g t die D a t e n ü b e r n a h m e durch die T a k t f l a n k e . Dabei müssen die Daten während der Vorbereitungszeit vor der Flanke und während der Haltezeit nach der Flanke stabil sein. Im R u h e z u stand des T a k t e s speichert das Flipflop seinen augenblicklichen Inhalt. Beim Aufbau eines Mikrorechners werden vorwiegend h o c h i n t e g r i e r t e Bausteine (Mikroprozessor, S p e i c h e r - und Ein/Ausgabebausteine) e i n g e s e t z t . Damit e n t fällt der Entwurf von R e c h e n - und S p e i c h e r s c h a l t u n g e n , da diese ja b e r e i t s in den Bausteinen vorhanden sind. Wichtig wird dagegen die logische und z e i t l i che Verknüpfung der Steuersignale, die die D a t e n ü b e r t r a g u n g zwischen den Bausteinen s t e u e r n . Dazu sind Grundkenntnisse der Digitaltechnik und der Arbeit mit TTL-Schaltungen unbedingt e r f o r d e r l i c h . Für die P r o g r a m m i e r u n g von Mikrorechnern genügt es, die Arbeitsweise der Schaltungen zu v e r s t e h e n .

34

2 Grundlagen

2.6 Ein

Speicherorganisation Mikrorechner

kann

F l i p f l o p s o d e r ähnlichen Bits zu

einem

Byte

über

500 000 b i n ä r e

zusammen.

Speicherbytes

in F o r m

Mikrorechners

kann

Der

Mikroprozessor

von R e g i s t e r n . D e r

aus

Jedes B y t e e r h ä l t e i n e

Speicherelemente

Schaltungen e n t h a l t e n . Ü b l i c h e r w e i s e

maximal

65

536

enthält

in F o r m faßt

etwa

man

10 bis

B e f e h l s - und D a t e n s p e i c h e r Bytes

von acht

o d e r 64 K i l o b y t e s

20

eines

bestehen.

A d r e s s e , mit d e r es e i n d e u t i g von a l l e n a n d e r e n

Bytes

u n t e r s c h i e d e n w e r d e n kann. Die

A d r e s s e e i n e s B y t e s w i r d w i e sein Inhalt binär c o d i e r t und ü b l i c h e r w e i s e

als Dualzahl a n g e g e b e n . D e r in Bild 2 - 2 9 g e z e i g t e A d r e ß d e c o d e r ist e i n e

Aus-

w a h l s c h a l t u n g , d i e e i n e von v i e r S p e i c h e r s t e l l e n a u s w ä h l t .

A1 A0 Y3 Y 2Y1 Y0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 0

Wertetabelle

/ 1 -aus-4 Decoder

z A1

Schaltung

Adressen

Bild 2 - 2 9 :

in z w e i

Y0

— Y1 —

Y2

— Y3

A0

Schaltbild

Adreßdecoder

Zur A u s w a h l von vier denn

A1

AO



Speicherstellen

sind als A d r e s s e z w e i Bits e r f o r d e r l i c h ,

B i t s lassen sich genau v i e r v e r s c h i e d e n e

Bitkombinationen

s t e l l e n . D i e s sind d i e Dualzahlen 0 0 , 01, 10 und 11 mit den d e z i m a l e n

dar-

Werten

0 , 1, 2 und 3. Zur A u s w a h l von a c h t S p e i c h e r s t e l l e n sind als A d r e s s e d r e i Bits erforderlich;

mit

vier

Bits

lassen

sich

16 S p e i c h e r s t e l l e n

adressieren.

Das

35

2.6 Speicherorganisation

Bildungsgesetz l a u t e t : 2 hoch Zahl der Adreßbits gleich Zahl der a d r e s s i e r b a ren S p e i c h e r s t e l l e n . Also z . B . 2 hoch 4 Adreßbits gibt 16 S p e i c h e r a d r e s s e n . Der Adreßdecoder des Bildes 2 - 2 9 h a t zwei Adreßeingänge und vier Auswahlausgänge, die immer nur eine von vier S p e i c h e r s t e l l e n auswählen; daher der Name

l-aus-4-Decoder.

Die Auswahlschaltung

besteht

aus

Spaltenleitungen

mit den Adressen und ihren Verneinungen ( N I C H T - S c h a l t u n g e n ) und aus Z e i l e n leitungen, Adresse

die

auf

UND-Schaltungen

11 an den beiden

geführt

Adreßeingängen,

werden.

Liegt

z . B . die

so gibt nur die u n t e r s t e

duale UND-

Schaltung an ihrem Ausgang e i n e 1 ab und wählt damit die S p e i c h e r s t e l l e mit der dualen

Adresse

11 aus. Alle anderen U N D - S c h a l t u n g e n zeigen an ihrem

Ausgang eine 0 , weil i m m e r mindestens einer ihrer Eingänge 0 i s t . Die W e r t e t a b e l l e des Bildes 2 - 2 9 zeigt für a l l e vier möglichen die

entsprechenden

Ausgänge. Sie sind "aktiv

Eingangsbitkombinationen

HIGH", d.h. e i n e

1 bedeutet

" a u s g e w ä h l t " , eine 0 b e d e u t e t " n i c h t a u s g e w ä h l t " . V e r w e n d e t man a n s t e l l e der U N D - S c h a l t u n g e n N I C H T - U N D - oder N A N D - S c h a l t u n g e n , so werden die Ausgänge "aktiv L O W " , d.h. der a u s g e w ä h l t e Ausgang ist 0 , und a l l e anderen sind 1. In den folgenden Schaltbildern

wird der Adreßdecoder durch ein Symbol

entsprechend Bild 2 - 2 9 d a r g e s t e l l t . Zum Einschreiben von Daten in einen aus mehreren S p e i c h e r s t e l l e n b e s t e h e n d e n Speicher sind entsprechend Bild 2 - 3 0 drei Angaben e r f o r d e r l i c h : die Adresse der S p e i c h e r s t e l l e , ein Schreibsignal und die D a t e n s e l b s t .

Bild 2 - 3 0 : Speicher schreiben

Die Adresse wählt über den Adreßdecoder die S p e i c h e r s t e l l e aus. Das S c h r e i b signal sorgt dafür, daß die D a t e n zum richtigen Zeitpunkt übernommen werden. Die Daten liegen auf einer g e m e i n s a m e n Datenleitung an den Eingängen a l l e r S p e i c h e r s t e l l e n . Aber nur das Flipflop, dessen Takteingang ausgewählt i s t , übernimmt die D a t e n . Die Eingänge a l l e r anderen Flipflops sind g e s p e r r t . Das

36

-2 Grundlagen

Bild z e i g t zur V e r e i n f a c h u n g nur eines von den a c h t Bits eines B y t e s . Sollen die a c h t Bits eines Bytes p a r a l l e l und gleichzeitig g e s p e i c h e r t w e r d e n , so sind a c h t D a t e n l e i t u n g e n e r f o r d e r l i c h . Die T a k t e i n g ä n g e aller a c h t Bits e i n e s S p e i c h e r b y t e s sind d a b e i p a r a l l e l g e s c h a l t e t . Beim Auslesen von D a t e n aus einem aus m e h r e r e n S p e i c h e r s t e l l e n b e s t e h e n d e n S p e i c h e r e n t s p r e c h e n d Bild 2 - 3 1 e n t s t e h e n e l e k t r o t e c h n i s c h e S c h w i e r i g k e i t e n , da alle Ausgänge auf e i n e g e m e i n s a m e D a t e n l e i t u n g g e f ü h r t werden müssen.

leitung

Bild 2 - 3 1 :

Drei-Zustands-Ausgang (tristate)

S c h a l t e t man m e h r e r e Ausgänge p a r a l l e l , so darf nur d e r a u s g e w ä h l t e Ausgang seinen b i n ä r e n Z u s t a n d oder e l e k t r o t e c h n i s c h a u s g e d r ü c k t sein P o t e n t i a l auf die D a t e n a u s g a n g s l e i t u n g legen. Alle a n d e r e n nicht a u s g e w ä h l t e n Ausgänge d ü r f e n die Leitung n i c h t b e e i n f l u s s e n . Dies g e s c h i e h t durch d i e Einführung eines d r i t t e n s o g e n a n n t e n hochohmigen Z u s t a n d e s . Der S t e u e r e i n g a n g S e i n e s D r e i - Z u s t a n d s - A u s g a n g s ( t r i s t a t e ) e n t s c h e i d e t , ob d e r Speicherausgang a n die D a t e n l e i t u n g a n g e s c h l o s s e n ist oder n i c h t . Für S = 0 ist der Ausgang " h o c h o h m i g " . Er verhält s i c h wie ein g e ö f f n e t e r S c h a l t e r . F ü r S = 1 ist der Ausgang mit d e r D a t e n l e i t u n g verbunden. Damit wird je nach g e s p e i c h e r t e m Inhalt e i n e 0 oder eine 1 a b g e g e b e n . Dieser d r i t t e " h o c h o h m i g e " Zustand ist lediglich eine s c h a l t u n g s t e c h n i s c h e Lösung, mit der man m e h r e r e Ausgänge p a r a l l e l s c h a l t e n k a n n . Die S p e i c h e r i n h a l t e und d a m i t die D a t e n sind w e i t e r h i n z w e i w e r t i g o d e r b i n ä r . Bild 2 - 3 2 z e i g t nun den A u f b a u eines aus vier S p e i c h e r s t e l l e n b e s t e h e n d e n S p e i c h e r s , d e r gelesen werden soll. Die zu lesende S p e i c h e r s t e l l e wird mit Hilfe e i n e r A d r e s s e über einen A d r e ß d e c o d e r a u s g e w ä h l t . Das Lesesignal s o r g t d a f ü r , daß die D a t e n zum r i c h t i g e n Z e i t p u n k t auf die D a t e n a u s g a n g s l e i t u n g g e l e g t w e r d e n . Nur einer d e r D r e i Z u s t a n d s - A u s g ä n g e wird d u r c h g e s c h a l t e t und v e r b i n d e t den Speicher mit d e r D a t e n l e i t u n g . Alle a n d e r e n D r e i - Z u s t a n d s - A u s g ä n g e bleiben " h o c h o h m i g " . Zum Auslesen e i n e s Bytes sind wieder a c h t . D a t e n l e i t u n g e n e r f o r d e r l i c h .

2.6 Speicherorganisation

Adressen

lesen

Bild 2 - 3 2 :

Speicher lesen

Bild 2 - 3 3 :

Aufbau eines Schreib/Lese-Speichers

Leitung

37

38

2

Grundlagen

Bild 2-33 zeigt zusammenfassend den Aufbau eines byteorganisierten Schreib/ Lese-Speichers. Die Adreßeingänge dienen zur Adressierung der Speicherbytes. Die Auswahl e r folgt durch einen 1 - a u s - n - D e c o d e r . Dabei ist n die Zahl der Speicherbytes. Entsprechend der Zusammenfassung von acht Bits zur Speichereinheit Byte sind acht parallele Datenleitungen erforderlich. Es werden immer alle acht Bits gemeinsam angesprochen; eine Auswahl eines einzelnen Bits eines Bytes ist nicht möglich. Die beiden Steuerleitungen "Lesen" und "Schreiben" legen die Richtung der Datenübertragung und ihren Zeitpunkt f e s t . Beim "Lesen" sind die Datenleitungen als Ausgang geschaltet; beim "Schreiben" als Eingang. Bei einem Festwertspeicher oder Nur-Lese-Speicher bestehen die Speicherstellen nicht mehr aus Flipflops, sondern aus Schaltungen, die unveränderlich eine 0 oder eine 1 e n t h a l t e n . Da sie im Betrieb nicht beschrieben werden können, entfällt gegenüber den Schreib/Lese-Speichern das Schreibsignal. Die D a t e n leitungen können nur als Ausgang betrieben werden. Einige Prozessoren (8085 und Z80) liefern getrennte Steuersignale für das L e sen und Schreiben, die gleichzeitig auch die zeitliche Steuerung übernehmen. Bei den Prozessoren der 68xx-Familie (6800, 6802 und 6809) können diese Signale - falls erforderlich - aus dem Lese/Schreibsignal und dem Ubertragungstakt gewonnen werden.

2.7 Befehle und Programme

2.7

39

Befehle und Programme

Befehle

sind

Anweisungen

an

den

Mikrorechner,

eine b e s t i m m t e

Tätigkeit

durchzuführen, z . B . den Akkumulator mit dem Inhalt eines D a t e n b y t e s aus dem Speicher zu laden. Die B e f e h l e zur Ausführung e i n e r b e s t i m m t e n Aufgabe, z . B . zur Steuerung e i n e r W a s c h m a s c h i n e , bilden ein P r o g r a m m . Es liegt genauso wie die Daten binär c o d i e r t im S p e i c h e r des Mikrorechners. Man u n t e r s c h e i d e t

zwei Arten von B e f e h l e n : B e f e h l e , die D a t e n

verarbeiten,

und B e f e h l e , die die Ausführung des Programms s t e u e r n . B e f e h l e b e s t e h e n e n t sprechend Bild 2 - 3 4 aus zwei T e i l e n .

was tun ?

mit wem ?

C o d e

A d r e s s e

Aufbau eines B e f e h l s

Bild 2 - 3 4 :

Der Code des B e f e h l s e n t h ä l t Angaben über die auszuführende T ä t i g k e i t , z . B . bringe ein B y t e aus dem Akkumulator in den Speicher oder addiere zum Inhalt des Akkumulators den Inhalt einer S p e i c h e r s t e l l e oder s e t z e das Programm bei einem b e s t i m m t e n B e f e h l f o r t . Da die B e f e h l e wie die D a t e n binär codiert im Speicher des Mikrorechners liegen, legt man z . B . den Code des B e f e h l s in einem B y t e a b . In a c h t B i t s lassen sich 2 hoch 8 oder 2 5 6 verschiedene B i t k o m b i n a tionen verschlüsseln. Der B e f e h l s s a t z des Mikrorechners b e s t e h t damit aus 2 5 6 verschiedenen

Befehlen

wie

z.B.

laden,

speichern,

addieren,

subtrahieren,

zählen oder springen. Durch Hinzufügen eines zweiten B y t e s läßt sich der B e fehlssatz e r w e i t e r n ( Z 8 0 und 6 8 0 9 ) . Die im B e f e h l e n t h a l t e n e

Adresse

ist eine Dualzahl mit der

"Hausnummer"

eines D a t e n r e g i s t e r s im Mikroprozessor oder eines B y t e s im S p e i c h e r . E n t h ä l t z . B . der Mikroprozessor a c h t D a t e n r e g i s t e r , so muß die Adresse aus drei B i t s b e s t e h e n . R e g i s t e r a d r e s s e n sind meist im Codeteil des B e f e h l s u n t e r g e b r a c h t . Speicheradressen werden n o r m a l e r w e i s e in 16 Bits oder zwei B y t e s v e r s c h l ü s selt.

Damit

lassen

sich 2 hoch

16 gleich 6 5

536 B y t e s oder 6 4

Kilobytes

adressieren. Im folgenden soll nun der B e f e h l " S p e i c h e r e den Inhalt des Akkumulators in das S p e i c h e r b y t e mit der Adresse 6 6 6 6 h e x a d e z i m a l " näher u n t e r s u c h t werden. Er gehört

zu den d a t e n v e r a r b e i t e n d e n

B e f e h l e n und b e s t e h t aus drei B y t e s .

Das e r s t e B y t e e n t h ä l t einen Code für " s p e i c h e r e " , und das z w e i t e und d r i t t e B y t e e n t h a l t e n die Adresse " 6 6 6 6 " . Die Adresse wurde willkürlich gewählt und

40

2 Grundlagen

k ö n n t e auch 4711 l a u t e n . Bild 2 - 3 5 zeigt den S p e i c h e r b e f e h l in verschiedenen Darstellungen.

AssemblerSchreibweise: binäre hexadezimale

Bild 2 - 3 5 :

STA

Codierung:

Darstellung:

6666H

10110111

0110

B7

66

66

0110

0110

0110

Speicherbefehl

F ü r die P r o g r a m m i e r u n g bevorzugt man kurze und e i n p r ä g s a m e B e f e h l s b e z e i c h nungen a n s t e l l e w e i t s c h w e i f i g e r Beschreibungen der a u s z u f ü h r e n d e n T ä t i g k e i t . Diese Kurzbezeichnungen sind Abkürzungen aus dem A m e r i k a n i s c h e n wie z.B. " S T A " f ü r " s t ö r e a c c u m u l a t o r " gleich " s p e i c h e r e den A k k u m u l a t o r " . Sie sind so klar und e i n f a c h , daß sie s p ä t e r von einem P r o g r a m m , dem Assembler o d e r d e u t s c h M o n t i e r e r in d i e b i n ä r e Codierung des B e f e h l s u m g e s e t z t werden k ö n n e n . Die Kurzbezeichnungen werden von den H e r s t e l l e r n d e r Mikroprozessoren v o r g e g e b e n . Sie bilden z u s a m m e n mit g r a m m a t i s c h e n Regeln die " A s s e m b l e r s p r a c h e " , in d e r sich d e r P r o g r a m m i e r e r mit s e i n e m M i k r o r e c h n e r v e r s t ä n d i g t . Der Assembler würde also in dem vorliegenden Beispiel den A s s e m b l e r b e f e h l " S T A " in den b i n ä r e n Code "10110111" ü b e r s e t z e n und die h e x a d e z i m a l e A d r e s se "6666" in d i e Dualzahl "0110011001100110". Bei d e r p r a k t i s c h e n Arbeit b e vorzugt man j e d o c h die k ü r z e r e hexadezimale D a r s t e l l u n g a n s t e l l e d e r binären Codierung. Das P r o g r a m m , n a c h dem ein Mikrorechner a r b e i t e t , liegt binär c o d i e r t im P r o g r a m m s p e i c h e r . J e d e r B e f e h l und jedes B e f e h l s b y t e e r h ä l t dabei e i n e A d r e s s e . Bild 2 - 3 6 zeigt als Beispiel den B e f e h l "STA $ 6 6 6 6 " . Das Z e i c h e n " $ " b e deutet hexadezimal.

Programmspeicher Adresse 0001000000000000 0001000000000001 0001000000000010

Inhalt 10110111 01 100110 01 1001 10

' lllilli II III" (16

Adreßbus

Leitungen)

(8

Datenbus

Leitungen)

lesen

Bild 2 - 3 6 :

B e f e h l im P r o g r a m m s p e i c h e r

Hexadezima 1 1000 B7 1001 66 1002 66

2.7 Befehle und Programme

41

Die Adressen der Befehlsbytes wurden in dem Beispiel willkürlich a b 1000 hexadezimal a n g e n o m m e n . Die drei Bytes d e s Befehls liegen in drei a u f e i n a n der folgenden S p e i c h e r b y t e s . Der Mikroprozessor holt sich aus dem P r o g r a m m speicher seine B e f e h l e . Über die Adreßleitungen wird der Befehl - g e n a u e r ein B e f e h l s b y t e - ausgewählt und über die D a t e n l e i t u n g e n in den Mikroprozessor ü b e r t r a g e n . Das Lesesignal legt den richtigen Zeitpunkt der D a t e n ü b e r t r a gung vom Speicher in den Prozessor f e s t . Die 16 Adreßleitungen bilden den Adreßbus, die a c h t D a t e n l e i t u n g e n den Datenbus. Ein Bus ist ein L e i t u n g s b ü n del, an dem mehrere Bausteine anschlössen sind. In dem vorliegenden Beispiel sind dies der Mikroprozessor, der P r o g r a m m s p e i c h e r und ein D a t e n s p e i c h e r . Der Datenbus ü b e r t r ä g t nicht nur D a t e n , sondern auch B e f e h l e . Bild 2 - 3 7 zeigt das Steuerwerk des Mikroprozessors, das die Befehle a u s f ü h r t .

Steuersignale

Bild 2 - 3 7 :

Adreßbus

(16 Leitungen)

Steuerwerk des Mikroprozessors

Das Befehlszählregister b e s t e h t aus 16 Bits. Sein Inhalt kann auf den g e s c h a l t e t werden. Es e n t h ä l t die Adresse des B e f e h l s b y t e s , das als aus dem P r o g r a m m s p e i c h e r geholt werden soll. Da die Befehle und bytes u n t e r a u f e i n a n d e r folgenden Adressen a n g e o r d n e t sind, kann das zählregister ähnlich einem Binärzähler Bild 2-22 sehr schnell die laufend um 1 erhöhen.

Adreßbus nächstes BefehlsBefehlsAdresse

42

2

Grundlagen

Das Befehlsregister speichert den Code des Befehls. Der Befehlsdecoder a r b e i tet ähnlich einem Adreßdecoder Bild 2-29 und setzt den Code um in eine Folge von Steuersignalen, die in der Befehlsablaufsteuerung fest abgespeichert sind. In dem vorliegenden Beispiel würde also der Code des Befehls "STA" die Befehlsablaufsteuerung veranlassen, daß die beiden folgenden Befehlsbytes mit der Datenadresse geholt werden und daß dann die Daten aus dem Akkumulator in den Datenspeicher übertragen werden. Die Befehlsablaufsteuerung sendet innere und äußere Steuersignale aus. Zu den inneren Steuersignalen gehören z.B. die Takteingänge der Register, die bestimmen, welches Register die vom Datenbus g e l i e f e r t e n Bytes übernimmt (Akkumulator, Befehlsregisteroder Adreßregister). Zu den äußeren Steuersignalen gehören das L e s e - und das Schreibsignal f ü r die Speicherbausteine. Sie bilden zusammen mit anderen Signalen den Steuerbus. Den zeitlichen Ablauf b e s t i m m t ein von außen angelegter Takt. Das Adreßregister nimmt die im Befehl enthaltene Adresse auf. In dem vorliegenden Beispiel ist es die Datenadresse "6666". Bei der Ausführung des Speicherbefehls wird diese Adresse auf den Adreßbus geschaltet, um die a u f n e h mende Datenspeicherstelle zu adressieren. Bei einem Befehl, der den Ablauf des Programms s t e u e r t , würde der Befehlszähler mit dem Inhalt des Adreßregisters geladen werden. In den Bildern 2-38 und 2-39 wird nun der räumliche und zeitliche Ablauf des Befehls "STA $6666" gleich "Speichere den Inhalt des Akkumulators in das Speicherbyte mit der Adresse 6666 hexadezimal" gezeigt.

Der Befehl besteht aus drei Bytes, die in den Bildern in der verkürzten h e x a dezimalen Schreibweise dargestellt werden. Er wird in vier Schritten (Takten) ausgeführt. 1.Schritt: Die Befehlsablaufsteuerung legt den Inhalt des Befehlszählers 1000 hexadezimal auf den Adreßbus und das Signal "Lesen" auf den Steuerbus. Der Programmspeicher sendet das adressierte Byte mit dem Code B7 hexadezimal über den Datenbus an den Prozessor. Es wird im Befehlsregister gespeichert. Der Befehlsdecoder entschlüsselt den Code. Die Befehlsablaufsteuerung übernimmt die weitere Ausführung des Befehls. Der Befehlszähler wird anschließend von 1000 um 1 auf 1001 erhöht. 2.Schritt: Die Befehlsablaufsteuerung legt den neuen Inhalt des Befehlszählers 1001 auf den Adreßbus und das Signal "Lesen" auf den Steuerbus. Der Programmspeicher sendet das adressierte Byte mit dem ersten Teil der Datenadresse an den Prozessor. Es wird im Adreßregister gespeichert. Der Befehlszähler wird um 1 erhöht. 3.Schritt: Die Befehlsablaufsteuerung holt durch Aussenden der Adresse 1002 und des

2.7 Befehle und Programme

r2*"IV-

Datenspeicher Adresse Inhalt 6666 // / 6667

Programmspeicher Adresse Inhalt 1000 B7 1001 66 1002 66 1197 1198 1199

/h

7E 10 00 schreiben

lesen Adreßbus

LLJ Datenbus

4 |Adreßreg

3. 1000/1001/1002 Befehlszählregister

6 6

ister

66

~ r r

Takt.. J

B 7 Befehlsregister

Bild 2 - 3 8 :

Übertragungswege des Speicherbefehls

Bild 2 - 3 9 :

Z e i t l i c h e r Ablauf d e s S p e i c h e r b e f e h l s

Akkumulator

43

44

2 Grundlagen

Lesesignals d a s d r i t t e Byte d e s Befehls in das A d r e ß r e g i s t e r . Der B e f e h l s z ä h ler wird um 1 auf 1003 e r h ö h t . 4.Schritt: Die B e f e h l s a b l a u f s t e u e r u n g s c h a l t e t die D a t e n a d r e s s e aus dem A d r e ß r e g i s t e r auf den A d r e ß b u s , die D a t e n aus dem A k k u m u l a t o r auf den D a t e n b u s und das Signal " S c h r e i b e n " auf den S t e u e r b u s . Der D a t e n s p e i c h e r ü b e r n i m m t die D a t e n in das a d r e s s i e r t e S p e i c h e r b y t e . Im n ä c h s t e n S c h r i t t wird d i e B e f e h l s a d r e s s e 1003 aus d e m Befehlszähler auf den Adreßbus g e l e g t , und ein neuer Code g e l a n g t in d a s B e f e h l s r e g i s t e r . Er wird vom B e f e h l s d e c o d e r entschlüsselt und von d e r B e f e h l s a b l a u f s t e u e r u n g a u s geführt. W e i t e r e d a t e n v e r a r b e i t e n d e Befehle sind: Laden des A k k u m u l a t o r s mit dem Inhalt eines S p e i c h e r b y t e s . L a d e n des A k k u m u l a t o r s mit einem k o n s t a n t e n Z a h l e n w e r t . A u f w ä r t s - bzw. A b w ä r t s z ä h l e n des A k k u m u l a t o r i n h a l t s . Addieren bzw. S u b t r a h i e r e n eines D a t e n b y t e s zum bzw. vom A k k u m u l a t o r . V e r g l e i c h e n des A k k u m u l a t o r s mit einem D a t e n r e g i s t e r o d e r e i n e r K o n s t a n t e n . A u s f ü h r e n e i n e r logischen O p e r a t i o n (NICHT, UND, O D E R , E O D E R ) . Als Beispiel f ü r einen B e f e h l , der den Ablauf des P r o g r a m m s s t e u e r t , soll nun der B e f e h l "Springe i m m e r zum B e f e h l mit der Adresse 1000 h e x a d e z i m a l " n ä h e r u n t e r s u c h t w e r d e n . In der A s s e m b l e r s c h r e i b w e i s e l a u t e t die Abkürzung "JMP" für " j u m p " gleich " s p r i n g e " . Das e r s t e Byte e n t h ä l t den Code z.B. 01111110 oder 7E h e x a d e z i m a l . Im z w e i t e n und d r i t t e n Byte des B e f e h l s s t e h t die A d r e s s e des Sprungziels, in u n s e r e m Beispiel 1000 h e x a d e z i m a l . Die A s s e m b l e r s p r a c h e e r l a u b t auch eine s y m b o l i s c h e Bezeichnung des Sprungziels, also z.B. JMP SUSI. Es ist Aufgabe des A s s e m b l e r - Ü b e r s e t z e r s , a n s t e l l e d e s M ä d c h e n n a m e n s SUSI die Adresse 1000 e i n z u s e t z e n . Bild 2 - 4 0 zeigt den B e f e h l im P r o g r a m m s p e i c h e r ab d e r willkürlich g e w ä h l t e n Adresse 1197 und seine A u s führung. l.Schritt: Die B e f e h l s a b l a u f s t e u e r u n g legt die Adresse 1197 aus d e m Befehlszähler auf den Adreßbus und holt sich mit einem L e s e s i g n a l den Code über den D a t e n b u s in das B e f e h l s r e g i s t e r . Er wird vom B e f e h l s d e c o d e r e n t s c h l ü s s e l t und d u r c h die B e f e h l s a b l a u f s t e u e r u n g a u s g e f ü h r t . 2.Schritt: Die B e f e h l s a b l a u f s t e u e r u n g legt die Adresse 1198 aus d e m B e f e h l s z ä h l r e g i s t e r auf den Adreßbus und holt sich mit einem L e s e s i g n a l das z w e i t e Byte des B e f e h l s in das A d r e ß r e g i s t e r . 3.Schritt: Die B e f e h l s a b l a u f s t e u e r u n g legt die Adresse 1199 aus d e m B e f e h l s z ä h l r e g i s t e r

2.7 Befehle und Programme

45

Programmspe i e h e r Adresse Inhalt 1000 B7 1001 66 1002 66

r-2----

1 197 1198 1199

7E 10 00

RESETH Interrupt Takt

7E

1.

Befehlsregister

Bild 2-40:

I i

j

Ausführung des Sprungbefehls

auf den Adreßbus und holt das d r i t t e Byte des Befehls in das Adreßregister. Die Adresse des Sprungziels, in dem Beispiel 1000 hexadezimal, wird nun in das Befehlszählregister übernommen. Im nächsten Schritt wird die neue Befehlsadresse 1000 aus dem Befehlszählregister auf den Adreßbus gelegt, und der Code des neuen Befehls gelangt in das Befehlsregister. Programme bestehen normalerweise aus aufeinander folgenden Befehlen, die in dieser Reihenfolge ausgeführt werden. Dabei wird der Befehlszähler immer um 1 erhöht. Mit Sprungbefehlen kann man diese Reihenfolge durchbrechen und das Programm bei jedem beliebigen Befehl f o r t s e t z e n . Dazu wird die Adresse des Sprungziels aus dem Adreßteil des Sprungbefehls in das Befehlszählregister geladen. Weitere Befehle zur Steuerung eines Programmablaufs sind: Springe nur dann zu einem neuen Befehl, wenn das Ergebnis des vorhergehenden Vergleiches Null war; sonst führe den nächsten Befehl aus.

46

2 Grundlagen

Springe nur dann zu einem neuen B e f e h l , wenn ein Zähler ungleich Null ist; sonst führe den n ä c h s t e n B e f e h l aus. Führe ein Unterprogramm

(Hilfsprogramm) aus und mache anschließend

mit

dem n ä c h s t e n B e f e h l w e i t e r . Zum S t a r t e n des R e c h n e r s z . B . beim E i n s c h a l t e n der Versorgungsspannung muß das Programm mit dem e r s t e n B e f e h l beginnen. Der R E S E T - E i n g a n g des Mikroprozessors führt direkt auf das S t e u e r w e r k des Mikroprozessors. R e s e t b e d e u t e t zurücksetzen in einen Anfangszustand. Mit diesem Eingangssignal wird der B e f e h l s z ä h l e r mit der Startadresse des Programms geladen. Ein Signal am I N T E R R U P T - E i n g a n g des Mikroprozessors veranlaßt das S t e u e r w e r k , ein l a u f e n des Programm abzubrechen und dafür ein Sonderprogramm zu s t a r t e n . Ein I n t e r rupt ist eine Programmunterbrechung. Abschließend

f o l g t ein vollständiges P r o g r a m m b e i s p i e l .

Im Akkumulator

soll

ein Zähler von Null beginnend immer um 1 erhöht werden. Der laufende Z ä h l e r stand ist auf

einem

Ausgaberegister

mit der

8 0 0 0 h e x a d e z i m a l auszugeben. Bild 2 - 4 1

zeigt

willkürlich gewählten

Adresse

die g r a f i s c h e Darstellung

des

Programms im Programmablaufplan.

Bild 2 - 4 1 :

Programmablaufplan des Beispiels

Die Symbole des Programmablaufplans sind g e n o r m t und unabhängig von der verwendeten

Programmiersprache.

Datenverarbeitende

Befehle

werden

durch

ein R e c h t e c k d a r g e s t e l l t . Der unbedingte Sprungbefehl b e s t e h t aus einem Pfeil zum Sprungziel. Bild 2 - 4 2 zeigt r e c h t s das Assemblerprogramm und links die h e x a d e z i m a l e Übersetzung durch den A s s e m b l e r - Ü b e r s e t z e r .

1000 1002 1005 1006

Bild 2 - 4 2 :

86 00 B7 80 00 4C 7E 10 02

* B I L D 2 - 4 2 ASSEMBLERPROGRAMM 0RG $1000 ADRESSZAEHLER PROGRAMM START LDA #$00 ANFANGSWERT LADEN STA $8000 WERT AUSGEBEN LOOP INCA WERT UM 1 ERH0EHEN LOOP JMP SCHLEIFE END

Assemblerprogramm des Beispiels

2.8 Übungen zum Abschnitt Grundlagen

47

Der e r s t e Befehl "ORG" und der letzte Befehl "END" sind Assembleranweisungen, die dem Übersetzer sagen, wo die Anfangsadresse des Programms liegt und wo das Programm zuende ist. Der Befehl "LDA" lädt die Konstante 0 in den Akkumulator. Der bereits bekannte Befehl "STA" speichert den Inhalt des Akkumulators in eine Speicherstelle, hier in ein Ausgaberegister. Der Befehl "INCA" erhöht den Inhalt des Akkumulators um 1. Es ist ein Zählbefehl. Der bereits bekannte Befehl "JMP" springt zum symbolischen Sprungziel LOOP. Alle Adressen werden bei den Prozessoren der 68xx-Familie in der "natürlichen" Reihenfolge mit dem höherwertigen Teil zuerst angegeben; es gibt jedoch P r o zessoren (8085, Z80), bei denen die Reihenfolge zu vertauschen ist.

2.8

Übungen zum Abschnitt Grundlagen

Die Lösungen befinden sich im Anhang. 1.Aufgabe: Die Dezimalzahl 100 ist nacheinander in eine achtstellige Dualzahl, eine zweistellige Hexadezimalzahl und in eine 12 Bit lange BCD-codierte Dezimalzahl zu verwandeln.

2.Aufgabe: Die Dezimalzahl -100 ist als achtstellige Dualzahl im Zweierkomplement d a r zustellen. Wie lautet die hexadezimale Zusammenfassung?

3. Aufgabe: Gegeben ist die Bitkombination 01011000. a. Wie lautet die hexadezimale Zusammenfassung? b. Welches Zeichen ist es im ASCII-Code? c. Es sei eine Dualzahl, welches ist ihr dezimaler Wert? d. Es sei eine BCD-codierte Dezimalzahl, welches ist ihr Wert?

4.Aufgabe: Ein Text im ASCII-Code hat folgenden hexadezimalen Inhalt: 44 55 20 41 46 46 45 21 Er ist zu decodieren.

48

2 Grundlagen

5.Aufgabe: Für die logische Schaltung Bild 2-43 stelle man die Wertetabelle der beiden Ausgangsgrößen in Abhängigkeit von den drei Eingangsgrößen a u f .

x v z

=1

&

&

SP u

Bild 2-43:

=1

X Y z 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

u

s

s

Logikschaltung

6. Aufgabe: Gegeben sind zwei binäre Operanden: 1.Operand: 00001111 2,Operand: 00111100 a. Man addiere die beiden Operanden und prüfe das Ergebnis durch dezimale Rechnung. b. Man subtrahiere den zweiten Operanden vom ersten Operanden durch Addition des Zweierkomplementes und prüfe das Ergebnis durch dezimale Rechnung. c. Man bilde bitweise das logische UND. d. Man bilde bitweise das logische ODER. e. Man bilde bitweise das logische EODER.

7.Aufgabe: Für die Schaltung eines l - a u s - 8 - D e c o d e r s nach Bild 2 - 4 4 stelle man die Wertetabelle a u f . Welcher Ausgang wird bei der dualen Adresse 101 ausgewählt?

2.8 Übungen zum Abschnitt Grundlagen

49

Lm &

,Y1

,Y3. XL,

c 0 0 0 0 1

,Y5t

1

1

B

A

0 0

0

1

Y3

Y4

Y5 Y6 Y7

1

1

1

0

1

12

0

0 0

,Y6.

YO Y1

1

1

0

1

1

Y7

J

J

Bild 2 - 4 4 :

J

l-aus-8-Decoder

8.Aufgabe: Zwei Steuersignale X I und X2 sind aktiv LOW. Gesucht wird e i n e S c h a l t u n g , die an ihrem Ausgang HIGH ist, wenn beide S t e u e r s i g n a l e X I UND X 2 LOW sind. Man s t e l l e zusätzlich die W e r t e t a b e l l e auf und zeichne den z e i t l i c h e n Verlauf des Ausgangssignals in das Zeitdiagramm Bild 2 - 4 5 ein.

Ausgang

Bild 2 - 4 5 :

Verknüpfung von Steuersignalen

3

Hardware

Dieses K a p i t e l v e r m i t t e l t d e m Entwickler von M i k r o r e c h n e r - S c h a l t u n g e n die g r u n d l e g e n d e n K e n n t n i s s e ü b e r den Entwurf von e i n f a c h e n R e c h n e r n mit den Prozessoren 6800, 6802 und 6809. Der P r o g r a m m i e r e r von M i k r o r e c h n e r - P r o g r a m men lernt die A r b e i t s w e i s e d e s R e c h n e r s und d a m i t den Z u s a m m e n h a n g z w i schen H a r d w a r e und S o f t w a r e kennen.

3.1

Halbleitertechnik

Die A r b e i t s w e i s e eines R e c h n e r s ( C o m p u t e r s ) ist zunächst unabhängig von s e i n e r t e c h n i s c h e n A u s f ü h r u n g . Die Schaltungen d e s hier b e h a n d e l t e n M i k r o p r o zessors und s e i n e r S p e i c h e r - und E i n / A u s g a b e b a u s t e i n e k ö n n t e man a u c h aus m e c h a n i s c h e n R e l a i s , E l e k t r o n e n r ö h r e n oder einzelnen T r a n s i s t o r e n a u f b a u e n . Mikroprozessoren und ihre H i l f s b a u s t e i n e w e r d e n j e d o c h h e u t e vorwiegend in M O S - T e c h n i k a u s g e f ü h r t . D a m i t e r g e b e n sich f o l g e n d e V o r t e i l e g e g e n ü b e r a n deren Schaltungstechniken: 1. Durch die hohe P a c k u n g s d i c h t e lassen bis zu 100 000 T r a n s i s t o r f u n k t i o n e n auf e i n e r F l ä c h e von c a . 5 X 5 mm u n t e r b r i n g e n . D a m i t läßt sich auf d e r G r u n d f l ä c h e e i n e r Z i g a r e t t e n s c h a c h t e l ein k o m p l e t t e r M i k r o r e c h n e r aus d r e i Bausteinen aufbauen. 2. Die L e i s t u n g s a u f n a h m e e i n e s Mikroprozessors b e t r ä g t 0,5 bis 1,5 W a t t ; die g l e i c h e S c h a l t u n g in T T L - L o g i k a u f g e b a u t h ä t t e e t w a den 1 0 - bis lOOfachen L e i s t u n g s b e d a r f j e n a c h d e m , welchen I n t e g r a t i o n s g r a d die v e r w e n d e t e n B a u elemente haben. 3. Die T a k t f r e q u e n z von 1 bis 10 MHz r e i c h t f ü r die m e i s t e n Anwendungen aus; j e d o c h w ä r e hier die TTL-Logik um den F a k t o r 10 bis 20 s c h n e l l e r . 4. Durch eine w e i t g e h e n d a u t o m a t i s i e r t e M a s s e n f e r t i g u n g k o s t e t ein S t a n d a r d Mikroprozessor bzw. ein S p e i c h e r - o d e r E i n / A u s g a b e b a u s t e i n zwischen 5 und 20 DM, ein e i n f a c h e r Mikrorechner zwischen 50 und 500 DM. Dieser Abschnitt f a ß t die w i c h t i g s t e n Grundlagen d e r H a l b l e i t e r t e c h n i k z u s a m men und soll d a s V e r s t ä n d n i s für die B a u s t e i n e und die d a m i t a u f g e b a u t e n S c h a l t u n g e n e r l e i c h t e r n . Das L i t e r a t u r v e r z e i c h n i s e n t h ä l t e r g ä n z e n d e und w e i terführende Literatur.

51

3.1 Halbleitertechnik

3.1.1

Die

Die MOS-Technik

Abkürzung

MOS bedeutet

Metal-Oxide-Semiconductor

h a l b l e i t e r . Durch A n l e g e n e i n e r Steuerspannung trägern

einer

Polarität

3-1 zeigt

den

Metalloxid-

g e s t e u e r t . In d e r ä l t e r e n P - K a n a l t e c h n i k sind e s p o -

s i t i v e , in d e r n e u e r e n N - K a n a l t e c h n i k sind es n e g a t i v e Bild

gleich

w i r d e i n S t r o m aus L a d u n g s Ladungsträger.

A u f b a u und das S c h a l t b i l d e i n e s s e l b s t l e i t e n d e n

T r a n s i s t o r s , b e i d e m ohne A n l e g e n e i n e r Steuerspannung n e g a t i v e

NMOS-

Ladungsträ-

g e r vorhanden sind.

Source

Gate

UDD

Drain

JJfagLL

ID

Isolierschicht

Drain o

Gate

I n-Kanol

Bulk

Source UGS o

p- Grundmaterial

0

Bulk

-0,05mm

Schaltbild

Schnittbild

Bild 3 - 1 :

Aufbau eines selbstleitenden

Auf

einem

sich

zwei

schwach

Drain g l e i c h Über dem nung

p-leitenden

hochdotierte

NMOS-Transistors

Grundmaterial

n-leitende

aus

Anschlußzonen:

Senke. Z w i s c h e n den Anschlußzonen

Silizium Source

(Bulk)

gleich

l i e g t ein n - l e i t e n d e r

K a n a l b e f i n d e t sich e i n e S t e u e r e l e k t r o d e ( G a t e ) . O h n e

fließt

ein

Strom,

da

der

befinden

Quelle

Kanal selbstleitend

und

Kanal.

Steuerspan-

ist; d e r T r a n s i s t o r

leitet.

Durch A n l e g e n e i n e r n e g a t i v e n Steuerspannung v e r a r m t der K a n a l an L a d u n g s trägern, sperrt.

die Die

in das p - G r u n d m a t e r i a l Schaltung

arbeitet

zurückgedrängt

als V e r s t ä r k e r .

Die

werden;

der

Transistor

Eingangsspannung

den A u s g a n g s s t r o m . L e g t man e i n e n A r b e i t s w i d e r s t a n d in den

steuert

Ausgangsstrom-

k r e i s , so w i r k t d i e Schaltung als N I C H T - S c h a l t u n g o d e r l n v e r t e r . W i d e r s t ä n d e w e r d e n durch l e i t e n d e Z o n e n , K a p a z i t ä t e n durch i s o l i e r t e Z o n e n

hergestellt.

D i e S i l i z i u m - S t e u e r e l e k t r o d e ( G a t e ) ist durch e i n e dünne ( 0 , 1 u m ) und h o c h . 1 0 o h m i g e ( c a . 10 10 O h m ) S c h i c h t aus S i l i z i u m o x i d g e g e n den K a n a l und das G r u n d m a t e r i a l i s o l i e r t . Sie kann durch Überspannungen w i e z . B . s t a t i s c h e A u f ladung des Bausteins z e r s t ö r t w e r d e n . O b w o h l a l l e M O S - B a u s t e i n e S c h u t z s c h a l -

52

3

Hardware

tungen e n t h a l t e n , e m p f e h l e n d i e H e r s t e l l e r , M O S - B a u e l e m e n t e nur in l e i t e n der

Verpackung

zu

transportieren

und

nur

mit

geerdeten

bzw.

entladenen

Werkzeugen zu behandeln. Im statischen B e t r i e b wird dauernd eine Steuer-Gleichspanung a n g e l e g t .

Der

Eingangsstrom b e t r ä g t c a . 10~ 1 ° bis l O ' ^ A ; d i e Leistungsaufnahme pro T r a n sistor 0,1 bis 1 mW. Mikroprozessoren, die mit statischen Schaltungen a r b e i ten ( Z 8 0 ) haben keine untere Grenzfrequenz. Im dynamischen B e t r i e b lädt man die Eingangskapazitäten von 1 bis 5 p F nur a u f . Die tungen

sich

wieder

langsam

abbauenden

aufgefrischt

werden.

Steuerladungen Der

müssen durch

Leistungsbedarf

Taktschal-

verringert sich auf

e t w a 0,001 bis 0,01 mW pro Transistor. D i e Mikroprozessoren 68xx a r b e i t e n mit dynamischen Schaltungen. Der Zweiphasentakt zum W i e d e r a u f f r i s c h e n wird auf dem Baustein e r z e u g t . Die untere Grenzfrequenz b e t r ä g t c a . 100 K H z . Durch die g e r i n g e n Abmessungen eines M O S - T r a n s i s t o r s von c a . 40 X 40 pm ist es möglich, 10 000 bis 50 000 Transistorfunktionen auf einer Grundfläche von 5 X 5

mm unterzubringen. Es wird e r w a r t e t , daß es durch F o r t s c h r i t t e in

der H a l b l e i t e r t e c h n i k

möglich sein w i r d , die Packungsdichte auf über 200 000

Transistoren pro Baustein zu steigern und damit noch leistungsfähigere Schaltungen aufzubauen. Die

in diesem

Buch behandelten

Mikroprozessoren

68xx enthalten

N-Kanal-

Transistoren ähnlich Bild 3 - 1 . Die Prozessoren der ersten Generation w i e z.B. der

Typ

8008

wurden

in selbstsperrender

P-Kanal-Technik

hergestellt.

Das

Grundmaterial besteht dabei aus n-Silizium, die Anschlußzonen aus p - d o t i e r t e m Silizium. Ohne Steuerspannung sperrt der Transistor. Durch Anlegen einer n e gativen Steuerspannung entsteht ein p - l e i t e n d e r Kanal zwischen den Anschlußzonen; der Transistor Anwendungen in der

leitet. Mikrocomputertechnik:

Die Standard-Mikroprozessoren, -Speicherbausteine und -Ein/Ausgabebausteine werden

in N M O S - T e c h n i k h e r g e s t e l l t , die durch die verschiedenen

Hersteller

v e r f e i n e r t und verbessert worden ist. Die Versorgungsspannung beträgt +5 V o l t . Ä l t e r e Bausteine b e n ö t i g t e n Vorspannungen von - 5 V o l t und +12 V o l t .

3.1.2

Die

Die CMOS-Technik

Abkürzung

CMOS

gleich komplementärer Ladungsträger

einer

bedeutet

Complementary-Metal-Oxide-Semiconductor

Metalloxidhalbleiter.

Polarität.

Auch hier steuert eine Spannung

Bild 3-2 z e i g t

als

Beispiel den A u f b a u einer

CMOS-Schaltung bestehend aus einem P M O S - und einem

NMOS-Transistor.

53

3.1 Halbleitertechnik

U

E

Udd p- Kanol

Ua UDD=12V T2

T1 W///W™ '

l>////////////////\ P

T1

H1' P

^ p-Kanal . W H

Isolie r s c h l c h t

V///////W / / / / // // 7/ /A/ M

V////////A I

T2

J r"j .".-Kanal D-Grundmatenal

n- Konol

n - Grundmaterial Bulk

Schaltbild

Schnittbild

Bild 3 - 2 :

Aufbau e i n e r C M O S - S c h a l t u n g

D i e b e i d e n T r a n s i s t o r e n T 1 und T 2 sind s e l b s t s p e r r e n d . B e i Spannungen k l e i n e r a l s 3 V o l t zwischen der S t e u e r e l e k t r o d e und dem G r u n d m a t e r i a l , das m i t dem Sourceanschluß

verbunden

i s t , h a b e n sie e i n e n hohen Widerstand und s p e r r e n

den S t r o m . B e i hoher Spannung über 3 V o l t zwischen der S t e u e r e l e k t r o d e und dem

Grundmaterial

b i l d e t sich ein l e i t e n d e r K a n a l zwischen den b e i d e n

An-

schlußzonen. B e i h o h e r Eingangsspannung UE s p e r r t der o b e r e T r a n s i s t o r T l , da s e i n e

Steu-

e r e l e k t r o d e und sein G r u n d m a t e r i a l a u f g l e i c h e m P o t e n t i a l l i e g e n . D e r u n t e r e T r a n s i s t o r T 2 ist j e d o c h l e i t e n d , da sein G r u n d m a t a r i a l auf E r d p o t e n t i a l l i e g t und d a m i t

eine hohe P o t e n t i a l d i f f e r e n z zwischen der S t e u e r e l e k t r o d e und dem

Grundmaterial

b e s t e h t , die den K a n a l

leitend

macht. Dieser leitende

Kanal

legt den Ausgang d e r S c h a l t u n g auf E r d p o t e n t i a l . D e r o b e r e s p e r r e n d e K a n a l des T r a n s i s t o r s T l t r e n n t den Ausgang von der Bei niedriger

Eingangsspannung

UE

leitet

Versorgungsspannung.

der o b e r e

Transistor

Tl

und l e g t

den Ausgang der S c h a l t u n g a u f das P o t e n t i a l der V e r s o r g u n g s s p a n n u n g , da der o b e r e K a n a l durch d i e P o t e n t i a l d i f f e r e n z zwischen S t e u e r e l e k t r o d e und G r u n d m a t e r i a l l e i t e n d wird. Der u n t e r e T r a n s i s t o r T 2 s p e r r t , da s e i n e

Steuerelek-

t r o d e und sein G r u n d m a t e r i a l auf g l e i c h e m P o t e n t i a l l i e g e n . B e i h o h e r Eingangsspannung

UE e r g i b t sich a l s o eine n i e d r i g e

Ausgangsspan-

nung UA; eine n i e d r i g e Eingangsspannung U E h a t e i n e h o h e Ausgangsspannung UA zur F o l g e . D i e C M O S - S c h a l t u n g d e s B i l d e s 3 - 2 wirkt als N I C H T - S c h a l t u n g oder I n v e r t e r .

54

3 Hardware

Da in der C M O S - T e c h n i k der a n d e r e frequenz

i m m e r nur e i n e r d e r b e i d e n T r a n s i s t o r e n l e i t e t und

s p e r r t , f l i e ß t nur beim U m s c h a l t e n

abhängiger

Ladestrom.

Der

ein a l l e r d i n g s von der S c h a l t -

Ruhestrom

ist

vernachlässig bar

klein.

Ä h n l i c h w i e M O S - S c h a l t u n g e n sind auch C M O S - S c h a l t u n g e n e m p f i n d l i c h g e g e n Überspannungen und in ihrer T a k t f r e q u e n z und L e i s t u n g s a b g a b e A n w e n d u n g e n in d e r Mikroprozessoren nahme

für

CMOS-Technik. schnellen werden

Mikrocomputertechnik:

und

Speicherbausteine

Batteriebetrieb

Mikroprozessoren

und

werden

auch

U n t e r der

kann. D i e ä l t e r e

mit

äußerst

in C M O S - T e c h n i k

für Peripheriebausteine Bezeichnung

Logikbausteinen

verfügbar, zu

langsam.

geringer

Leistungsauf-

hergestellt.

Für

einige

g i b t e s A u s f ü h r u n g e n in

74HCXX

ist n e u e r d i n g s e i n e S e r i e von

die

Zusatzschaltungen

für

Standard-CMOS-Serie

Mikrorechneranwendungen

Die

CD 4 0 X X

eingesetzt

ist für d i e

Versorgungsspannung

Bausteinen kann z w i s c h e n +3 und +15 V o l t g e w ä h l t

3.1.3

beschränkt.

von

meisten CMOS-

werden.

D i e b i p o l a r e Technik

Im G e g e n s a t z zur M O S - und C M O S - T e c h n i k a r b e i t e t d i e b i p o l a r e T e c h n i k Grenzschichten

zwischen

b e s t e h t aus d r e i

Ladungen b e i d e r

Halbleiterzonen

mit

Polaritäten. Der bipolare Transistor

mit z w e i p n - Ü b e r g ä n g e n .

Bild 3 - 3 z e i g t den

A u f b a u e i n e s n p n - T r a n s i s t o r s in P l a n a r t e c h n i k .

UB = + 5 V

Kollektor

Basis

Emitter

Rl

ir w

' CE

r


2 , 0 V

IF

C

t

rr t > i

Emax =

10

1

Emax = ±

10

'Emax = ±

10

Pp

T1

Bild 3 - 4 :

Eingangstransistor

MOS-Eingangsschaltung

t ä t e n i h r e r E i n g ä n g e . L ä ß t m a n e i n e n M O S - E i n g a n g o f f e n ( u n b e s c h a l t e t ) , so kann e r d u r c h E i n s t r e u u n g e n und s t a t i s c h e A u f l a d u n g ein U n d e f i n i e r t e s o d e r sich v e r ä n d e r n d e s P o t e n t i a l a n n e h m e n . U n b e s c h a l t e t e M O S - E i n g ä n g e sind w e g e n i h r e r w e c h s e l n d e n l o g i s c h e n Z u s t ä n d e e i n e s e h r s c h w e r zu f i n d e n d e Fehlerquelle. Bild 3 - 5 z e i g t d e n t y p i s c h e n Eingang e i n e r T T L - S c h a l t u n g , bei d e r d i e E i n g a n g s s p a n n u n g UE d e n E m i t t e r d e s T r a n s i s t o r s T1 und d i e s e r d i e Basis von T 2 ansteuert.

•5V LOW:

UE2,0 V

i 11 Bild 3 - 5 :

ii

Standard

LS-Technik

I E PC Adreßrechenwerk Code Befehlsregister

Bild 3 - 2 2 :

55

6809

Akkumulator

Mikroprozessor 6809 mit S p e i c h e r - und P e r i p h e r i e b a u s t e i n e n

D e r S p e i c h e r b a u s t e i n e n t h ä l t ein T e s t p r o g r a m m , d a s in e i n e r u n e n d l i c h e n S c h l e i f e D a t e n a u s d e m A k k u m u l a t o r A in ein D a t e n r e g i s t e r d e s P e r i p h e r i e b a u s t e i n s s p e i c h e r t . Der P e r i p h e r i e b a u s t e i n s e n d e t die D a t e n w e i t e r a n ein B i l d s c h i r m g e r ä t . D a s B e f e h l s z ä h l r e g i s t e r des P r o z e s s o r s a d r e s s i e r t d i e P r o g r a m m b y t e s , d i e aus d e m P r o g r a m m s p e i c h e r ü b e r den D a t e n b u s in d e n P r o z e s s o r g e l e sen w e r d e n . Die F u n k t i o n s c o d e s d e r B e f e h l e g e l a n g e n in d a s B e f e h l s r e g i s t e r , D a t e n a d r e s s e n w e r d e n in e i n e m A d r e ß r e g i s t e r z w i s c h e n g e s p e i c h e r t . D a s A d r e ß r e c h e n w e r k b e r e c h n e t a u s d e m Inhalt d e s B e f e h l s z ä h l r e g i s t e r s und e i n e m A b s t a n d die S p r u n g a d r e s s e f ü r den S p r u n g b e f e h l . Bei d e r A u s f ü h r u n g e i n e s S p e i c h e r b e f e h l s w i r d d e r Inhalt d e s A k k u m u l a t o r s ü b e r d e n D a t e n b u s in d e n P e r i p h e r i e b a u s t e i n g e s c h r i e b e n . Der A d r e ß d e c o d e r u n t e r s c h e i d e t z w i s c h e n d e n b e i d e n B a u s t e i n e n , w e n n vom Prozessor e i n e A d r e s s e auf den A d r e ß b u s g e l e g t w i r d . Bild 3 - 2 3 z e i g t d e n z e i t l i c h e n Ablauf d e r T e s t s c h l e i f e o h n e den e r s t e n B e f e h l , d e r n u r e i n m a l beim S t a r t d e s P r o g r a m m s a u s g e f ü h r t w i r d .

Der 1. B e f e h l " L D A # $ 5 5 " lädt den A k k u m u l a t o r A m i t d e m B i t m u s t e r 0 1 0 1 0 1 0 1 , d a s zur h e x a d e z i m a l e n K o n s t a n t e n 55 z u s a m m e n g e f a ß t w u r d e . A l l e n H e x a d e z i m a l z a h l e n wird d a s Z e i c h e n " $ " v o r a n g e s t e l l t ; d a s Z e i c h e n " # " k e n n z e i c h n e t k o n s t a n t e W e r t e . D i e s e r B e f e h l w i r d n i c h t im I m p u l s d i a g r a m m d a r g e s t e l l t .

3.3 Der Mikroprozessor 6809

T1

Adresse

Inhalt

F000 F001 F002 F 003 F004 F005 F006

86 55 B7 C9 01 20 FB

Befehl

STA

T2

T3

Name Befehl ORG START LDA LOOP

Operand $F000 #$55

STA

$C901

BRA

LOOP

END Befehl

T4-

T5 •

T1

BRA

T2

C_IZ n LJZL F003

B7

C9

F 004

FFFF

T3

JZ.

H

n

AB F002

77

C901

F005

F006

FFFF

55

20

FB

XX

AO,

DB'

DO,

R/W

BA

BS

Bild 3-23: Impulsdiagramm einer Testschleife

Der 2. Befehl "STA $C901" speichert den Inhalt des Akkumulators A, also die Konstante $55, in das Datenregister des Peripheriebausteins. Testet man das Beispielprogramm mit dem Übungssystem (Abschnitt 3.8), so befindet sich dort auf der Adresse $C901 das Senderegister einer Serienschnittstelle, das die Konstante $55 als Buchstaben "U" an das angeschlossene Bildschirmgerät sendet.

78

3 Hardware

Der 3. Befehl "BRA LOOP" ist ein Sprungbefehl zum 2. Befehl des Testprogramms. Das zweite Byte des Befehls besteht aus der hexadezimal verschlüsselten Zahl " - 5 " , dem Abstand zum Sprungziel. Das Impulsdiagramm zeigt den zeitlichen Verlauf der Takte E (Freigabe) und Q (versetzter Takt) des Prozessors sowie die Signale R/W (Lesen/Schreiben), BA (Bus verfügbar) und BS (Bus Zustand). Für den Adreßbus (16 Leitungen) und den Datenbus (8 Leitungen) konnten aus Platzgründen nicht die Zustände der einzelnen Leitungen dargestellt werden, sondern die Signale wurden h e x a d e zimal zusammengefaßt. Führt z.B. der Datenbus im 1. Takt den hexadezimalen Wert B7, so entspricht dies dem Bitmuster 10110111 und damit den Leitungszuständen D7 = HIGH, D6 = LOW, D5 = HIGH, D4 = HIGH, D3 = LOW, D2 = HIGH, Dl = HIGH und DO = HIGH. Für die Adreßleitung A0 und die Datenleitung DO wurden die Zeitverläufe dargestellt. In der ersten H ä l f t e eines Taktes ist der Datenbus im Tristate-Zustand. In der hexadezimalen Zusammenfassung erscheint ein " m i t t l e r e s " Potential, bei der Darstellung des Zustandes der Leitung DO wird jedoch davon ausgegangen, daß die Leitung ihr altes Potential beibehält. Der Befehl "STA $C901" wird in fünf Takten ausgeführt. Im Takt T1 liest der Prozessor den Funktionscode des Befehls aus dem Programmspeicher und übernimmt ihn mit der fallenden Flanke des Taktes E. Dieser Takt ist ein Lesezyklus. Im Takt T2 decodiert (entschlüsselt) der Befehlsdecoder des Prozessor den Code und stellt die Art des Befehls fest. Erst dann kann das Steuerwerk e n t scheiden, ob weitere Befehlsbytes zu holen sind. Während der Decodierung liest der Prozessor jedoch schon das auf den Code folgende Byte, in diesem Fall den höherwertigen Teil der Datenadresse. Dieser Takt ist ein Lesezyklus. Im Takt T3 ist die Decodierung des Funktionscodes beendet und damit der Ablauf des Befehls bekannt. Der Prozessor liest den niederwertigen Teil der Datenadresse. Dieser Takt ist ein Lesezyklus. Im Takt T4 laufen im Prozessor interne Vorgänge ab, bei denen der Bus nicht benötigt wird. Der Prozesor sendet die Adresse $FFFF aus. Dieser Takt wird als VMA-Zyklus bezeichnet. Im Takt T5 sendet der Prozessor die Datenadresse aus und legt den Inhalt des Akkumulators A auf den Datenbus. Dieser Takt ist ein Schreibzyklus, die Leitung R/W liegt auf LOW. Der Befehl "BRA LOOP" wird in drei Takten ausgeführt. Im Takt T1 liest der Prozessor den Funktionscode des Befehls aus dem Programmspeicher und übernimmt ihn mit der fallenden Flanke des Taktes E. Dieser Takt ist ein Lesezyklus.

3.3 Der Mikroprozessor

Im T a k t

T2

decodiert

(entschlüsselt)

79

6809

d e r B e f e h l s d e c o d e r des Prozessors den

C o d e und s t e l l t die Art des B e f e h l s f e s t . E r s t dann kann das S t e u e r w e r k

ent-

s c h e i d e n , ob w e i t e r e B e f e h l s b y t e s zu holen sind. Während der D e c o d i e r u n g liest der Prozessor schon das a u f den Code f o l g e n d e B y t e , in d i e s e m F a l l den Abstand zum Sprungziel. D i e s e r T a k t ist wieder ein L e s e z y k l u s . Im T a k t T3 ist die D e c o d i e r u n g des F u n k t i o n s c o d e s b e e n d e t . D a s A d r e ß r e c h e n werk b e r e c h n e t Takt

T2

aus dem S t a n d des B e f e h l s z ä h l e r s und dem A b s t a n d , der im

e i n g e l e s e n wurde, d i e A d r e s s e des n ä c h s t e n B e f e h l s . D a d e r Bus in

diesem T a k t n i c h t b e n ö t i g t wird, s e n d e t der Prozessor die A d r e s s e $ F F F F a u s . D i e s e r T a k t ist ein V M A - Z y k l u s . Bild 3 - 2 3 e n t h ä l t k e i n e A n g a b e n über S c h a l t z e i t e n . D i e s e h ä n g e n von d e r T a k t frequenz ( Q u a r z ) und von der kapazitiven B e l a s t u n g d e r L e i t u n g e n a b . S i e k ö n nen den zeigen

Datenblättern

die

beiden

der

Hersteller

folgenden

entnommen

werden.

Bilder eine vereinfachte

Zur

Orientierung

Darstellung

T a k t von 1 MHz ( Q u a r z 4 MHz). Bild 3 - 2 4 z e i g t e i n e n L e s e z y k l u s .

-Lese

- Zyklus

(1MHz)-

-500 ns

-250

Prozessor speichert Daten t

ns Prozessor speichert Steuersignale

L,

-200 nsAB

Adresse

gültig

80ns-i' >10 ns DB

Daten vom Speicher

R/W

BA

Bild 3 - 2 4 :

L e s e z y k l u s des P r o z e s s o r s 6 8 0 9 b e i 1 MHz

Oaten gültig

für

einen

80

3 Hardware

In e i n e m L e s e z y k l u s s e n d e t der Prozessor e i n e A d r e s s e und R/W = H I G H ( L e s e n ) aus und bringt d i e A u s g a n g s t r e i b e r der D a t e n l e i t u n g e n in den T r i s t a t e - Z u s t a n d . Die

A d r e ß - und S t e u e r l e i t u n g e n

w e r d e n in den e r s t e n 200 ns s t a b i l . D i e

stei-

g e n d e F l a n k e des T a k t e s Q z e i g t an, daß a l l e A u s g a n g s s i g n a l e des P r o z e s s o r s gültig

sind.

Die

Eingangs-Steuersignale

RESET,

H A L T und I n t e r r u p t

werden

mit d e r f a l l e n d e n F l a n k e des T a k t e s Q vom P r o z e s s o r ü b e r n o m m e n . Bei

einem

L e s e z y k l u s muß e i n S p e i c h e r - oder P e r i p h e r i e b a u s t e i n d i e D a t e n auf den D a t e n bus l e g e n . D e r P r o z e s s o r s p e i c h e r t den Zustand des D a t e n b u s mit d e r f a l l e n d e n F l a n k e des T a k t e s E . D i e D a t e n müssen 80 ns vor d e r F l a n k e

(Vorbereitungs-

s t a b i l sein. Bild 3 - 2 5 z e i g t e i n e n

z e i t ) und 10 ns nach d e r F l a n k e ( H a l t e z e i t ) Schreibzyklus.

Bild 3 - 2 5 :

In e i n e m

S c h r e i b z y k l u s des Prozessors 6809 b e i 1 M H z

Schreibzyklus

sendet

der

Prozessor

eine

Adresse

und

R/W = L O W

( S c h r e i b e n ) aus. W i e bei e i n e m L e s e z k l u s w e r d e n die A d r e s s e n und S t e u e r l e i tungen in den e r s t e n 200 ns des T a k t e s s t a b i l ; der T a k t Ausgangssignale

gültig

gangs-Steuersignale. tristate

(Takt

sind; die

steigende

In d e r ersten

Flanke

von

Q

Q zeigt

an, daß d i e

speichert

H ä l f t e des Schreibzyklus ist der

die

Ein-

Datenbus

E = L O W ) ; in der z w e i t e n H ä l f t e ( T a k t E = H I G H ) f ü h r t e r d i e

3.3 Der Mikroprozessor 6809

81

vom Prozessor ausgesendeten Daten. Ihre Übernahme ist Aufgabe der Speicherund Peripheriebausteine. Diese werden in den meisten Anwendungen so angeschlossen, daß sie die Daten wie der Prozessor mit der fallenden Flanke des T a k t e s E übernehmen. /

-

vHÄ -

,/

Zyklus

Q

AB

X

DB

Adresse

/

V Inhalt

$F F F F

von

I

$FFFF

-

R/W

A0=d

BA

A15 BA

VMA

Bild 3 - 2 6 :



R/W

BS



VMA >1

E — >1 0

VMA-Zyklus des Prozessors 6 8 0 9

Bei der Ausführung eines jeden Befehls holt sich der Prozessor im 1. Takt den Funktionscode und decodiert ihn im 2. T a k t , während er schon das auf den Funktionscode folgende Byte liest. Im weiteren Befehlsablauf kann es nun T a k t e geben, in denen der Prozessor mit internen Vorgängen b e s c h ä f t i g t ist (z.B. Adreßrechnungen) und in denen er den Bus nicht benötigt. Bei den älteren Prozessoren 6 8 0 0 und 6802 wurden in diesen Takten ungültige Zustände auf den Adreßleitungen ausgesendet; dies wurde durch ein besonderes Steuersignal VMA angezeigt, das dazu verwendet wurde, Peripheriebausteine zu sperren. VMA bedeutet "Valid Memory Address gleich gültige S p e i c h e r a d r e s s e " . Für VMA = HIGH waren die Adreßleitungen gültig; bei VMA = LOW waren sie

82

3

Hardware

ungültig. Der Prozessor 6809 kennt dieses Signal n i c h t , s o n d e r n s e n d e t in den T a k t e n , in d e n e n e r w e g e n interner V o r g ä n g e den Bus n i c h t b e n ö t i g t , die Adresse $ F F F F , also l a u t e r H I G H - Z u s t ä n d e auf den A d r e ß l e i t u n g e n a u s . Das R/W-Signal ist d a b e i HIGH (Lesezyklus). Auf der A d r e s s e $ F F F F liegt d a s L O W - B y t e d e r S t a r t a d r e s s e , auf das der Prozessor n o r m a l e r w e i s e nur im F a l l e eines RESET z u g r e i f t . Dann ist jedoch die S t a t u s l e i t u n g BS = HIGH (Bild 3 - 2 1 ) . Bild 3 - 2 6 zeigt e i n e S c h a l t u n g und das d a z u g e h ö r i g e Z e i t d i a g r a m m , um diese Buszyklen f ü r a n d e r e Z w e c k e verfügbar zu m a c h e n . Das VMA-Signal ist d a n n LOW, wenn im n o r m a l e n B e t r i e b (BA = BS = LOW) in einem Lesezyklus ( R / W = HIGH) die Adresse $ F F F F (A0 bis A I 5 = HIGH) dann a u f t r i t t , w e n n die A d r e ß - und S t e u e r l e i t u n g e n s t a b i l sind (E oder Q = HIGH). Durch die b e i d e n z e i t l i c h versetzten T a k t e E und Q wird der S p e i c h e r zyklus in vier V i e r t e l t a k t e (Q1 bis Q4) u n t e r t e i l t . Bei e i n e m 1 - M H z - S y s t e m finden a l l e Ü b e r g ä n g e (Änderungen) auf den A d r e ß - und S t e u e r l e i t u n g e n im Takt Q1 s t a t t ; in den T a k t e Q2 bis Q4 sind die Signale s t a b i l . B e r ü c k s i c h t i g t man noch d a s Signal BA (Bus verfügbar) so kann man e n t s p r e c h e n d Bild 3 - 2 7 ein S t e u e r s i g n a l e r z e u g e n , das den Z e i t r a u m g ü l t i g e r Adressen a n z e i g t . Speicherzyklus . —

Q1

I Q2 I Q 3

Busfreigabe

I QA

I

BA 0 0 0 0 1

BA

AB

-L

JL

Adresse gültig

1=

>

Bus tri state

AS

Bild 3-27:

•t

E 0 0 1 1 X

e-T> 1

Q

q AS 0 1 0 1 X

1 0 0 0 1

halten

- AS

BA-

S t e u e r s i g n a l f ü r gültige Adressen

AS b e d e u t e t " A d d r e s s S t r o b e gleich A d r e ß - S t e u e r s i g n a l " . Es ist aktiv LOW, d.h. es zeigt mit seinem L O W - Z u s t a n d an, daß die am Adreßbus anliegende Adresse gültig ist. Bei Bedarf k ö n n t e noch das VMA-Signal (Bild 3 - 3 5 ) mit v e r w e n d e t w e r d e n . In vielen F ä l l e n wird der Takt E = HIGH allein a l s A d r e ß - S t e u e r s i g n a l verwendet; d e r A d r e ß b u s s t e h t dann f ü r den T a k t E = LOW e x t e r n e n E i n h e i t e n wie z.B B i l d s c h i r m - S t e u e r b a u s t e i n e n und d y n a m i s c h e n Speichern zu V e r f ü g u n g .

3.3 Der Mikroprozessor 6809

Schreibzyklus-

Lesezyk1us-

83

Busfreigabe

R/W

BA

DB

/ Daten vom ~ \ Speicher

\

vom ßDaten Prozessor

DS

RD

WR

Bild 3-28:

Steuersignale für gültige Daten

Auch für den Datenbus lassen sich besondere Steuersignale entsprechend Bild 3-28 erzeugen. DS bedeutet "Data Strobe gleich Daten-Steuersignal". Es zeigt mit seinem LOW-Zustand an, daß der Datenbus gültige Daten f ü h r t . Verknüpft man dieses Signal noch mit R/W, so entstehen das Lesesignal RD und das Schreibsignal WR, die durch einen LOW-Zustand den Zeitraum anzeigen, in denen Daten g e lesen oder geschrieben werden. Sie werden wie die entsprechenden Steuersignale der Prozessoren 8085 und Z80 für die Steuerung der Speicherbausteine verwendet. Die Peripheriebausteine der Familien 68xx und 65xx sind f ü r die Steuersignale E (Takt) und R/W ausgelegt. Andere Peripheriebausteine (TTL, A/D- und D/A-Wandler sowie die 80xx-Familie) benötigen die getrennten Leseund Schreibsignale KD und WR.

84

3

3.3.4

Hardware

Die Betriebszustände Reset und Interrupt

Nach dem Einschalten der Versorgungsspannung laufen im Prozessor zunächst Einschwingvorgänge ab. Daher muß der Reset-Eingang mindestens 100 ms lang auf LOW (0,8 V) gehalten werden. Das HIGH-Potential des Reset-Eingangs liegt im Gegensatz zu allen anderen Eingängen bei +4,0 V. Die einfachste Anlaufschaltung besteht aus einem RC-Glied (C = 22 pF gegen Masse und R = 3 KOhm gegen +5 V). Der Zustand der R e s e t - und Interruptleitungen wird mit jeder fallenden Flanke des Taktes Q gespeichert und ausgewertet. Bild 3-29 zeigt den Ablauf des Reset-Betriebszustandes während der Ausführung eines Programms. Reset bedeutet Zurücksetzen auf einen Anfangszustand.

r r| il r n rl r M n n n n rl n p n n n n n n n n n n nR /

RES

AB xxxx xxxx xxxx XXXX xxxx FFFE FFFE FFFE FFFE FFFE FFFE FFFF FFFF PC+O DB XX R/U I

BA

XX

XX

XX

XX

PCL

1 1

PCL

PCL

PCL

BS

Bild 3-29:

PCL

PCL

PCH

PCH

XX

1 Ablauf des Reset-Betriebszustandes

Mit der fallenden Flanke des Taktes Q (Zeitpunkt l ) erkennt der Prozessor den LOW-Zustand des Reset-Einganges. Der laufende Befehl wird abgebrochen, ohne daß wie bei einem Interrupt Register g e r e t t e t werden. Während der nächsten drei Takte laufen im Prozessor interne Vorgänge ab, in denen der Prozessor den Bus mit Zwischenzyklen noch belegt (Zeitraum 2).

3.3 Der Mikroprozessor 6809

85

Ist anschließend die Reset-Leitung weiterhin LOW, so führt der Prozessor d a u ernd Lesezyklen auf die Speicherstelle $FFFE mit dem niederwertigen Teil der Startadresse aus. Die Zustandssignale BA und BS sind dabei LOW (Zeitraum 3).

Wird bei einer fallenden Flanke des Taktes Q ein HIGH-Zustand der R e s e t Leitung erkannt (Zeitpunkt 4), so g r e i f t der Prozessor nach zwei Zwischenzyklen auf die beiden Speicherstellen $FFFE und $ F F F F zu und holt sich die Startadresse, von der er nach einem weiteren VMA-Zyklus das Programm s t a r t e t . Während der beiden Zugriffe auf die Vektortabelle ist das Zustandssignal BS HIGH; dies ist der Unterschied zu einem VMA-Zyklus. Nach dem Reset befindet sich der Prozessor in folgendem Grundzustand: Das Direkt-Seitenregisten (Direct Page) hat den hexadezimalen Wert $00. Das bedeutet, daß bei der direkten Adressierung das höherwertige Byte der Adresse 00 ist. Das I-Bit und das F-Bit des Bedingungsregisters sind 1; damit sind die beiden Interrupts IRQ und FIRQ gesperrt. Der NMI-Interrupt bleibt so lange gesperrt, bis der Stapelzeiger geladen wurde.

In den meisten Anwendungen wird das Reset-Signal gleichzeitig den Peripheriebausteinen zugeführt, die damit ebenfalls in einen Grundzustand versetzt w e r den. Bei einem Reset der Peripheriebausteine werden alle Register dieser Bausteine in einen Anfangszustand gebracht, in den meisten Fällen gelöscht. Im Gegensatz dazu werden bei einem Reset des Prozessors nur das Befehlszählregister mit der Startadresse, das Direkt-Seitenregister mit $00 und das I- und F-Bit des Bedingungsregister mit 1 geladen. Alle anderen Register (Akkumulatoren, Indexregister, Stapelzeiger, Bedingungsbits) sind nach einem Reset in einem nicht vorhersehbaren Anfangszustand. Im Gegensatz zu den anderen Betriebszuständen Interrupt und Halten wird der laufende Befehl nicht zuende g e f ü h r t , sondern abgebrochen. Bei einem Interrupt dagegen wird der laufende Befehl zuende g e f ü h r t . Die Register werden in den Stapel g e r e t t e t , so daß das unterbrochene Programm ohne Verlust von Daten an der alten Stelle fortgesetzt werden kann. Bild 3-30 zeigt ein Modell der R e s e t - und Interruptsteuerung des Prozessors 6809. Das Reset-Signal wurde bereits behandelt. Es bringt den Prozessor in einen Grundzustand und s t a r t e t ein Programm, dessen Anfangsadresse auf den Speicherstellen $FFFE und $FFFF liegen muß. Befindet sich der Prozessor bei e i nem Reset gerade im Halt-Zustand, so wird das Reset-Signal gespeichert und erst nach Beendigung des Halt-Zustandes ausgeführt. Der NMI-Interrupt bedeutet "Not Maskable Interrupt gleich nicht sperrbare Programmunterbrechung". Nach einem Reset bleibt jedoch der NMI-Interrupt

86

Bild 3-30:

3 Hardware

Modell d e r R e s e t - und I n t e r t u p t s t e u e r u n g des Prozessors 6809

bis zum L a d e n des S t a p e l z e i g e r s z.B. mit dem B e f e h l "LDS # $ " gesperrt, da d e r Stapelzeiger f ü r das R e t t e n d e s R e g i s t e r s a t z e s b e n ö t i g t wird. Das Signal ist negativ f l a n k e n g e s t e u e r t ; der L O W - Z u s t a n d muß j e d o c h m i n d e s t e n s einen T a k t a n d a u e r n . Der N M I - I n t e r r u p t r e t t e t a l l e R e g i s t e r mit Ausnahme des S S t a p e l z e i g e r s in den S t a p e l und setzt das E - B i t d e s B e d i n g u n g s r e g i s t e r s auf 1. E b e d e u t e t " E n t i r e gleich vollständig", weil a l l e R e g i s t e r g e r e t t e t w e r d e n . Das 1-Bit und das F - B i t des Bedingungsregisters w e r d e n g e s e t z t ; d a m i t w e r d e n die I n t e r r u p t s IRQ und FIRQ g e s p e r r t . Die S t a r t a d r e s s e des N M I - I n t e r r u p t p r o g r a m m s wird von den S p e i c h e r s t e l l e n $FFFC und $ F F F D g e h o l t . Der N M I - I n t e r rupt wird während des H a l t - Z u s t a n d e s nicht a u s g e f ü h r t , sondern bleibt bis zum Ende des Z u s t a n d e s g e s p e i c h e r t . Der F I R Q - I n t e r r u p t ist L O W - z u s t a n d s g e s t e u e r t und kann durch das F - B i t des Bedingungsregisters g e s p e r r t w e r d e n . Ist das F - B i t 1, so ist der I n t e r r u p t g e s p e r r t ; bei 0 ist e r f r e i g e g e b e n . FIRQ b e d e u t e t " F a s t I n t e r r u p t R e q u e s t gleich s c h n e l l e A n f o r d e r u n g einer P r o g r a m m u n t e r b r e c h u n g " , weil d i e s e r I n t e r rupt nur den Stapelzeiger und das B e d i n g u n g s r e g i s t e r in den S t a p e l r e t t e t und d a m i t s c h n e l l e r als die a n d e r e n I n t e r r u p t s a u s g e f ü h r t wird, die alle R e g i s t e r r e t t e n . Das E - B i t d e s Bedingungsregisters wird d a h e r bei der A n n a h m e des FIRQ auf 0 g e s e t z t . Das F - und das I-Bit werden 1 g e s e t z t , d a m i t s p e r r t d e r F I R Q den IRQ und auch sich s e l b s t . Die S t a r t a d r e s s e des F I R Q - I n t e r r u p t p r o g r a m m s b e f i n d e t sich auf den Adressen $ F F F 6 und $ F F F 7 .

3.3 Der Mikroprozessor 6809

87

Der I R Q - I n t e r r u p t ist L O W - z u s t a n d s g e s t e u e r t und kann durch eine 1 im I-Bit des Bedingungsregisters g e s p e r r t werden; bei 1 = 0 ist der I R Q - I n t e r r u p t f r e i gegeben. IRQ b e d e u t e t " I n t e r r u p t Request gleich Anforderung einer P r o g r a m m Unterbrechung". Da alle R e g i s t e r g e r e t t e t werden, s e t z t der I R Q - I n t e r r u p t das E-Bit auf 1. Das F - und das I-Bit werden e b e n f a l l s 1 g e s e t z t , d a m i t s p e r r t der IRQ den FIRQ und sich selbst. Die S t a r t a d r e s s e des I R Q - I n t e r r u p t p r o g r a m m s b e f i n d e t sich auf den Adressen $ F F F 8 und $ F F F 9 . Die Befehle SWI, SWI2 und SWI3 r e t t e n ähnlich wie die I n t e r r u p t - S i g n a l e die Register in den Stapel und s t a r t e n P r o g r a m m e , d e r e n Adressen wie in Bild 3 - 3 1 d a r g e s t e l l t im höchsten Adreßbereich anzuordnen sind. Der Befehl SWI setzt das I- und das F - B i t und s p e r r t d a m i t die beiden I n t e r r u p t s IRQ und FIRQ; die beiden anderen SWI-Befehle verändern diese beiden Maskenbits n i c h t .

Bild 3-31:

Adresse

Inhalt

$FFF0 $FFF 1 $FFF2 $FFF3 $FFF4 $FFF5 $FFF6 $FFF7 $FFF8 $FFF9 $FFFA $FFFB $FFFC $FFFD $FFFE $FFFF

reserviert reserviert SWI3-Adresse SWI3-Adresse SWI2-Adresse SWI2-Adresse FIRQ-Adresse FIRQ-Adresse IRQ-Adresse IRQ-Adresse SWI-Adresse SWI-Adresse NMI-Adresse NMI-Adresse RES-Adresse RES-Adresse

HIGH LOW HIGH LOW HIGH LOW HIGH LOW HIGH LOW HIGH LOW HIGH LOW

Tabelle der S t a r t v e k t o r e n

Mikrocomputer mit den Prozessoren der 6 8 x x - und auch 6 5 x x - F a m i l i e b e n ö t i gen also F e s t w e r t s p e i c h e r im oberen Adreßbereich, d a m i t beim Einschalten der Versorgungsspannung und im Falle eines I n t e r r u p t s die S t a r t v e k t o r e n vefügbar sind. Bild 3 - 3 2 zeigt den zeitlichen Ablauf eines I n t e r r u p t - B e t r i e b s z u s t a n des. Die f a l l e n d e Flanke des T a k t e s Q speichert die Zustände der I n t e r r u p t l e i t u n g e n (Zeitpunkt 1), die am Ende des laufenden Befehls vom Prozessor a u s g e w e r t e t werden. Ist der Interrupt a u f g e t r e t e n und f r e i g e g e b e n , so werden zunächst interne Vorgänge zuende g e f ü h r t ( Z e i t r a u m 2), in denen Teile des folgenden

88

3

Hardware

r n

r

n

.>200

FIRQ



\

t

t

AB xxxx

XXXX

Adr.

Adr.

FFFF

SP- 1

SP - 2

SP-3

FFFF

FFF6

FFF7

XX

XX

XX

XX

XX

PCL

PCH

CCR

XX

PCH

PCL

FFFF

PC+0

PC + 1

XX

XX

DB

R/W

< X/

\

XX

I t

BA

t BS

l Bild 3-32:

Ablauf e i n e s I n t e r r u p t - B e t r i e b s z u s t a n d e s (FIRQ)

B e f e h l s zwar g e h o l t , aber n i c h t mehr a u s g e w e r t e t w e r d e n . Es folgt d e r Z e i t raum 3, in dem der Prozessor seine R e g i s t e r in den S t a p e l r e t t e t . Das Beispiel zeigt den FIRQ, der nur den Befehlszähler und das Bedingungsregister r e t t e t ; bei den a n d e r e n I n t e r r u p t s k o m m e n noch d a s D - R e g i s t e r , die beiden I n d e x r e g i s t e r X und Y, der U - S t a p e l z e i g e r und d a s D i r e k t - S e i t e n r e g i s t e r dazu. Dann liest der Prozessor im Z e i t r a u m 4 d i e A d r e s s e des zu s t a r t e n d e n P r o g r a m m s ( S t a r t v e k t o r ) und s t a r t e t d a s I n t e r r u p t p r o g r a m m , das die Möglichkeit h a t , mit dem Befehl RTI wieder in das u n t e r b r o c h e n e P r o g r a m m z u r ü c k z u k e h r e n . RTI b e d e u t e t " R e t u r n f r o m I n t e r r u p t gleich Rückkehr aus einem U n t e r b r e c h u n g s p r o g r a m m " . Dieser B e f e h l l ä d t die g e r e t t e n R e g i s t e r wieder zurück und s e t z t das u n t e r b r o c h e n e Programm f o r t . Mit Hilfe der I n t e r r u p t e i n g ä n g e ist es möglich, wichtige und z e i t k r i t s c h e S i g nale schneller als durch A b f r a g e von P e r i p h e r i e b a u s t e i n e n a u s z u w e r t e n . Die R e a k t i o n s z e i t vom A u f t r e t e n des I n t e r r u p t s i g n a l s bis zum S t a r t des I n t e r r u p t p r o g r a m m s b e t r ä g t im u n g ü n s t i g s t e n Fall e t w a 40 T a k t e , das sind 40 |us bei einem T a k t von 1 MHz. Sie setzt sich z u s a m m e n aus 20 T a k t e n f ü r den l ä n g s t e n B e f e h l (SWI2 bzw. SWI3), 3 Z w i s c h e n t a k t e n für i n t e r n e V o r g ä n g e , 13 T a k ten zum R e t t e n d e r R e g i s t e r (NMI bzw. IRQ), 3 T a k t e n f ü r das L a d e n d e r S t a r t a d r e s s e und 1 T a k t zum Holen des F u n k t i o n s c o d e s des e r s t e n B e f e h l s . Bild

3.3 Der Mikroprozessor 6809

b. Schnittstellen

Bild 3-33:

89

c. Steuerbaustein

Schaltungen zur Interruptauslösung

3 - 3 2 zeigt den günstigsten Fall. Liegen mehrere Interruptsignale gleichzeitig a n , so werden sie mit der Rangfolge ( P r i o r i t ä t ) R e s e t , NMI, FIRQ und IRQ a u s g e f ü h r t . Bild 3 - 3 3 zeigt m e h r e r e Schaltungen, die zur Auslösung von I n t e r ruptsignalen dienen können. Bild 3 - 3 3 a zeigt die Auslösung eines I n t e r r u p t s durch einen e n t p r e l l t e n T a s t e r , der direkt an den NMI-Interrupteingang angeschlossen ist. Da bei j e d e m I n t e r r u p t ein b e s t i m m t e s Programm g e s t a r t e t werden muß, kann der Prozessor das Signal s o f o r t identifizieren und die e n t s p r e c h e n d e S t a r t a d r e s s e holen. Bild 3-33b zeigt die Auslösung eines I R Q - I n t e r r u p t s über zwei P e r i p h e r i e b a u s t e i n e , deren Interruptausgänge parallel g e s c h a l t e t sind. Die S e r i e n s c h n i t t stelle 6850 kann so p r o g r a m m i e r t w e r d e n , daß sie einen Interrupt a u s l ö s t , wenn ein Zeichen gesendet oder e m p f a n g e n wurde. Die P a r a l l e l s c h n i t t s t e l l e 6821 kann so p r o g r a m m i e r t w e r d e n , daß eines von vier Steuersignalen einen Interrupt

90

3 Hardware

auslöst. Die I n t e r r u p t q u e l l e n werden in Zustandsflipflops der Schnittstellen g e s p e i c h e r t . Das I n t e r r u p t p r o g r a m m muß durch Lesen dieser Anzeigen p r ü f e n , welches Signal oder Ereignis den Interrupt ausgelöst h a t . Bild 3-33c zeigt die Auslösung eines F I R Q - I n t e r r u p t s über einen I n t e r r u p t Steuerbaustein (6828), der den Steuersignalen eine Priorität (Vorrrang) zuordnet und der gleichzeitig die Startadressen der I n t e r r u p t p r o g r a m m e aus einem besonderen EPROM auf den Datenbus legt, so daß das Identifizieren der I n t e r ruptquelle e n t f ä l l t .

3.3.5

Die Betriebszustände Halten und Warten

Die in diesem Abschnitt kurz erklärten Betriebszustände Halten und Warten werden in e i n f a c h e n Mikrorechnern nicht v e r w e n d e t . Für die p r a k t i s c h e Anwendung sollten die U n t e r l a g e n der Hersteller herangezogen werden. Bild 3 - 3 4 zeigt den Ablauf des Halt-Betriebszustandes.

alte r

Bef eh l - i

neue r

L

l e t z t e r Leerzyklus Zyklus

Lee r-

Wart e z y k l e n

Bef e h l

Code

Zyklus 'holen

r r n r r rr r n n n nr P n n n nn r

\

:

n

XXXX XXXX XXXX

XX

1f

Bild 3-34:

XX

! XXXX XXXX XXXX

i i

XX

/

>—

1 1

—i

i

/

( |

/

(

\

j—

Ablauf des HALT-Betriebszustandes

XX

i

r

\

XX

XX

3.3 Der Mikroprozessor

6809

91

Ein LOW-Potential am HALT-Eingang bringt den Prozessor in einen Halt-Zustand, in dem er die Adreß- und Datenleitungen sowie die R/W-Leitung in den Tristate-Zustand bringt. Auf die Ausführung des laufenden Befehls folgt ein Übergangs- oder Leerzyklus (Dead Cycle), in dem die Leitungen tristate werden. Geht der HALT-Eingang wieder auf HIGH, so wird nach einem weiteren Übergangs- oder Leerzyklus das Programm mit dem nächsten Befehl fortgesetzt. Dieser Betriebszustand wird für eine Einzelbefehlssteuerung und für den Mehrprozessorbetrieb verwendet, da der Prozessor im Halt-Zustand den Bus dauernd freigibt, so daß andere Prozessoren oder Steuerbausteine den Bus belegen können. Bild 3-35 zeigt den Ablauf des DMA/BREQ-Betriebszustandes, in dem der Prozessor den Bus kurzzeitig wieder belegt.

BefehlsZyklus

Befehls Zyklus

BefehlsZyklus Leert — tnax Zyklus 1.

H

W a r t e z y k len



LeerZyklus

leerZyklus

LeerZyklus

_r r r r r n nrn n n n n r nn n n n n 14.

J.

AB

x x x x \—

! <

t

j

f

1-

C028 31 C02A 20

21 04

* BILD 4-77 FREQUENZMESSUNG $COOO ADRESSZAEHLER ORG START CLR $C881 STEUERREGISTER L0ESCHEN CLR $C883 STEUERREGISTER L0ESCHEN #$FF04 LDD AUSGABE PROGRAMMIEREN STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN $C882 STD DURCHLAUFZAEHLER LOOP LDX #31250 LDY FLANKENZAEHLER #0 * AUF ZUSTAND HIGH WARTEN $C882 LEITUNG PRUEFEN LOOP 1 LDA LOW: AUF HIGH WARTEN BPL L00P1 * MESSUNG BEGINNT MIT LEITUNG HIGH $C882 L00P2 CMPA 5 ZYKLEN: ALT MIT NEU VERGLEICHEN BEQ LOOP 3 3 ZYKLEN: BEIDE GLEICH KEINE AENDERUNG LDA $C882 5 ZYKLEN: UNGLEICH NEUEN ZUSTAND LESEN BMI L00P4 3 ZYKLEN: HIGH WAR STEIGENDE FLANKE * FALLENDE FLANKE ERKANNT: ZAEHLEN LEAV 5 ZYKLEN: ZAEHLEN 1 ,Y BRA L00R 5 3 ZYKLEN: DURCHLAUFZAEHLER

C02C 1E

11

L00P3

C02E 1E C030 30 C032 26

11 1F EA

L00P4 L00P5

cooo cooo C003 C006 C009 COOC COOF C012 C015

7F 7F CC FD CC FD 8E 108E

C881 C883 FF04 C880 0004 C882 7A12 0000

C019 B6 C01C 2A

C882 FB

C01E C021 C023 C026

C882 09 C882 06

C034 C036 C037 C039 C03B C03E

B1 27 B6 2B

1F 4D 27 C6 F7 20

Bild 4-77:

EXG

X,X

EXG x,x LEAX -1,x BNE L00P2 * ERGEBNIS AUSGEBEN TFR 20 Y,D TSTA 02 BEQ L00P6 FF LDB #$FF C880 L00P6 STB $C880 D2 BRA LOOP END

Frequenzmessung

8 ZYKLEN:

ZEITAUSGLEICH

8 ZYKLEN: ZEITAUSGLEICH 5 ZYKLEN: DURCHLAUFZAEHLER - 1 3 ZYKLEN. ZAEHLSCHLEIFE NACH D = A UND B REGISTER ZAEHLER GR0ESSER 254 ? N E I N : WERT AUSGEBEN JA: FEHLERMELDUNG NACH LEUCHTDIODEN NEUE MESSUNG

4.6 Programmschleifen

229

Für e i n e F r e q u e n z m e s s u n g werden e n t s p r e c h e n d Bild 4 - 7 7 nur die f a l l e n d e n Flanken innerhalb e i n e r vorgegebenen Meßzeit von 1 s g e z ä h l t . Nach der P r o g r a m m i e r u n g der P a r a l l e l s c h n i t t s t e l l e löscht das P r o g r a m m e i n e n F l a n k e n z ä h l e r im Y - R e g i s t e r und lädt e i n e n D u r c h l a u f z ä h l e r im X - R e g i s t e r mit e i n e m A n f a n g s w e r t , der aus der L a u f z e i t der f o l g e n d e n P r o g r a m m s c h l e i f e b e r e c h n e t w u r d e . Alle drei Zweige d e r S c h l e i f e b e n ö t i g e n 32 Zyklen; m u l t i p l i ziert mit dem D u r c h l a u f z ä h l e r 31 250 e r g e b e n sich 1 Million Z y k l e n . Bei 1 MHz e n t s p r i c h t dies einer Meßzeit von 1 Sekunde. Der Flankenzähler e r m i t t e l t also die Frequenz in der Einheit Hz. Die Messung beginnt mit e i n e m H I G H Z u s t a n d , der A k k u m u l a t o r A wird i m m e r mit dem l e t z t e n L e i t u n g s z u s t a n d g e laden. In der M e ß s c h l e i f e können drei F ä l l e a u f t r e t e n : 1. Der a u g e n b l i c k l i c h e Leitungszustand ist gleich dem vorhergehenden; es f i n det lediglich ein Z e i t a u s g l e i c h von 16 Zyklen s t a t t . 2. Der L e i t u n g s z u s t a n d h a t sich g e ä n d e r t ; d i e Leitung ist j e t z t HIGH. Der n e u e Z u s t a n d wird im Akku A g e s p e i c h e r t ; die s t e i g e n d e F l a n k e wird jedoch n i c h t g e z ä h l t . Es f i n d e t ein Z e i t a u s g l e i c h von 8 Zyklen s t a t t . 3. Der Leitungszustand h a t sich g e ä n d e r t ; die L e i t u n g ist j e t z t LOW. Dieser neue Z u s t a n d wird im Akku A g e s p e i c h e r t , und die f a l l e n d e Flanke wird g e zählt. Dieser l ä n g s t e Programmzweig b e n ö t i g t keinen Z e i t a u s g l e i c h . Nach 31 250 D u r c h l ä u f e n oder 1 Sekunde wird das Ergebnis a u s g e g e b e n . Da in dem vorliegenden Beispiel nur a c h t L e u c h t d i o d e n f ü r die Ausgabe zur V e r f ü gung s t e h e n , wird bei Frequenzen über 254 Hz a l s F e h l e r m e l d u n g $ F F a u s g e g e b e n . Eine b e s s e r e Lösung würde in d i e s e m Fall die Meßzeit v e r r i n g e r n . Bei der P e r i o d e n d a u e r m e s s u n g e n t s p r e c h e n d Bild 4 - 7 8 wird die Zeit zwischen zwei f a l l e n d e n F l a n k e n des Eingangssignals g e m e s s e n . Als A b t a s t r a t e wurde in dem vorliegenen Beispiel die Zeit von 1 ms zwischen zwei Messungen d e s L e i tungszustandes f e s t g e l e g t . In e i n e r b e s s e r e n Lösung w ü r d e das Programm s e l b s t t ä t i g den g ü n s t i g s t e n Abstand zwischen zwei A b t a s t u n g e n e r m i t t e l n . Die M i n d e s t a b t a s t z e i t von 16 Zyklen e n t s p r e c h e n d 16 ps wird d u r c h das U n t e r p r o g r a m m TIME künstlich auf 1 ms v e r l ä n g e r t . Die Messung beginnt mit d e r e r s t e n f a l lenden F l a n k e des Signals und wird d u r c h die n ä c h s t e f a l l e n d e F l a n k e b e e n d e t . Der im X - R e g i s t e r l a u f e n d e D u r c h l a u f z ä h l e r wird n a c h j e d e m Zählen auf e i n e n Überlauf a b g e f r a g t , der dann a u f t r i t t , wenn d e r Zähler n a c h dem E n d w e r t $ F F F F wieder auf Null g e h t . In diesem Fall sowie bei Ergebnissen g r ö ß e r a l s 254 wird als F e h l e r m e l d u n g auf den L e u c h t d i o d e n $ F F a u s g e g e b e n . Eine b e s s e r e Lösung w ü r d e in diesem Fall die A b t a s t r a t e v e r g r ö ß e r n . Die beiden P r o g r a m m b e i s p i e l e Bild 4 - 7 7 und 4 - 7 8 lassen sich mit T T L - I m p u l sen am Eingang der P a r a l l e l s c h n i t t s t e l l e zur Messung der Frequenz und d e r Periodendauer von R e c h t e c k s i g n a l e n v e r w e n d e t . Die N e t z f r e q u e n z von 50 Hz l i e f e r t einen sehr g e n a u e n und k o n s t a n t e n V e r g l e i c h s w e r t . Da der Prozessor

230

4 Einführung

in die maschinenorientierte

Programmierung

A b t a s t r a t e

II

I II 12

I II 3

I I

4 5 6 7

I I I

II

1

ms

I I I I I

u

t u

8 9 10 11 12 13 14 15 16 17 19 19

• ' — Z e i t zwischen 2 f a l l e n d e n Flanken

>'

t C000 C000 C003 C006 C009 C00C C00F C012 C015 C018 C01A C01D

7F 7F CC FD CC FD 8E 7D 2A 7D 2B

C881 C883 FF04 C880 0004 C882 0000 C882 FB C882 FB

C01F C021 C023 C025 C028

30 27 8D B6 2A

01 17 1C C882 F5

C02A C02C C02E C030 C033

30 27 8D B6 2B

01 OC 11 C882 F5

C035 C037 C038 C03A C03C C03F

1F 4D 27 C6 F7 20

02 FF C880 D1

C041 C043 C044 C046

86 4A 26 39

Bild 4 - 7 8 :

10

C2 FD

* BILD 4-78 MESSUNG DER PERIODENDAUER ORG ADRESSZAEHLER $COOO START CLR $C881 STEUERREGISTER LADEN CLR $C883 STEUERREGISTER LADEN LDD #$FF04 AUSGABE PROGRAMMIEREN STD $C880 EINGABE PROGRAMMIEREN LDD #$0004 $C882 STD LOOP LDX #0 ZEITZAEHLER LOESCHEN LOOP 1 TST $C882 LEITUNG TESTEN LOOP 1 BPL IST LOW L00P2 TST $C882 LEITUNG TESTEN BMI L00P2 IST HIGH * 1.FALLENDE FLANKE ERKANNT MESSUNG BEGINNT L00P3 LEAX 5 ZYKLEN: ZAEHLEN 1 ,x BEQ FEHL 3 ZYKLEN: UEBERLAUF ? BSR TIME 7 + 977 ZYKLEN: 1 MS TAKT LDA JC882 5 ZYKLEN: LEITUNG LESEN BPL • • L00P3 3 ZYKLEN: IST LOW * STEIGENDE FLANKE ERKANNT WEITER ZAEHLEN L00P4 LEAX 5 ZYKLEN: ZAEHLEN 1 ,x FEHL BEQ 3 ZYKLEN: UEBERLAUF ? TIME BSR 7 + 977 ZYKLEN: 1 MS TAKT LDA $C882 5 ZYKLEN: LEITUNG LESEN BMI L00P4 3 ZYKLEN: IST HIGH * 2. I-ALLENDE FLANKE ERKANNT MESSUNG BEENDET X,D TFR NACH A UND B REGISTER TS TA HIGH-BYTE TESTEN BEQ L00P5 IST NULL: AUSGEBEN FEHL #$FF LDB ZU GROSS: FF AUSGEBEN L00P5 STB $C880 AUSGEBEN BRA LOOP NEUE MESSUNG * UNTERPROGRAMM 977 ZYKLEN WARTEN TIME #194 LDA 2 ZYKLEN: ZAEHLER LADEN TIME1 DECA 2 ZYKLEN: ZAEHLER - 1 BNE TIME1 3 ZYKLEN: ENDE ? RTS 5 ZYKLEN: RUECKSPRUNG

Messung der Periodendauer

w ä h r e n d des A b l a u f e s von W a r t e - und Z ä h l s c h l e i f e n f ü r a n d e r e A u f g a b e n b l o k kiert i s t , w e r d e n diese A u f g a b e n in vielen Anwendungen T i m e r b a u s t e i n e n (z.B. 6840) oder Timern der P a r a l l e l s c h n i t t s t e l l e n (z.B. 6522 und 6532) ü b e r t r a g e n , die p a r a l l e l zum Prozessor a r b e i t e n .

231

4.6 Programmschleifen

4.6.5

Programmschleifen mit den Prozessoren 6800 und 6802

Befehl INCA INCB INX INS INC DECA DECB 0EX OES 0EC CMPA CMPB CBA CPX NOP

Bild 4 - 7 9 :

Mit

den

Operand

—HINZVC XXX XXX X

adresse

adresse adresse adresse adresse

XXX XXX XXX X X XXX xxxx xxxx xxxx XXX

Wirkung Erhöhe den Erhöhe den Erhöhe das Erhöhe den Erhöhe das Vermindere Vermindere Vermindere Vermindere Vermindere Vergleiche Vergleiche Vergleiche Vergleiche Tu nichts

Akku A um 1 Akku B um 1 X-Register um 1 Stapelzeiger um 1 adressierte Byte um 1 den Akku A um 1 den Akku B um 1 das X-Register um 1 den Stapelzeiger um 1 das adressierte Byte um 1 den Akku A mit dem adressierten Byte den Akku B mit dem adressierten Byte den Akku A mit dem Akku B das X-Register mit den beiden Bytes

Z ä h l - und V e r g l e i c h s b e f e h l e der P r o z e s s o r e n 6800/6802

in Bild 4 - 7 9 z u s a m m e n g e s t e l l t e n

Befehlen

lassen

sich d i e

gleichen

S c h l e i f e n w i e mit d e m Prozessor 6809 a u f b a u e n . A n s t e l l e d e r L E A - B e f e h l e h a ben d i e Prozessoren 6800 und 6802 Z ä h l b e f e h l e für d i e b e i d e n X

und S, die der Prozessor

beiden Akkumulatoren

6809 nicht

16-Bit-Register

k e n n t . A u c h d e r B e f e h l C B A , der

miteinander vergleicht, fehlt beim

durch d i e B e f e h l s f o l g e PSHS B und C M P A

S+ e r s e t z t

die

6809 und muß d o r t

werden.

232

4.6.6

4 Einflhrung in die maschinenorientierte Programmierung

Übungen zum Abschnitt Programmschleifen

Die Lösungen befinden sich im Anhang!

1.Aufgabe: Man e n t w i c k l e ein Unterprogramm, das 100 ms w a r t e t , und verwende es in einem Hauptprogramm, das einen um 100 ms verzögerten dualen Abwärtszähler auf den Leuchtdioden laufen läßt. Der S y s t e m t a k t b e t r a g e 1 MHz.

2.Aufgabe: Man lasse auf den Leuchtdioden einen unverzögerten Dualzähler von 1 bis 6 laufen, der nach seinem Endwert 6 wieder mit dem Anfangswert 1 beginnt. Steht der w e r t h ö c h s t e Kippschalter auf LOW, so soll der Zähler laufen. Ist er auf HIGH, so h a l t e der Zähler an und w a r t e auf seine F r e i g s b e durch ein L O W - S i g n a l . Da der Zähler zu einem zufälligen Zeitpunkt angehalten wird, e n t s t e h t ein Würfel. Mit dem gleichen V e r f a h r e n lassen sich Lottozahlen e r mitteln.

3.Aufgabe: Man e n t w i c k l e ein Programm, das nur die steigenden Flanken des w e r t n i e d r i g s ten Kippschalters B0 zählt und den Zähler auf den Leuchtdioden anzeigt. Der Ausgangszustand des S c h a l t e r s vor dem P r o g r a m m s t a r t sei LOW.

4.Aufgabe: Man lasse auf den Leuchtdioden einen Dualzähler laufen, der auf der w e r t n i e drigsten S t e l l e B 0 eine Frequenz von 4 4 0 Hz ( K a m m e r t o n A) ausgibt. Die P e riode b e t r ä g t 2 , 2 7 2 7 ms; die Wartezeit für das U m s c h a l t e n 1,136 ms. Durch Ankopplung eines L a u t s p r e c h e r s oder Oszilloskops kann die Frequenz k o n t r o l liert werden.

4.7 Die Adressierung

4.7

von Speicherbereichen

233

Die Adressierung von Speicherbereichen

Adressen sind "Hausnummern" von Speicherbytes oder von Schnittstellen des Mikrocomputers. Jeder Befehl besteht aus einem Code (was ist zu tun?) und aus einer Adresse (mit wem?). Bild 4 - 8 0 stellt die bisher behandelten e i n f a chen Adressierungsarten des Mikroprozessors 6809 zusammen.

__ — Code

Bild 4-80:

n (2.Byte) |

code-eigene Adressierung

Code

Konstante

Code

Konstante

Konstante

unmittelbare Adressierung (16 Bit)

Code

Adresse H

Adresse

absolute (extended) Adressierung

Code

Adresse L

unmittelbare Adressierung (8 Bit)

L

direkte Adressierung

Die einfachen Adressierungsarten des Prozessors 6809

Bei der code-eigenen Adressierung (Hersteller: inherent) enthält der Funktionscode, der eventuell um ein zweites Byte erweitert sein kann, die Namen der beteiligten Prozessorregister. Beispiele für diese Adressierungsart sind die Befehle CLRA und TFR A,B. Bei der unmittelbaren Adressierung (Hersteller: immediate) wird der Operand unmittelbar hinter dem Funktionscode im Befehl abgelegt. Beispiele sind die Befehle LDA #$55 und LDD #$FF04. Bei der absoluten Adressierung (Hersteller: extended) wird die Operandenadresse als volle 16-Bit-Zahl im Befehl angegeben. Beispiele sind die Befehle LDA $C882 und JMP $F800. Bei der direkten Adressierung (Hersteller: direct) wird nur der niederwertige Teil der Operandenadresse im Befehl angegeben; den höherwertigen Teil e n t nimmt die Befehlsablaufsteuerung dem D i r e k t - S e i t e n - R e g i s t e r . Ein Beispiel ist der Befehl LDA $C882, wenn mit der Assembleranweisung SETDP die D i r e k t Seiten-Adresse auf $C8 s t e h t . Bei der Ausführung des Befehls muß das Direkt Seiten-Register den Inhalt $C8 haben. Die genannten Adressierungsarten haben den Nachteil, daß die Operandenadresse bereits bei der Programmierung bekannt sein muß und daß sie sich während des Programmlaufes nicht mehr verändern läßt. Bild 4-81 zeigt das Adreß-

234

4 Einßhrung in die maschinenorientierte Programmierung

Datenspeicher Adresse Inhalt F000 F001 adr esse

Programmspeicher Adresse Inhalt C000 C001 konst.

Befehlszähler



Akku

Adreßrechenwerk

+1 / - 1 Adreßregister X , Y, U, S

Bild 4 - 8 1 :

Konstante

Das A d r e ß r e c h e n w e r k des M i k r o p r o z e s s o r s 6809

r e c h e n w e r k des M i k r o p r o z e s s o r s 6809, das b e r e i t s für die r e l a t i v e A d r e s s i e r u n g der V e r z w e i g u n g s b e f e h l e b e n u t z t wurde. Bei der werk

relativen A d r e s s i e r u n g ( H e r s t e l l e r : r e l a t i v e ) a d d i e r t das

zum

augenblicklichen

Stand

Adreßrechen-

des B e f e h l s z ä h l e r s e i n e n A b s t a n d

(Sprung-

w e i t e ) , der h i n t e r d e m F u n k t i o n s c o d e des B e f e h l s a b g e l e g t w u r d e . D i e S u m m e w i r d w i e d e r in das B e f e h l s z ä h l r e g i s t e r ü b e r n o m m e n und a d r e s s i e r t den nächsten B e f e h l . Der f o l g e n d e

Abschnitt

Datenspeicherstellen

berechnet.

z e i g t , w i e das A d r e ß r e c h e n w e r k A d r e s s e n von Dies

geschieht

mit

Hilfe

der

Adreßregister

X , Y , U und S, die 16 Bit lang sind und d a m i t eine volle S p e i c h e r a d r e s s e

auf-

nehmen können.

4.7.1

Bei

der

D i e indizierte Adressierung

indizierten

adresse nicht

Adressierung

(Hersteller:

indexed)

steht die

Operanden-

im B e f e h l , sondern in e i n e m I n d e x r e g i s t e r . Sie kann d a m i t

rend des P r o g r a m m a b l a u f e s

wäh-

g e l a d e n , b e r e c h n e t o d e r v e r ä n d e r t w e r d e n . In der

M a t h e m a t i k u n t e r s c h e i d e t man g l e i c h a r t i g e D i n g e ( E l e m e n t e e i n e r M a t r i x o d e r G l i e d e r e i n e r R e i h e ) durch e i n e Beizahl, den I n d e x . Bild 4 - 8 2 z e i g t als A n w e n dungsbeispiel d i e A u f g a b e , den Inhalt des Akkus A in e i n e n S p e i c h e r b e r e i c h von 256 B y t e s zu s p e i c h e r n . Bei V e r w e n d u n g der a b s o l u t e n A d r e s s i e r u n g w ä r e n dazu 256 den.

Speicherbefehle

e r f o r d e r l i c h , d i e s i c h l e d i g l i c h im

Adreßteil

unterschei-

4.7 Die Adressierung

von

Speicherbereichen

Adresse Inhalt FOOO F001 F002 F003 F004 i FOFF

FOOO/F001/F002... Indexregister

Datenadresse

55 55 55 55 55 i 1 55

55 Akku

Daten

256 /255 254.../O Y-Register

Durchlaufzäh ler

Bild 4 - 8 2 :

cooo cooo C002 C005 C009 COOB COOD COOF C012 C015 C100 C100 C106 FOOO F000

Adressierung eines S p e i c h e r b e r e i c h e s

F800 F81B 86 8E 108E A7 31 26 8E BD 7E

55 F000 0100 80 3F FA C100 F81B F800 46 04 0100

* BILD 4-83 MONI EQU AUST EQU ORG START LDA LDX LDY LOOP STA LEAY BNE LDX JSR JMP ORG TEXT FCC FCB ORG DATEN RMB END

ADRESSIERUNG EINES SPEICHERBEREICHES $F800 EINSPRUNG MONITOR SF81B UNTERPROGRAMM TEXTAUSGABE $C000 ADRESSZAEHLER BEFEHLE #$55 DATEN LADEN #DATEN ADRESSE DER SPEICHERBYTES LADEN #256 ZAHL DER SPEICHERBYTES LADEN X+ SPEICHERE INDIZIERT MIT X-•REGISTER ZAEHLER VERMINDERN -1 ,Y LOOP BIS ZAEHLERENDE #TEXT MELDUNG "FERTIG" AUSGEBEN AUST MIT MONITORUNTERPROGRAMM MONI SPRUNG ZUM MONITOR $C100 ADRESSZAEHLER KONSTANTEN 'FERTIG' 4 ENDEMARKE $F000 ADRESSZAEHLER VARIABLEN 256 256 BYTES RESERVIERT

ADR: 0 1 2 3 4 5 6 7 8 9 A B C D E F "F000 _ 55 - 55~55 _ 55"35 _ 55~55"35 _ 55 _ 55 - 55~S5'~55~S5~T5"T5 F010 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 F020 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 F030 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 F040 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55

Bild 4 - 8 3 :

P r o g r a m m b e i s p i e l f ü r eine I n d e x s c h l e i f e

UUUUUUUUUUUÜUUUU UUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUU

235

236

4 Einführung in die maschinenorientierte

Programmierung

Bei der Adressierung des Speicherbereiches benutzt man das X-Register als Zähler für die Datenadresse und lädt es vor Beginn der Schleife mit der Anfangsadresse des Bereiches ($F000). Das Y-Register enthält die Zahl der Bytes (256) als Durchlaufzähler. Die zu übertragenden Daten ($55) stehen als Kons t a n t e im Akku A. Der "neue" Befehl STA X+ legt den Inhalt des X-Registers als Datenadresse auf den Adreßbus und gleichzeitig den Inhalt des Akkus A auf den Datenbus. Das Zeichen "+" veranlaßt, daß das X-Register nach dem Aussenden der Adresse um 1 erhöht wird. Der erste Befehl adressiert also das Speicherbyte $F000, der folgende das Speicherbyte $F001, der nächste das Byte $F002 usw. Da der Durchlaufzähler im Y-Register bis auf Null h e r u n t e r gezählt wird, adressiert die Schleife den gesamten Speicherbereich von $F000 bis $F0FF. Nach Beendigung der Schleife gibt das Programm die Meldung "FERTIG" aus und springt in den Monitor zurück. Das Bild zeigt Teile eines Speicherauszugs (Dumps), der mit Hilfe des Monitors nach einem Testlauf des Programms gemacht wurde. Das Bitmuster 01010101 ($55) ist der ASCII-Code des Buchstabens "U". Der in Bild 4 - 8 4 dargestellte Ablauf des Befehls STA X+ setzt voraus, daß sich die Daten ($55) im Akku A und daß sich die Adresse der Datenspeicherstelle ($FOOO) im X-Register befinden. Der Befehl wird in sechs Zyklen ausgeführt: 1. Zyklus: Im ersten Zyklus holt sich der Prozessor das erste Byte des Funktionscodes in das Befehlsregister. 2. Zyklus: Während der Decodierung des Codes holt sich der Prozessor das folgende Byte mit der Code-Ergänzung in das Steuerwerk. 3. Zyklus: Die Decodierung des ersten Bytes ergab die Adressierungsart indiziert. Da das zweite Byte mit der Code-Ergänzung jetzt erst decodiert wird, holt sich der Prozessor vorsorglich noch ein Byte in das Steuerwerk, das aber bei der vorliegenden Adressierung nicht ausgewertet wird. 4. und 5. Zyklus: In diesen beiden VMA-Zyklen führt das Adreßrechenwerk die Adreßrechnung für das Indexregister durch. Die Erhöhung um 1 wird jedoch noch nicht wirksam. 6. Zyklus: In diesem Zyklus sendet der Prozessor noch den alten Inhalt des Indexregisters ($F000) auf dem Adreßbus aus und legt den Inhalt des Akkus A auf den D a t e n bus. Erst am Ende dieses Zyklus erhält das Indexregister den neuen Inhalt $F001.

4.7 Die Adressierung von

Adresse

COOO C002 C005

Inhalt

86 00 8E F0 00 A7 80

Name

Befehl

IDA LDX STA

Operand

#$55 #$F000 X+

1.Zyklus

2.Zyklus

3.Zyklus

4.Zyklus

5.Zyklus

6. Zyklus

I

I

I

l

I

i

FFFF

FFFF

C005

I A?

C006 | so

C007

237

Speicherbereichen

1Yy 1^

F000 155 P

—t

"L

' t

* t Bild 4-84:

Ablauf des Befehls STA X+ (indizierte Adressierung

Die indizierte Adressierung läßt sich auf die bereits bekannten Befehle LD, ST, CLR, INC, DEC, CMP, TST, ROL und ROR anwenden. Dabei wird das Ergebnis der Adreßrechnung auf dem Adreßbus ausgesendet. Bild 4 - 8 5 zeigt die LEA-Befehle, die das Ergebnis einer Adreßrechnung in ein 16-Bit-Register übertragen.

4 Einfuhrung in die maschinenorientierte Programmierung

238

Befehl LEAX LEAY LEAU LEAS

Bild 4 - 8 5 :

Operand EFHINZVC X ausdruck X ausdruck ausdruck ausdruck

Wirkung Lade das X-Register mit Lade das Y-Register mit Lade den U-Stapelzeiger Lade den S-Stapelzeiger

Ergebnis der Adreßrechnung Ergebnis der Adreßrechnung mit dem Ergebnis der Adr. mit dem Ergebnis der Adr.

Befehle zum Laden der effektiven Adresse

LEA bedeutet Load E f f e c t i v e Address gleich lade die e f f e k t i v e Adresse. Der B e f e h l läßt sich auf die vier Adreßregister X , Y , U und S als Empfangsregister anwenden. Als Operanden sind die in Bild 4 - 8 6 zusammengestellten Ausdrücke zulässig. Der Buchstabe " r " steht für eines der Adreßregister X , Y , U oder S.

Ausdruck r r+ r++ -r —r konst.r A,r B,r D,r

Bild 4 - 8 6 :

Wirkung Adresse steht im Register X, Y, U oder S; Registerinhalt unverändert Adresse steht im Register X, Y, U oder S, Registerinhalt danach + 1 Adresse steht im Register X, Y, U oder S, Registerinhalt danach + 2 Registerinhalt vorher - 1; Adresse steht im neuen Register X,Y,U o.S Registerinhalt vorher - 2; Adresse steht im neuen Register X,Y,U o.S Adresse ist Summe aus Konstante und Register X, Y, U oder S Adresse ist Summe aus Akku A und Register X, Y, U oder S Adresse ist Summe aus Akku B und Register X, Y, U oder S Adresse ist Summe aus Doppelakku D und Register X, Y, U oder S

Operandenausdrücke der indizierten Adressierung

Bei der indizierten Adressierung ohne Abstand können j e nach verwendetem Assembler verschiedenartige Ausdrücke gebildet werden. So z.B. LDA X oder LDA ,X oder LDA 0 , X . In allen drei Beispielen wird der Inhalt des Indexregisters unverändert auf den Adreßbus g e s c h a l t e t . Ein Pluszeichen ( " + " ) hinter dem Register bewirkt, daß der Inhalt des Registers nach Ausführung des Befehls um 1 erhöht wird ( a u t o - i n c r e m e n t ) . Zwei Pluszeichen erhöhen das R e g i s t e r um 2. Da die Erhöhung nach der Ausführung des Befehls e r f o l g t , heißt dies auch " P o s t - I n c r e m e n t " . Ein Minuszeichen ( " - " ) vermindert den Inhalt des Adreßregisters vor der Ausführung des Befehls ( a u t o - d e c r e m e n t ) . Zwei Minuszeichen vermindern das Register um 2. Da die Verminderung vor der Ausführung des B e f e h l s e r f o l g t , nennt man dies auch " P r e - D e c r e m e n t " . Der Inhalt der Adreßregister wird durch das Zählen verändert. Ein Beispiel ist der Befehl LDA X+, der in der Schleife des Bildes 4 - 8 3 das X - R e g i s t e r laufend um 1 erhöht. Bei der indizierten Adressierung mit einem konstanten Abstand wird der Abstand als vorzeichenbehaftete Dualzahl im Zweier-Komplement zu der im Adreßregister enthaltenen Zahl addiert und ergibt die e f f e k t i v e Adresse. Dabei bleibt der Inhalt des Adreßregisters unverändert im Gegensatz zum a u t o increment bzw. a u t o - d e c r e m e n t . Es gibt drei Arten von Konstanten. Konstan-

4.7 Die Adressierung von

Speicherbereichen

239

t e n im B e r e i c h von - 1 6 bis + 1 5 werden im 2 . B y t e des B e f e h l s a b g e l e g t . F ü r K o n s t a n t e n im B e r e i c h von - 1 2 8 bis + 1 2 7 wird e i n d r i t t e s B y t e a n g e l e g t . K o n s t a n t e n im B e r e i c h von - 3 2 7 6 8 bis + 3 2 7 6 7 l i e g e n in e i n e m d r i t t e n und v i e r t e n B y t e . Mit dem L E A - B e f e h l , der das E r g e b n i s e i n e r A d r e ß r e c h n u n g w i e d e r

in

ein A d r e ß r e g i s t e r ü b e r n i m m t , können K o n s t a n t e n zu den A d r e ß r e g i s t e r n a d d i e r t oder s u b t r a h i e r t w e r d e n . Ein B e i s p i e l ist d e r B e f e h l L E A Y - 1 , Y der S c h l e i f e , der das Y - R e g i s t e r um 1 v e r m i n d e r t . Bei

der

i n d i z i e r t e n A d r e s s i e r u n g mit e i n e m v a r i a b l e n A b s t a n d s t e h t der

s t a n d in e i n e m

der b e i d e n A k k u m u l a t o r e n

Ab-

A o d e r B o d e r im Doppelakku

Auch h i e r b l e i b t der Inhalt der A d r e ß r e g i s t e r unverändert e r h a l t e n . Mit

D.

dem

B e f e h l L E A , der das E r g e b n i s e i n e r A d r e ß r e c h n u n g w i e d e r in ein A d r e ß r e g i s t e r l ä d t , lassen s i c h d a m i t a r i t h m e t i s c h e O p e r a t i o n e n z w i s c h e n den A d r e ß r e g i s t e r n und den A k k u m u l a t o r e n d u r c h f ü h r e n . Das in Bild 4 - 8 7 d a r g e s t e l l t e T e s t p r o g r a m m Adressierung w ä h l t , der

z e i g t B e i s p i e l e für die i n d i z i e r t e

m i t und o h n e A b s t a n d . Als B e f e h l wurde der L E A Y - B e f e h l

das E r g e b n i s der A d r e ß r e c h n u n g in das Y - R e g i s t e r

wurde e s m ö g l i c h , die Wirkung der A d r e ß r e c h n u n g

lädt.

ge-

Dadurch

mit H i l f e des Monitors zu

v e r f o l g e n . Das Bild z e i g t a u c h die Ausführung des T e s t p r o g r a m m s im E i n z e l s c h r i t t . Die in K l e i n s c h r i f t a u s g e d r u c k t e n A s s e m b l e r z e i l e n wurden n a c h t r ä g l i c h in das P r o t o k o l l e i n g e f ü g t . Das P r o t o k o l l z e i g t den Inhalt der B e n u t z e r r e g i s t e r n a c h der Ausführung e i n e s B e f e h l s . B e i m S t a r t des P r o g r a m m s h a t der M o n i t o r die R e g i s t e r A, B , X , Y und U mit zeigt

binären

den B e f e h l

C000 COOO C003 C005 C007 C009 C00B C00D C00F

C011

C014 C017 C01B C01F C023 C025 C027 C029 C02B C02E C030

8E 31 31 31 31 31 31 31 31 31 31 31 31 86 31 C6 31 CC 31 20

Nullen g e l ö s c h t .

Die e r s t e

Zeile

des B i l d e s

(eingefügt)

in A s s e m b l e r s c h r e i b w e i s e , die z w e i t e Z e i l e z e i g t die

* B i l d 4-87 ORG START LDX 1000 LEAY 84 LEAY 80 LEAY 81 LEAY 82 LEAY 83 LEAY 03 LEAY 1D LEAY 88 64 LEAY 88 9C LEAY 89 03E8 LEAY 89 FC 18 LEAY 89 1000 LDA 10 LEAY 86 LDB 80 LEAY 85 LDD 1000 LEAY 8B BRA CE SUSI 1000 EQU END

TEST FUER $C000 #$1000 0,X 0,X+ 0.X++

o,-x

0,—X

3, X -3,X

100.X -100.X 1000.x -1000.x SUSI.X #$10 A.X #$80 B.X #$1000 D.X START $1000

Regi-

I N D I Z I E R T E ADRESSIERUNG ADRESSZAEHLER INDEXREGISTER LADEN OHNE ABSTAND OHNE ABSTAND X = X + 1 OHNE ABSTAND X = X + 2 X = X - 1 OHNE ABSTAND X = X - 2 OHNE ABSTAND POS 4-BIT-ABSTAND NEG 4 - B I T - A B S T A N D POS 7-BIT-ABSTAND NEG 7-BIT-ABSTAND POS 15-BIT-ABSTAND NEG 15-BIT-ABSTAND SYMBOLISCHE ADRESSE ( 1 5 - B I T - A B S T A N D ) ABSTAND IM AKKU A ABSTAND IM AKKU B ABSTAND IM DOPPELAKKU D TESTSCHLEIFE WERTZUWEISUNG

240

4 Einführung in die maschinenorientierte

C000 8 E 1 0 0 0 PC=

START

A=

B=

~ T 0 0 3 ~ T T 0 0 C003 3 1 PC=

A=

B=

A=

X=

B=

31

A=

" T 0 0 9 " T r o O C009 31 82 PC=

_

B= 0 0

A=

PC=

_

X=

Y=

U=

S=

LEAY

0,X»

Y=

U=

11010000 ABSTAND

DP_EFHINZVC 11010000

OHNE ABSTAND S=

LEAY

0,X»+

Y=

U=

LADEN

DPJFHINZVC

X = X •

11010000

OHNE ABSTAND S=

1

DP_EFHINZVC

DP

X = X 01010011001

a.

Bild 4 - 1 1 9 :

0101

0101

links

beginnend

b.

rechts

beginnend

Multiplikationsverfahren

Zähler 4

Produkt 00000000

cfooooodo

Mu 1 t i p i i k a t o r Bemerkung 0101 -- Multiplikand: 0101 Produkt schieben 0101 Bit testen 0: n i c h t a d d i e r e n Zähler - 1 Produkt schieben 0101 Bit testen 1: add i e r e n

t

3

«•

i

00000000 +0101 00000101 2

/

— t —

/

00001010

1

1 I i0 0 0 1 0 1 0i0

0101

t

0101 + 0101 00011001 0 00011001

Bild 4 - 1 2 0 :

V-

Zähler - 1 Produkt schieben Bit testen 0: n i c h t a d d i e r e n Zähler - 1 Produkt schieben Bit testen 1: a d d i e r e n Zähler - 1 Ergebni s

A b l a u f p l a n und Beispiel e i n e r Multiplikation

274

4 Einführung in die maschinenorientierte

Programmierung

Im G e g e n s a t z zur d e z i m a l e n Rechnung gibt es im Dualen nur zwei Möglichkeit e n : ist die S t e l l e des Multiplikators 0, so ist a u c h das Teilprodukt 0; ist die Stelle des M u l t i p l i k a t o r s 1, so ist d a s Teilprodukt gleich dem Multiplik a n d e n . Die T e i l p r o d u k t e sind vor dem Addieren jeweils um eine Stelle zu v e r s c h i e b e n . Bei d e r Multiplikation zweier 4 - B i t - Z a h l e n kann ein 8 - B i t - E r g e b n i s e n t s t e h e n . Bild 4 - 1 2 0 zeigt den Ablauf e i n e r Multiplikation, die mit dem w e r t h ö c h s t e n Bit des M u l t i p l i k a t o r s beginnt und d a s Produkt l a u f e n d n a c h links schiebt. Für die Multiplikation vierstelliger Dualzahlen des Beispiels sind vier S c h l e i f e n d u r c h l ä u f e e r f o r d e r l i c h . Das P r o d u k t r e g i s t e r wird vor der S c h l e i f e gelöscht und in der S c h l e i f e immer um 1 Bit n a c h links g e s c h o b e n . Dann wird jeweils das w e r t h ö c h s t e Bit des Multiplikators u n t e r s u c h t . Ist es 1, so wird der Multiplikand zum Produkt a d d i e r t , sonst n i c h t . Bild 4 - 1 2 1 zeigt ein nach diesem V e r f a h r e n a r b e i t e n d e s U n t e r p r o g r a m m , das zwei in den beiden Akkus ü b e r g e b e n e vorzeichenlose Dualzahlen zu einem 1 6 - B i t - P r o d u k t multipliziert, das im Doppelakku D z u r ü c k g e b r a c h t wird. Dieses U n t e r p r o g r a m m kann den MUL-Befehl ersetzen. Das das tors den Die

H a u p t p r o g r a m m lädt die beiden F a k t o r e n aus dem Speicher und bringt Produkt w i e d e r in den S p e i c h e r , so daß das P r o g r a m m mit Hilfe des Monig e t e s t e t w e r d e n kann. Das U n t e r p r o g r a m m legt die beiden F a k t o r e n und D u r c h l a u f z ä h l e r in den Stapel und löscht das Produkt im Doppelakku D. beiden B e f e h l e ASLB und ROLA schieben d a s Produkt im Doppelakku D

* BILD F 8 0 0 MONI cooo cooo C004

10CE C 8 0 0 F000 B6 F001 C 0 0 7 F6 COOA 8D 06 F002 C 0 0 C FD COOF 7E F800 C012 C014 C016 COI 8 C019 C01A C01B C01C C01E C020 C022 C024 C026 C028 C02A F000 F000 F001 F002

34

06

86 34 4F 5F

08 02

58 49 68 24 EB 89 6A 26 32 39

Bild 4 - 1 2 1 :

START

0001 0002

M U L T I P L I K A T I O N S P R O G R A M M 8 X 8 = 16 EINSPRUNG MONITOR $F800 ADRESSZAEHLER $C000 S - S T A P E L Z E I G E R LADEN #$C800 FAK1 FAK2

FAKTOR FAKTOR

1 AUS 2 AUS

SPEICHER SPEICHER

MUL8 PR0D MONI

BESSER: M U L -BEFEHL PRODUKT S P E I C H E R N

BIT

LADEN LADEN BEIM 6809

!!!

S P R U N G NACH MONITOR STATT M U L - B E F E H L * UNTERPROGRAMM D = A * B ERST B DANN A NACH S T A P E L A ,B MUL8 PSHS DURCHLAUFZAEHLER LDA #8 NACH S T A P E L A PSHS PRODUKT CLRA L0ESCHEN CLRB ASLB ROLA ASL BCC ADDB ADCA MUL82

63

0001

LDS LDA LDB BSR STD JMP

MUL81 61 04 62 00 E4 F2

4-121 EQU 0RG

FAK1 FAK2 PROD

DEC BNE LEAS RTS ORG RMB RMB RMB END

1 ,S MUL82 2,S #0 S MUL81 3 ,S $F000 1 1 2

PRODUKT 1 B I T NACH L I N K S S C H I E B E N M U L T I P L I K A N D IM S T A P E L

SCHIEBEN

C=0: NICHT ADDIEREN C = 1 : M U L T I P L I K A T O R A U S S T A P E L ZU LOW CARRY ZU H I G H ( A ) WEGEN 1 6 - B I T - A D D I T I O N Z A E H L E R IM S T A P E L V E R M I N D E R N NOCH K E I N E 8 D U R C H L A E U F E STAPELZEIGER WIEDERHERSTELLEN A D R E S S Z A E H L E R DATEN F A K T O R 1 VOR S T A R T L A D E N F A K T O R 2 VOR S T A R T L A D E N PRODUKT NACH ENDE K O N T R O L L I E R E N

Multiplikation nach dem S c h i e b e v e r f a h r e n

275

4.8 Datenverarbeitung

* BILD 4-122 16-BIT * 16-BIT MULTIPLIKATION EQU $F800 EINSPRUNG MONITOR F800 MONI ORG $C000 ADRESSZAEHLER C000 #$C800 COOO 10CE C800 START LDS STAPELZEIGER LADEN LDD C004 FC F000 FAKT1 ' FAKTOR 1 AUS SPEICHER LADEN LDX F002 FAKT2 FAKTOR 2 AUS SPEICHER LADEN C007 BE BSR MUL 16 16-BIT-MULTIPLIKATION C00A 8D 09 F004 STD PR0D PRODUKT HIGH SPEICHERN C00C FD STX PR0D+2 PRODUKT LOW SPEICHERN C00F BF F006 JMP MONI . SPRUNG ZUM MONITOR C012 7E F800 * UNTERPROGRAMM D * X = s STD 1 ,S C037 ED 61 TEILSUMME NACH STAPEL BCC MUL162 CARRY ? C039 24 02 INC J A : HOECHSTES BYTE ERHOEHEN C03B 6C E4 0,S MUL162 PULS C03D 35 X,A,B 16 32-BIT-PRODUKT AUS STAPEL LEAS C03F 32 4,S 64 STAPELZEIGER WIEDERHERSTELLEN C041 39 RTS RUECKSPRUNG ORG F000 $F000 DATENBEREICH FAKT1 RMB 2 F000 0002 FAKTOR 1 VOR START LADEN F002 0002 FAKT2 RMB 2 FAKTOR 2 VOR START LADEN 4 F004 0004 PR0D RMB PRODUKT NACH ENDE PRUEFEN END Bild 4-122: U n t e r p r o g r a m m

zur

16-Bit-Multiplikation

um

1 Bit nach links. D e r M u l t i p l i k a n d w i r d im S t a p e l g e s c h o b e n ; g e n a u s o

der

Zähler

im

Stapel

halt des S t a p e l z e i g e r s mit

der

holen

um

mit dem

Rücksprungbefehl

kann.

1 vermindert. Vor dem RTS

Befehl L E A S die

Rücksprung

muß der a l t e

3,S w i e d e r h e r g e s t e l l t

Rücksprungadresse

richtig

wird In-

werden, da-

aus d e m

Stapel

276

4 Einfährung in die maschinenorientierte

Programmierung

Das in Bild 4 - 1 2 2 g e z e i g t e B e i s p i e l e n t h ä l t ein U n t e r p r o g r a m m , das zwei v o r zeichenlose

1 6 - B i t - D u a l z a h l e n aus dem Doppelakku D und dem X - R e g i s t e r zu

e i n e m 3 2 - B i t - E r g e b n i s m u l t i p l i z i e r t . Das D - R e g i s t e r e n t h ä l t den h ö h e r w e r t i g e n T e i l des P r o d u k t e s ; das X - R e g i s t e r den n i e d e r w e r t i g e n T e i l . Das P r o g r a m m b i l det m i t H i l f e des M U L - B e f e h l s vier T e i l p r o d u k t e und a d d i e r t sie u n t e r B e r ü c k sichtigung

der

Stellenwertigkeit.

Da a l l e

Hilfsspeicherstellen

im

Stapel

ge-

h a l t e n w e r d e n , ist das U n t e r p r o g r a m m r e - e n t r a n t oder a b b r u c h f e s t .

4.8.9

Die Division

Divisionsbefehle erst

im

sind

Nachfolger

im

Prozessor

68000.

Die

6809 nicht

Division

vorhanden, d i e s e

kann im e i n f a c h s t e n

finden

sich

F a l l auf

eine

m e h r m a l i g e S u b t r a k t i o n zurückgeführt w e r d e n . D a b e i wird der Dividend so l a n ge um

den

Quotient

Divisor v e r m i n d e r t ,

gibt

an,

7 : 3 ergibt 7 Ergebnis

wie o f t 3 = 4 -

subtrahiert.

3 = 1 -

Der

bis s i c h e i n e n e g a t i v e D i f f e r e n z e r g i b t .

der Divisor im Dividenden e n t h a l t e n i s t .

Der

Beispiel:

3 = - 2 . Es wurde z w e i m a l ohne ein n e g a t i v e s

Quotient

ist

2; der

Rest

ist

1. Ein

Divisor

Null

gibt a l s S o n d e r f a l l U n e n d l i c h . Bild 4 - 1 2 3 zeigt e i n P r o g r a m m b e i s p i e l für e i n e D i v i s i o n s s c h l e i f e n a c h dem

* BILD 4-123 F800 MONI EQU cooo ORG cooo 10CE C800 START LOS C004 B6 F000 LDA F001 LDB C007 F6 04 COOA 34 PSHS TSTB COOC 5D OA COOD 27 BEQ COOF 5F CLRB E4 C010 AI CMPA LOOP C012 25 08 BL0 C014 AO E4 SUBA C016 5C INCB C017 20 F7 BRA FFFF FEHL C019 CC LDD C01C 32 61 FERT LEAS C01E 1 E 89 EXG FD F002 C020 STD F800 JMP C023 7E F000 ORG 0001 DEND F000 RMB 0001 DS0R F001 RMB 0002 ERG RMB F002 END

Bild 4 - 1 2 3 :

Subtraktionsverfahren.

DIVISIONSSCHLEIFE $F800 EINSPRUNG MONITOR ADRESSZAEHLER $C000 #$C800 S-STAPELZEIGER LADEN DIVIDENDEN AUS SPEICHER LADEN DEND DS0R DIVID0R AUS SPEICHER LADEN B B NACH STAPEL RETTEN DIVISOR AUF NULL TESTEN FEHL DIVISOR NULL QUOTIENTEN = ZAEHLER L0ESCHEN DIVIDENDEN MIT DIVISOR VERGLEICHEN S FERT DIVISOR KLEINER: FERTIG S DIVISOR GR0ESSER: DIVISOR ABZIEHEN QUOTIENTEN = ZAEHLER ERH0EHEN LOOP SCHLEIFE #$FFFF FEHLER: GR0ESSTEN WERT LADEN S = S+ 1 ALTEN STAPELZEIGER WIEDERHERSTELLEN 1 ,S QUOTIENT UND REST VERTAUSCHEN A,B ERGEBNIS SPEICHERN ERG MONI SPRUNG NACH MONITOR ADRESSZAEHLER DATEN $F000 DIVIDEND VOR START LADEN 1 1 DIVISOR VOR START LADEN QUOTIENT UND REST NACH ENDE KONTROLLIEREN 2

D i v i s i o n s c h l e i f e nach dem

Subtraktionsverfahren

Das P r o g r a m m holt die b e i d e n Operanden aus dem S p e i c h e r und prüft den Divisor auf setzt.

Null. Ist Der

Divisor

er

Null, so wird als F e h l e r m a r k e das E r g e b n i s $ F F wird

in e i n e

Hilfsspeicherstelle

im

Stapel

einge-

gebracht

und

dort für die l a u f e n d e S u b t r a k t i o n v e r w e n d e t . Die Q u o t i e n t bildet s i c h im Akku B; der Akku A e n t h ä l t n a c h Ablauf der S c h l e i f e den R e s t .

4.8 Datenverarbeitung

dezimal: dual:

43

:

3

00101011

:

0011

-

111

= 1 4

Rest

1

=1110

Rest 0001

0011

A neg:

ja! 00101 -

0011

Apos:

0010

J

00100 -

0011

Apos:

0001 00011 -

0011

Apos:

0000 -

A neg: Rest:

Bild 4 - 1 2 4 :

Zähler 4

00001 0011

0001 =>

Divisionsverfahren

C

Dividend Akku MQR 1011 0010

0

0101

/

A

/ neg

01 1 „

pos =0010 3 0

/

0100

01 i E

i

1 1 1u pos

=0001 2 0

1

001 1

1110

t

111u

pos

=0000 1 0

/

0001 0001

0

Bild 4 - 1 2 5 :

111I1J /

111K

neg

1110

0001 1110 Rest Quotient

Bemerkung D i v i s o r : 0011 T e s t s u b t r a k t i on Akku+MQR s c h i e b e n Testsubtraktion Divisor subtrahieren MQR D = anfangsadresse = endadresse (er) > G = startadresse (er) > S = anfangsadresse adresse wert -

lz

r

@ gibt adresse + 1 gibt adresse - 1 Eingabe , adresse + 1 beendet Kommando

Bild 6 - 1 3 : Terminalmonitor: Kommandos

Nach dem Anlauf des Systems meldet sich der Monitor mit dem Begrüßungstext "MONI-6809" und einem Eingabezeichen am linken Rand einer neuen Zeile. Der Benutzer gibt nun einen Kommandobuchstaben und Steuergrößen ein. Der Kennbuchstabe F (Fill, fülle) dient zum Füllen eines Speicherbereiches von einer Anfangsadresse bis zu einer Endadresse mit einem bestimmten Bitmuster, das als vierstellige Hexadezimalzahl einzugeben ist. Der Kennbuchstabe D (Display, Dump) dient zum Ausgeben eines Speicherbereiches von einer Anfangsadresse bis zu einer Endadresse. Es erscheinen immer 16 Bytes auf einer Zeile.

336

6 Serielle

Datenübertragung

Der K e n n b u c h s t a b e G ( G e h e , Go) s t a r t e t ein Programm a b einer einzugebenden S t a r t a d r e s s e . Ein Setzen von H a l t e p u n k t e n , eine P r o g r a m m v e r f o l g u n g im E i n z e l s c h r i t t und e i n e R e g i s t e r v e r w a l t u n g w i e bei handelsüblichen E n t w i c k l u n g s s y s t e men i s t bei dem vorliegenden Monitorprogramm nicht v o r g e s e h e n . Sie k ö n n t e n j e d o c h durch w e i t e r e K e n n b u c h s t a b e n e i n g e f ü h r t w e r d e n . Der K e n n b u c h s t a b e S ( S u b s t i t u t e , s c h r e i b e ) d i e n t zum Anzeigen und Ändern einzelner D a t e n b y t e s ab e i n e r einzugebenden A n f a n g s a d r e s s e . Auf e i n e r Zeile e r s c h e i n e n d i e Adresse und der alte Inhalt g e f o l g t von e i n e m S t r i c h . Es können vier U n t e r k o m m a n d o s v e r w e n d e t w e r d e n . Ein L e e r z e i c h e n e r h ö h t ohne Ä n d e rung d e r D a t e n die A d r e s s e um 1. Ein Minuszeichen v e r m i n d e r t ohne Änderung der D a t e n die Adresse um 1. Der a l t e Inhalt kann durch Eingabe e i n e r z w e i s t e l l i g e n Hexadezimalzahl g e ä n d e r t w e r d e n . Dabei wird die Adresse um 1 e r h ö h t . Ein Wagenrücklauf ( e r ) beendet das K o m m a n d o und k e h r t in den G r u n d z u s t a n d zurück.

S e r i e n s c h n i t t s t e l l e programmieren Meldung > ausgeben

Bereich Bereich Bytes Programm f ü l l e n ausgeb. eingeb. starten

Bild 6 - 1 4 :

Meldung

Terminalmonitor: Programmblockplan

Der in Bild 6 - 1 4 d a r g e s t e l l t e P r o g r a m m b l o c k p l a n zeigt e i n V o r l a u f p r o g r a m m , das d i e S c h n i t t s t e l l e p r o g r a m m i e r t und eine Meldung a u s g i b t , sowie eine S c h l e i f e , die die e i n g e g e b e n e n K o m m a n d o b u c h s t a b e n a u s w e r t e t . Bei f e h l e r h a f t e r Eingabe wird eine F e h l e r m e l d u n g a u s g e g e b e n . Fehler können sein ein nicht d e f i n i e r t e r K e n n b u c h s t a b e oder eine N i c h t - H e x a d e z i m a l z i f f e r bei der Eingabe von S t e u e r g r ö ß e n oder der Versuch, e i n e n N i c h t - R A M - B e r e i c h zu b e s c h r e i b e n . Das f o l g e n d e Programm wird nun in m e h r e r e n A b s c h n i t t e n e r k l ä r t . Bild 6 - 1 5 zeigt die T a b e l l e der Einsprungpunkte und U n t e r p r o g r a m m e . Ein Monitor soll den Benutzer bei seiner Arbeit u n t e r s t ü t z e n . Dazu g e h ö r t a u c h die B e r e i t s t e l l u n g von U n t e r p r o g r a m m e n f ü r die Eingabe und Ausgabe von D a t e n über S y s t e m s c h n i t t s t e l l e n ; davon wurde im K a p i t e l 4 über m a s c h i n e n o r i e n t i e r t e P r o g r a m m i e r u n g Gebrauch g e m a c h t . Muß das M o n i t o r p r o g r a m m im

337

6.4 Der Entwurf eines Terminalmonitors

* B I L D 6 - 1 5 TERMINALMONITOR TABELLE DER UNTERPROGRAMME DATRE EQU ACIA DATENREGISTER $C901 STARE EQU $C900 ACIA STEUER/STATUSREGISTER ORG $C000 ADRESSZAEHLER KALT LB RA START NEUSTARTADRESSE DES MONITORS WARM LBRA EINSPRUNGPUNKT MONITORSCHLEIFE LOOP AUSZH BRA AUSZ ZEICHEN AUS AKKU A AUSGEBEN AUSBH BRA AUSB AKKU A UMWANDELN UND I N 2 ZEICHEN AUSGEBEN AUSLH BRA AUSL LEERZEICHEN UND AKKU A UMGEW. AUSGEBEN A U S L I H BRA AUSLI L I N K E S HALBBVTE AKKU A UMWANDELN UND AUSGEB. AUSREH BRA AUSRE RECHTES HABLBBYTE AKKU A UMWANDELN UND AUSG. AUSAD AUSADH BRA NEUE Z E I L E LEEZEICHEN UND X UMGEW. AUSGEBEN AUSTH BRA AUST NEUE Z E I L E UND TEXT AUS (X) B I S EOF AUSGEBEN EIN ZEICHEN NACH AKKU A LESEN EINH LBRA EINHUH LBRA EINHU ZEICHEN LESEN UND IN AKKU A UMWANDELN EIN2 2 ZEICHEN LESEN UND NACH AKKU A UMWANDELN EIN2H BRA EIN4H BRA EIN4 4 ZEICHEN LESEN UND NACH D UMWANDELN

C901 C900 cooo cooo C003 C006 C008 COOA COOC COOE C010 C012 C014 C017 C01A C01C

16 16 20 20 20 20 20 20 20 16 16 20 20

00C8 00D9 62 48 3E 4E 50 23 0A OOA7 0089 71 63

*

Bild 6-15:

Laufe

der

auch die auch

T e r m i n a l m o n i t o r : Einsprungpunkte und U n t e r p r o g r a m m e

bei

Fertigung

Rechnermodells

geändert

w e r d e n , so können s i c h

S y s t e m u n t e r p r o g r a m m e verschieben. Um dem

verschiedenen

immer die gleichen wichtigen

eines

Adressen der

Versionen

und

Ausführungen

A d r e s s e n zu g a r a n t i e r e n , l e g t

Einsprungpunkte

eines

man a l l e

für den

w i e im Bild 6 - 1 5 in e i n e T a b e l l e

S p r u n g b e f e h l e n zu den e i g e n t l i c h e n

Benutzer

Rechnermodells Benutzer

mit u n b e d i n g t e n

U n t e r p r o g r a m m e n . Durch V e r w e n d u n g

der

r e l a t i v e n Adressierung auch bei den K o n s t a n t e n ist das v o r l i e g e n d e M o n i t o r p r o g r a m m v e r s c h i e b l i c h . Es kann also auf b e l i e b i g e n A d r e s s e n im S p e i c h e r Die

in Bild

mit dem

6-16 dargestellten

bereits bekannten

g r a m m . Das U n t e r p r o g r a m m Die

Anfangadresse

des

Ausgabe-Unterprogramme

Unterprogramm

bilden

A U S Z als z e n t r a l e m

ein

liegen. System

Ausgabepro-

A U S T gibt auf e i n e r neuen Z e i l e e i n e n T e x t aus.

Textes

wird

im X - R e g i s t e r

ü b e r g e b e n , am Ende

des

T e x t e s s t e h t als E n d e m a r k e das B y t e $04; im A S C I I - C o d e w i r d es als E O F f ü r End Of F i l e oder Ende des D a t e n s a t z e s b e z e i c h n e t . Das U n t e r p r o g r a m m d i e n t zur A u s g a b e e i n e r des X - R e g i s t e r s

A d r e s s e auf

in v i e r H e x a d e z i m a l s t e l l e n

ausgegeben.

A U S L und A U S B w a n d e l n den Inhalt des Akkus um und g e b e n diese aus.

Das

mit

Unterprogramm

Leerzeichen

ausgibt

Unterprogramme

und

AUSLI,

dann

Die

A in z w e i

H i l f e des U n t e r p r o g r a m m s AUSL

AUSAD

e i n e r neuen Z e i l e . Dabei w i r d d e r Inhalt Unterprogramme

Hexadezimalstellen

AUSZ

auf

dem

Terminal

ist dabei e i n Einsprungpunkt, der vorher

als

AUSRE

Unterprogramm und

AUSZ

AUSB weiterarbeitet.

bilden e i n e

K e t t e von d r e i

ein Die Ein-

sprungpunkten, die e n t w e d e r das linke H a l b b y t e oder das r e c h t e H a l b b y t e des Akkus A u m c o d i e r e n o d e r den Inhalt des Akkus A als Z e i c h e n a u s g e b e n .

D i e in Bild 6 - 1 7 d a r g e s t e l l t e n E i n g a b e - U n t e r p r o g r a m m e benutzen das C a r r y b i t als M a r k e f ü r e i n e f e h l e r h a f t e E i n g a b e . Das U n t e r p r o g r a m m

E I N A D gibt z u -

nächst ein Z e i c h e n " = " aus und e r w a r t e t d i e E i n g a b e von vier

Hexadezimalzif-

f e r n als A d r e s s e . Es b i l d e t mit den U n t e r p r o g r a m m e n E I N 4 und E I N 2 , die vier bzw. zwei

Bytes lesen, eine K e t t e

von Einsprungpunkten. Das U n t e r p r o g r a m m

E I N H U liest e i n e H e x a d e z i m a l z i f f e r ein und w a n d e l t s i e u m . Bei E i n g a b e e i n e r

338

6 Serielle Datenübertragung

C01E C020 C023 C025 C027 C029 C02B C02D C02F C031 C033

34 CC 8D 1F 8D A6 81 26 35 8D 20

16 OAOO 45 98 41 80 04 02 96 37 F4

C035 C037 C03A C03C C03E C040 C042 C044 C046 C048

34 CC 8D 1F 80 1F 8D 1F 80 35

06 0A0D 2E 98 2A 10 06 98 0A 86

C04A C04C C04E C050

34 86 8D 35

02 20 1A 02

C052 C054 C056 C058 C05A

34 8D A6 8D 35

02 06 E4 06 82

C05C C05D C05E C05F

44 44 44 44

C060 C062 C064 C066 C068

84 8B 81 23 8B

0F 30 39 02 07

C06A C06C C06F C071 C073 C075 C078

34 B6 84 27 35 B7 39

02 C900 02 F9 02 C901

* B I L D 6 - 1 6 TERMINALMONITOR AUSGABE-UNTERPROGRAMME * NEUE Z E I L E UND TEXT ,AUS ( X ) B I S EOF = 04 AUSGEBEN AUST PSHS A,B,X REGISTER RETTEN ZEILENVORSCHUB ( L F ) UND WAGENRUECKLAUF LDD #$OAOD ZEILENVORSCHUB BSR AUSZ TFR B,A WAGENRUECKLAUF BSR AUSZ AUST1 LDA X+ ZEICHEN LADEN CMPA #$04 ENDEMARKE DES TEXTES ? BNE AUST2 N E I N : AUSGEBEN PULS A , B , X , P C JA: REGISTER ZURUECK UNF RUECKSPRUNG AUST2 BSR AUSZ ZEICHEN AUSGEBEN BRA AUST1 * NEUE Z E I L E LEERZEICHEN UND X - R E G I S T E R ALS ADRESSE AUSGEBEN AUSAD PSHS A,B REGISTER RETTEN LDD #$0A0D ZEILENVORSCHUB UND WAGENRUECKLAUF BSR AUSZ TFR B,A BSR AUSZ TFR X ,D ADRESSE NACH DOPPELAKKU D BSR AUSL LEERZEICHEN UND 1. BYTE AUSGEBEN TFR B,A BSR AUSB 2»BYTE AUSGEBEN PULS REGISTER ZURUECK UND RUECKSPRUNG A.B.PC * L E E R Z E I C H E N UNS AKKU A UMGEWANDELT AUSGEBEN A AUSL PSHS ZEICHEN RETTEN LDA #$20 LEERZEICHEN AUSZ AUSGEBEN BSR A ZEICHEN ZURUECK PULS * AKKU A UMGEWANDELT AUSGEBEN AUSB PSHS A ZEICHEN RETTEN AUSLI L I N K E S HALBBYTE UMWANDELN UND AUSGEBEN BSR ZEICHEN IM STAPEL LESEN LDA S BSR AUSRE RECHTES HALBBYTE UMWANDELN UND AUSGEBEN PULS A,PC AKKU A ZURUECK UND RUECKSPRUNG * L I N K E S HALBBYTE AKKU A UMWANDELN UND AUSGEBEN AUSLI LS RA AKKU A 4 B I R RECHTS LS RA LSRA LSRA * RECHTES HALBBBYTE AKKU A UMWANDELN UND AUSGEBEN AUSRE ANDA #$0F MASKE 0000 1111 ADDA #$30 NACH A S C I I - Z E I C H E N CMPA #'9 BUCHSTABE ? BLS AUSZ N E I N : Z I F F E R AUSGEBEN ADDA #$07 JA: NACH BUCHSTABEN A - F UMWANDELN * Z E I C H E N AUS AKKU A AUSGEBEN AUSZ PSHS A ZEICHEN RETTEN AUSZ1 LDA STARE STATUSREGISTER LADEN ANDA #$02 MASKE 0000 0010 BEQ AUSZ 1 B1=0: SENDER VOLL PULS A B1=1: SENDER F R E I STA DATRE ZEICHEN NACH SENDER RTS *

Bild 6 - 16:

Terminalmonitor: Ausgabe- Unterprogramme

N i c h t - H e x a d e z i m a l z i f f e r w i r d das C a r r y b i t a u f 1 g e s e t z t . Im G e g e n s a t z zu d e n B i l d e r n 6 - 8 u n d 6 - 1 1 g i b t h i e r das U n t e r p r o g r a m m EIN d a s e i n g e l e s e n e Z e i c h e n im E c h o w i e d e r a u s .

6.4 Der Entwurf eines Terminalmoniton

C079 C07B C07D C07F

86 8D 86 8D

20 ED 3D E9

C081 C083 C085 C086 C088 C08A C08C

8D 24 39 1F 8D 1E 39

OA 01

C08D C08F C091 C093 C095 C097 C099 C09A C09B C09C C09D C09F C0A1

34 8D 25 1F 8D 25 58 58 58 58 E7 AA 35

04 12 OE 89 OC 08

C0A3 C0A5 C0A7 C0A9 C0AB C0AD C0AF COBO C0B2 C0B4 C0B6 C0B8 COBA COBB COBD

8D 81 22 81 25 80 39 81 22 81 25 80 39 1A 39

19 46 12 41 03 37

COBE C0C1 C0C3 C0C5 C0C8 COCA

B6 84 27 B6 8D 39

89 03 89

E2 EO 84

39 07 30 03 30 01 C900 01 F9 C901 AO

Bild 6 - 1 7 :

339

* BILD 6-17 TERMINALMONITOR EINGABE-UNTERPROGRAMME * LEERZEICHEN UND " = " AUSGEBEN UND ADRESSE NACH D LESEN C=1: FEHLER LEERZEICHEN EINAD LDA #$20 AUSGEBEN BSR AUSZ LDA ZEICHEN " = " #' = BSR AUSZ AUSGEBEN * 4 ZEICHEN LESEN UMWANDELN UND IN D UEBERGEBEN C=1: FEHLER EIN4 BSR EIN2 1. UND 2 . ZEICHEN LESEN UND UMWANDELN EIN41 BCC C=0: 3. UND 4 . BYTE LESEN RTS C=1: FEHLER WAR KEIN HEXAZEICHEN EIN41 TFR HI GH-ADRESSE NACH B RETTEN A,B BSR EIN2 3 . UND 4. BYTE LESEN EXG BEIDE TEILE VERTAUSCHEN A,B RTS RUECKSPRUNG * 2 ZEICHEN LESEN UND IN AKKU A UMWANDELN C=1: FEHLER EIN2 PSHS B AKKU B RETTEN BSR EINHU 1. ZEICHEN LESEN UND UMWANDELN BCS EINF C=1: FEHLER TFR A,B 4 BIT RETTEN BSR EINHU 2. ZEICHEN LESEN UND UMWANDELN BCS EINF C=1: FEHLER LSLB 1. ZEICHEN 4 BIT NACH LINKS LSLB LSLB LSLB NACH STAPEL STB -S ORA S+ MIT 4 RECHTES BITS MISCHEN EINF PULS B,PC AKKU B ZURUECK UND RUECKSPRUNG * HEXAZEICHEN LESEN UND UMWANDELN C=1: FEHLER EINHU BSR EIN ZEICHEN LESEN CMPA #'F GROESSER BUCHSTABE F ? EINHUF JA: FEHLER BHI CMPA #'A KLEINER BUCHSTABE A ? BLO JA: AUF ZIFFER TESTEN EINHU1 SUBA #$37 BUCHSTABE A-F DECODIEREN RTS EINHU1 CMPA #'9 GROESSER ZIFFER 9 ? BHI EINHUF JA: FEHLER CMPA #'0 KLEINER ZIFFER 0 ? BLO EINHUF JA-: FEHLER SUBA ZIFFER 0-9 DECODIEREN #$30 RTS EINHUF ORCC #$01 KONSTANTE 0000 0001 RTS C=1: FEHLER KEINE HEXAZIFFER * ZEICHEN NACH AKKU A LESEN UND IM ECHO AUSGEBEN EIN LDA STARE STATUS LESEN ANDA MASKE 0000 0001 #$01 BEQ EIN B0=0: KEIN ZEICHEN DA LDA DATRE 80=1: ZEICHEN LESEN IM ECHO AUSGEBEN BSR AUSZ RTS

Terminalmonitor:

Eingabe-Unterprogramme

340

COCB COCF C0D2 C0D5 C0D8 CODC CODF C0E3 C0E6 C0E8 COEC COEE COFO C0F4 C0F7 C0F9 COFB COFD COFF C101

6 Serielle Datenübertragung

10CE CC B7 F7 30 17 30 17 8D 30 6D 2A 30 17 20 A1 27 30 20 6E

C103 C10C C10D C10F C115 C116 C117 C119 C11A C11C C11D C11F C120 C122

C800 6311 C900 C900 8D 0027 FF3F 8D 002A FF38 D6 8D 002A 84 09 8D 001B FF27 E6 80 04 02 EB 94 4D 04 3E 46 04 46 C123 44 C14B 53 C173 47 C1B0 FF

Bild 6 - 1 8 :

C123 C126 C128 C12A C12D C12F C131 C134 C136 C138 C13A C13D C13F C141 C143 C145 C147 C149

17 25 1F 17 25 1F 17 25 34 ED 10A3 26 AC 23 35 20 35 20

Terminalmonitor:

FF53 C8 01 FF4C C1 02 FF45 BA 20 84 81 08 E4 F5 20 98 20 A5

Bild 6 - 1 9 :

* B I L D 6 - 1 8 TERMINALMONITOR HAUPTPROGRAMM START LOS #$C800 STAPELZEIGER LADEN LDD #$6311 STEUERBVTES A C I A STA STARE A C I A RESET STB STARE A C I A BETRIEBSART LEAX TEXT1,PCR T E X T : M 0 N I - 6 8 0 9 LBSR AUST AUSGEBEN LOOP LEAX TEXT2,PCR TEXT: EINGABEZEICHEN LBSR AUST AUSGEBEN BSR EIN BENUTZERKENNBUCHSTABEN FUER I LEAX TAB,PCR ANFANGSADRESSE SPRUNGTABELLE L00P1 TST X ENDEMARKE $FF TESTEN BPL L00P2 N E I N : K E I N E ENDEMARKE DA B7=l LOOPF LEAX TEXT3,PCR TEXT: FEHLER AUST AUSGEBEN LBSR BRA LOOP NEUE EINGABE L00P2 CMPA BUCHSTABEN VERGLEICHEN X+ BEQ L00P3 GEFUNDEN: SPRINGEN LEAX 2 ,X NICHT GEFUNDEN ADRESSE + 2 BRA WEITER SUCHEN L00P1 JMP L00P3 NACH KOMMANDO SPRINGEN [XJ * TEXTE UND SPRUNGTABELLE TEXT1 FCC 'MONI-6809' FCB 4 TEXT2 FCB '>,4 TEXT3 'FEHLER' FCC FCB 4 TAB FCB 'F FILL-KOMMANDO FKOM FDB 'D FCB DUMP-KOMMANDO DKOM FDB FCB 'S SUBSTITUTE-KOMMANDO FDB SKOM FCB 'G GO-KOMMANDO GKOM FDB FCB $FF ENDEMARKE

Hauptprogramm

* B I L D 6 - 1 9 TERMINALMONITOR BEREICH FUELLEN ANFANGSADRESSE LESEN EINAD FKOM LBSR FEHLER. K E I N E HEXAZAHL LOOPF BCS ANFANGSADRESSE NACH X TFR D,X EINAD ENDADRESSE LESEN LBSR LOOPF FEHLER: K E I N E HEXAZAHL BCS ENDADRESSE NACH Y D,Y TFR EINAD 2-BYTE-MUSTER LESEN LBSR FEHLER: K E I N E HEXAEINGABE LOOPF BCS ENDADRESSE NACH STAPEL Y PSHS X MUSTER SPEICHERN FK0M1 STD GESPEICHERTEN WERT VERGLEICHEN X++ CMPD FKOMF FEHLER: UNGLEICH K E I N RAM BNE S LAUFENDE ADRESSE M I T ENDADRESSE CMPX FK0M1 K L E I N E R : WEITER BLS Y GROESER PULS BRA NEUE EINGABE LOOP FEHLERAUSGANG FKOMF PULS Y FEHLERMELDUNG BRA LOOPF

T e r m i n a l m o n i t o r : Bereich füllen

VERGLEICHEN

341

6.4 Der Entwurf eines Terminalmonitors

Das in Bild 6 - 1 8 d a r g e s t e l l t e mit einem

Anfangswert

im

Hauptprogramm

RAM-Bereich

Meldung aus. Um das Programm

lädt den

System-Stapelzeiger

des Benutzers und gibt dann e i n e

verschieblich zu g e s t a l t e n , wurde mit dem

B e f e h l L E A X T E X T , P C R die befehlszählerrelative

Datenadressierung

gewählt.

Die V e r a r b e i t u n g s s c h l e i f e LOOP gibt auf dem Bildschirm e i n e Marke aus, hinter der der Benutzer mit einem Kennbuchstaben das auszuführende Kommando a u s wählt.

Die

Verzweigung

Sprungtabelle, ausdehnen

in

die vier Kommandos

geschieht

mit

Kennbuchstaben

und

Kommandos

und Sprungtabelle liegen hinter dem

unbedingten

die sich leicht auf

l ä ß t . Die T e x t e

weitere

Hilfe

einer

Sprungbefehl. Das in Bild 6 - 1 9 d a r g e s t e l l t e F - K o m m a n d o wird mit dem Kennbuchstaben " F " für Fill gleich Fülle a u f g e r u f e n . Es füllt einen S p e i c h e r b e r e i c h von einer Anfangsadresse bis zu e i n e r Endadresse mit einem B i t m u s t e r aus 16 h e x a d e z i mal einzugebenden B i t s . Es wird vorzugsweise dazu verwendet, nach dem E i n s c h a l t e n der Versorgungsspannung den R A M - S p e i c h e r mit einem Anfangswert zu füllen. Durch V e r g l e i c h e n des e i n g e s c h r i e b e n e n W e r t e s kontrolliert das Programm, ob der S p e i c h e r b e r e i c h b e s c h r e i b b a r i s t .

C14B CHE C150 C152 C154 C157 C159 C15B C15D C160 C162 C164 C167 C168 C16A C16C C16E C170

17 25 C4 1F 17 25 CA 34 17 C6 A6 17 5A 26 AC 23 35 16

FF2B AO F0 01 FF22 97 OF 06 FED5 10 80 FEE3 F8 E4 EF 06 FF6C

Bild 6 - 2 0 :

* BILD 6-20 DK0M LBSR BCS ANDB TFR LBSR BCS ORB PSHS DK0M1 LBSR LDB DK0M2 LDA LBSR DECB BNE CMPX BLS PULS LBRA

TERMINALMONITOR BEREICH AUSGEBEN EINAO ANFANGSADRESSE LESEN L00PF FEHELR: KEINE HEXAZAHL #$F0 ANFANGSADRESSE ABRUNDEN NACH X-REGISTER D,X EINAD ENDADRESSE LESEN L00PF FEHLER: KEINE HEXAZAHL #$0F ENDADRESSE AUFRUNDEN A,B ENDADRESSE NACH STAPEL AUSAD NEUE ZEILE UND ADRESSE AUSGEBEN #16 16 BYTES PRO ZEILE X+ BYTE LADEN AUSL LEERZEICHEN UND BYTE AUSGEBEN ZAEHLER - 1 DK0M2 S LAUFENDE ADRESSE MIT ENDADRESSE DK0M1 A,B REGISTER ZURUECK LOOP VERARBEITUNGSSCHLEIFE

T e r m i n a l m o n i t o r : B e r e i c h ausgeben

Das in Bild 6 - 2 0 d a r g e s t e l l t e D - K o m m a n d o wird mit dem Kennbuchstaben " D " für

Dump

gleich

Speicherauszug

a u f g e r u f e n . Es gibt einen

Speicherbereich

hexadezimal von einer Anfangsadresse bis zu einer Endadresse auf dem T e r m i nal aus. Dabei erscheinen immer 16 B y t e s auf einer Z e i l e . Am Anfang der Z e i le s t e h t die Adresse des e r s t e n B y t e s . Das in Bild 6 - 2 1 d a r g e s t e l l t e S - K o m m a n d o wird mit dem Kennbuchstaben

"S"

für Substitute gleich e r s e t z e a u f g e r u f e n . Es gibt zunächst die Adresse und den Inhalt des adressierten B y t e s g e f o l g t von einem " - " auf einer neuen Zeile aus.

342

6 Serielle

C173 C176 C17A C17C C17F C181 C184 C186 C189 C18C C18E C190 C192 C194 C197 C199 C19B C19D C19F C1 AI C1A3 C1A5 C1A7 C1A9 C1AD

17 1025 1F 17 A6 17 86 17 17 25 A7 AI 27 16 81 26 30 20 81 26 30 20 81 1027 16

Datenübertragung

* BILD 6-21 TERMINALMONITOR BYTES ANZEIGEN UND EINGEBEN SK0M LBSR EINAD ANFANGSADRESSE LESEN L00PF LBCS FEHLER: KEINE HEXAEINGABE TFR D ,X ADRESSE NACH X-REGISTER SK0M1 LBSR AUSAD NEUE ZEILE UND ADRESSE AUSGEBEN LDA X ALTES BYTE LADEN AUSL LBSR UND MIT LEERZEICHEN AUSGEBEN LDA MARKE "-" # ' LBSR AUSZ AUSGEBEN LBSR EIN2 VERSUCH NEUES BYTE ZU LESEN KEIN HEXAZEICHEN; STEUERZEICHEN ? BCS SK0M2 STA X NEUES BYTE SPEICHERN CMPA X+ VERGLEICHEN OB ANGEKOMMEN BEQ SK0M1 GLEICH: NAECHSTES BYTE LBRA L00PF UNGLEICH: FEHLER KEIN RAM SK0M2 CMPA LEERZEICHEN ? #$20 NEIN: WEITER VERGLEICHEN BNE SK0M3 LEAX ADRESSE + 1 1 ,x BRA SK0M1 SK0M3 CMPA MINUSZEICHEN ? # ' BNE SK0M4 NEIN: WEITER SUCHEN LEAX ADRESSE - 1 -1 ,x BRA SK0M1 SK0M4 CMPA #$0D CR = WAGENRUECKLAUF ? LBEQ LOOP JA: ENDE DES KOMMANDOS LBRA L00PF NEIN: FEHLER

FF03 FF76 01 FEB6 84 FEC6 2D FEE1 FF01 09 84 80 E8 FF59 20 04 01 DD 2D 04 1F D5 OD FF32 FF40

*

T e r m i n a l m o n i t o r : B y t e s a n z e i g e n und e i n g e b e n

Bild 6 - 2 1 :

E n t s p r e c h e n d B i l d 6 - 1 3 sind nun vier U n t e r k o m m a n d o s m ö g l i c h . D a s P r o g r a m m versucht

z u n ä c h s t , ein n e u e s

das kein neues

Byte eingibt,

B y t e zu l e s e n . Im F a l l e e i n e s erscheint

jedoch

= 1, da es s i c h um ein N i c h t - H e x a d e z i m a l z e i c h e n sucht

das P r o g r a m m

terscheiden.

Unterkommandos,

als F e h l e r m e l d u n g das

Carrybit

h a n d e l t e . In d i e s e m F a l l v e r -

m i t V e r g l e i c h s b e f e h l e n , d i e d r e i U n t e r k o m m a n d o s zu u n -

Nach der

E i n g a b e von z w e i g ü l t i g e n H e x a d e z i m a l z i f f e r n w i r d d a s

e i n g e g e b e n e B y t e a b g e s p e i c h e r t und d u r c h e i n e n V e r g l e i c h k o n t r o l l i e r t . K o n n t e es

nicht

gespeichert

Schreib/Lesespeicher abgebrochen. durch von

weil

z.B.

wird

das K o m m a n d o

auf

der

eingegebenen mit

einer

Adresse

der

erlauben

Startadresse

in

den

Befehlszähler.

Kenn-

d a s S e t z e n von H a l t e p u n k t e n

Benutzerregistern

und

eine

( B r e a k p o i n t s ) , das

Programmverfolgung

im

C1B0 17 FEC6 C1B3 1025 FF39 C1B7 1F 05

starten

La-

Einzelschritt

* BILD 6-22 TERMINALMONITOR PROGRAMM STARTEN GKOM LBSR EINAD STARTADRESSE LESEN LBCS L00PF FEHLER: KEINE HEXAEINGABE TFR D,PC START DES BENÜTZERPROGRAMMS END

Terminalmonitor: Programm

ein-

Aufwendigere

(Tracing).

Bild 6 - 2 2 :

kein

Fehlermeldung

f ü r G O g l e i c h G e h e a u f g e r u f e n . Es s t a r t e t d a s P r o g r a m m

Speichern

Startprogramme den

so

D a s in B i l d 6 - 2 2 d a r g e s t e l l t e G - K o m m a n d o w i r d m i t d e m

buchstaben " G " fach

werden, liegt,

7

Datenerfassung und Datenverarbeitung

Dieser Abschnitt gibt einen Einblick in den Aufbau und in die A r b e i t s w e i s e von A n a l o g / D i g i t a l - und Digital/Analogwandlern sowie von A r i t h m e t i k p r o z e s s o r e n , mit denen die M e ß w e r t e a u s g e w e r t e t werden können.

7.1

Verarbeitung analoger Daten

A n a l o g e Daten t r e t e n in der M e ß - und Regelungstechnik als Spannungen oder S t r ö m e bzw. als veränderliche Widerstände auf. Sie müssen zur

Verarbeitung

im Mikrocomputer aus der analogen in die d i g i t a l e Darstellung u m g e s e t z t w e r den. U m g e k e h r t ist es nötig, d i g i t a l e Ergebnisse wieder in analoge Größen zu verwandeln.

Der

folgende

Abschnitt

zeigt

die

wichtigsten

Umwandlungsver-

fahren.

7.1.1

Widerstands-Frequenz-Umsetzung

+5V

R, = 6 K

i

*

c = 0,1 pF

1 =

(R1 • 2R2) • C '1

r

NTC

«n

(1 * 2-6)-105-0,1*10'

>1

-6 =1,1 kHz

_3

f. aus

10 nF

PB7 Bild 7 - 1 :

Temperatur-Frequenz-Umsetzung

344

7 Datenerfassung und Datenverarbeitung

Viele M e ß a u f g a b e n lassen sich auf Sensoren ( F ü h l e r ) z u r ü c k f ü h r e n , d e r e n W i d e r s t a n d s w e r t von der zu messenden G r ö ß e ( T e m p e r a t u r , S t r a h l u n g , M a g n e t f e l d , Druck) a b h ä n g t . Ein Beispiel ist d e r N T C - W i d e r s t a n d , dessen W i d e r s t a n d s w e r t mit s t e i g e n d e r T e m p e r a t u r a b n i m m t . Bringt man den M e ß w i d e r s t a n d als f r e q u e n z b e s t i m m e n d e Größe in eine O s z i l l a t o r s c h a l t u n g , so wird die T e m p e r a t u r in eine F r e q u e n z u m g e s e t z t , die mit einem Programm g e m e s s e n w e r d e n k a n n . Dieser Abschnitt zeigt a l s Beispiel die Messung e i n e r T e m p e r a t u r mit einem N T C - W i d e r s t a n d . Als M i k r o c o m p u t e r dient das im A b s c h n i t t 3.8 e n t w o r f e n e Übungssystem. Bild 7 - 1 zeigt als M e ß f ü h l e r einen N T C - W i d e r s t a n d , der d i e F r e q u e n z am Ausgang eines Multivibrators b e s t i m m t . Mit den g e w ä h l t e n B a u t e i l e n ergibt sich eine Ausgangsfrequenz bei R a u m t e m p e r a t u r von e t w a 1 KHz, die dem Eingang einer P a r a l l e l s c h n i t t s t e l l e z u g e f ü h r t wird. Das Signal hat T T L - P e g e l und kann von einem Programm a u s g e w e r t e t w e r d e n . Bild 7 - 2 zeigt den Z u s a m m e n h a n g zwischen d e r zu m e s s e n d e n T e m p e r a t u r , dem Widerstand des M e ß f ü h l e r s und der A u s g a n g s f r e q u e n z .

Bild 7 - 2 :

Zusammenhang

Widerstand-Frequenz-Temperatur

Mit s t e i g e n d e r T e m p e r a t u r n i m m t d e r Widerstand des Fühlers ab und die F r e quenz s t e i g t an; T e m p e r a t u r und Frequenz sind in einem gewissen Bereich p r o p o r t i o n a l . Bei einer g e n a u e n Messung des Z u s a m m e n h a n g e s zwischen T e m p e r a tur und F r e q u e n z zeigen sich besonders an den Grenzen des M e ß b e r e i c h e s Nicht l i n e a r i t ä t e n , die besonders b e r ü c k s i c h t i g t werden müssen. Die Frequenz kann mit dem in Abschnitt 4.6.4 b e s c h r i e b e n e n Programm Bild 4 - 7 7 g e m e s s e n w e r den. Dabei e r s c h e i n t die Frequenz als 8 - B i t - E r g e b n i s eines Z ä h l e r s . Die U m wandlung in die T e m p e r a t u r kann durch e i n e n d i r e k t e n Tabellenzugriff (Bild 4 - 9 7 ) e r f o l g e n . Der Zähler ist dabei die n i e d e r w e r t i g e Adresse eines 8 - B i t A u s g a b e w e r t e s , der als zweistellige BCD-Zahl a b g e s p e i c h e r t w e r d e n k a n n . D a mit e n t f a l l e n alle U m r e c h n u n g e n von Z ä h l e r s t a n d in Frequenz und von F r e q u e n z in T e m p e r a t u r . Die T a b e l l e muß durch e i n e Messung über den g e s a m t e n B e reich e r m i t t e l t w e r d e n . N i c h t l i n e a r i t ä t e n werden dabei a u t o m a t i s c h b e r ü c k sichtigt.

7.1 Verarbeitung analoger Daten

345

7.1.2 Beispiel eines Analog/Digitalwandlers

2 N 42 7 R - 2 R - Netzwerk

URe» Schalter

=3=

=f= 1f)F 2,56V

1 i

Zähler ( s u k z e s s i v e A p p r o x . )

Analog Eingang

A u s g a n g s t r e i b e r itristote]

1

2,55V

-IbV: 22UK

DO

n7 u/

EX 51

Datenbus

Bild 7-3: Blockschaltplan des A/D-Wandlers ZN 427 Bild 7 - 3 zeigt als Beispiel für einen Analog/Digitalwandler den Blockschaltplan des A/D-Wandlers ZN 427, dessen Funktionsweise bereits im Abschnitt 3.5.6 besprochen wurde. Er wandelt eine analoge Eingangsspannung im Bereich von 0 bis 2,55 Volt in einen digitalen 8-Bit-Wert von 00000000 bis 11111111 um. Der Wandler a r b e i t e t nach dem Verfahren der schrittweisen Näherung. Die Umwandlung beginnt mit einem negativen Impuls am Eingang SC. SC b e deutet Start of Conversion gleich Beginn der Umwandlung. Die von außen anzulegenden Taktsignale (CLK gleich Clock) wandeln mit ihrer fallenden Flanke jeweils ein Bit um; nach neun Takten ist die Umwandlung beendet. Die F r e quenz des Umwandlungstäktes muß unter 1 MHz liegen. Bild 7 - 4 zeigt die Startbedingungen. Die steigende Flanke des Startimpulses leitet die Umwandlung ein; die f a l l e n de Flanke des Taktsignals muß mindestens 200 ns vor und hinter dieser Flanke liegen. Bild 7 - 5 zeigt das Impulsdiagramm f ü r den Betrieb des Wandlers mit dem Mikroprozessor 6809. Der Umwandlungstakt CLK des Wandlers wird abgeleitet vom Takt Q des P r o zessors, der durch einen einstellbaren Frequenzteiler im Verhältnis 2:1 bzw. 4:1 heruntergeteilt werden kann. Der Startimpuls wird durch einen Schreibbefehl erzeugt, der jedoch keine Daten ü b e r t r ä g t . Bei einem Teilerverhältnis von 2:1 müssen vor dem Lesen 9 Wandlertakte entsprechend 18 Prozessortakten a b laufen. Dies kann z.B. durch 8 NOP-Befehle erreicht werden. Der Ladebefehl, mit dem die umgewandelten Daten abgeholt werden, erzeugt dann den 9. Wandlertakt. Der in Bild 7 - 6 dargestellte Analogteil des Wandlers hat einen Ersatz-Innenwiderstand von 4 KOhm; der Ersatz-Außenwiderstand soll ebenfalls 4 KOhm betragen. Im unipolaren Betrieb nach Bild 7-6a liegt am Eingang ein

346

7 Datenerfassung

und

Datenverarbeitung

Wandlertakt

CLK

f mIHaX a v = 1 MHz

J>- >200ns-,' >200ns , •

'

sc (WE)

11 Startimpuls

250ns —> •

© Bild 7 - 4 :

-500-

(D

Startbedingungen des A/D-Wandlers ZN 427

-1000ns 250 - 2 5 0

CLK

1. Takt

2250 SC

,'250

-1750

Startimpuls

Bild 7 - 5 :

Betrieb des A/D-Wandlers ZN 427 mit dem Prozessor 6809

Spannungsteiler, der die Eingangsspannung auf 2,55 Volt h e r u n t e r t e i l t ; dies e n t s p r i c h t der auf dem Baustein e r z e u g t e n Vergleichsspannung. Die Schaltung nach Bild 7 - 6 b ist für bipolaren Betrieb b e s t i m m t .

347

7.1 Verarbeitung analoger Daten

390 1jjF 1M Vref;n | |680K

R j fl8K

R,

8K

a. ZN 427 Bild 7 - 6 :

7.1.3

255V

Vrefou, ZN 427

"1 A/D-Wandler n

b. ZN 427

unipolarer Betrieb

bipolarer Betrieb

A n a l o g t e i l des A / D - W a n d l e r s Z N 427

Beispiel eines Digital/Analogwandlers

• 5V

Bild 7 - 7 :

B l o c k s c h a l t p l a n des D / A - W a n d l e r s Z N 428

Bild 7 - 7 z e i g t als B e i s p i e l e i n e s D i g i t a l / A n a l o g w a n d l e r s des

Bausteins Z N 428, dessen F u n k t i o n s w e i s e b e r e i t s

s p r o c h e n w u r d e . Er w a n d e l t

einen digitalen

den B l o c k s c h a l t p l a n

im A b s c h n i t t

3.5.6

bis 11111111 in e i n e a n a l o g e Ausgangsspannung von 0 bis 2,55 V o l t u m . Baustein e n t h ä l t 2,55

Volt

Der

einen E i n g a n g s s p e i c h e r , d e r d i e d i g i t a l e n D a t e n bis zum E i n -

s c h r e i b e n neuer W e r t e f e s t h ä l t . Bei e i n e r i n t e r n e r z e u g t e n von

be-

8 - B i t - E i n g a n g s w e r t von 00000000

liegt

die

Ausgangsspannung

ebenfalls

bei

Vergleichsspannung m a x i m a l 2,55

Volt.

7 Datenerfassung und

348

Bild 7-8:

Datenverarbeitung

Analogteil des D/A-Wandlers ZN 428

Der Analogteil des Wandlers hat einen Ersatz-Innenwiderstand von 4 KOhm. Bild 7 - 8 zeigt zwei Ausgangsschaltungen für bipolaren und unipolaren Betrieb unter Verwendung eines Operationsverstärkers.

7.2

Die Analogperipherie des Übungssystems

Das in Abschnitt 3.8 beschriebene Übungssystem enthält einen Analog/DigitalWandler ZN 427 auf der Adresse $C810 und einen Digital/Analogwandler ZN 428 auf der Adresse $C820. Die Bilder 3-101 und 3-102 zeigen die Schaltung und den Adreßplan. In den folgenden Beispielen wird die gesamte Peripherie mit Hilfe des Direkt-Seiten-Registers mit der direkten (verkürzten) Adressierung angesprochen.

* BILD

cooo C002 C004 C006 C008 C00B COOD C010 C012 C014 C016 C018

86 1F OF OF

CC DD CC DD 96 97 97 20

C8 8B 81 83 FF04 80 0004 82 82 80 20 F8

START

LOOP

7 - 9 A B G L E I C H DES D / A - W A N D L E R S SETDP $C8 PERIPHERIE DIREKT ADRESSIERT $C000 ADRESSZAEHLER ORG LOA #$C8 DIREKT-SEITE A,DP NACH D I R E K T - S E I T E N - R E G I S T E R TFR $C881 STEUERREGISTER L0ESCHEN CLR $C883 STEUERREGISTER L0ESCHEN CLR LDD #$FF04 AUSGABE PROGRAMMIEREN STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 DIGITALE EINGABE LDA $C882 $C880 D I G I T A L E AUSGABE STA STA $C820 ANALOGE AUSGABE BRA LOOP TESTSCHLEIFE END

Bild 7-9: Programmbeispiel: Abgleich des D/A-Wandlers

7.2 Die Analogperipherie des Übungssystems

349

Bild 7 - 9 zeigt ein Programmbeispiel zum Abgleich des Digital/Analogwandlers. Der an den Kippschaltern eingestellte digitale Wert wird analog am Wandlerausgang ausgegeben. Die binäre Ausgabe auf den Leuchtdioden dient zur Kontrolle. Mit diesem Programm können Nullpunkt und Verstärkung der Ausgangsschaltung eingestellt werden.

00C8 cooo cooo C002 C004 C005 C007 C008

86 1F 4F 97 4C 20

C8 8B 20 FB

* BILD 7-10 AUSGABE EINES SAEGEZAHNS SETDP $C8 PERIPHERIE DIREKT ADRESSIERT ADRESSZAEHLER ORG $C000 #$C8 DIREKTE ADRESSE START LDA NACH DIREKT-SEITEN-REGISTER TFR A,DP CLRA LOOP STA $C820 4 ZYKLEN: ANALOGE AUSGABE 2 ZYKLEN: WERT + 1 INCA BRA LOOP 3 ZYKLEN: SCHLEIFE END

Bild 7-10: Programmbeispiel: Ausgabe einer Sägezahnkurve

Mit dem Programmbeispiel Bild 7 - 1 0 kann die Linearität der Ausgangsspannung mit einem Oszilloskop kontrolliert werden. Es erscheint eine sägezahnförmige Ausgangsspannung mit einer Periodendauer von ca. 2,3 ms.

C000 COOO C002 C004 C006 C008 C00B C00D C010 C012 C013 C015 C017 C019 C01A C01B C01C C01D C01F

86 1F OF OF CC DD CC DD 4F 97 97 97 12 12 12 12 96 20

C8 8B 81 83 FF04 80 0004 82 10 20 80

10 F2

* BILD 7 - 1 1 ABGLEICH DES A/D-WANDLERS SETDP $C8 DIREKT S E I T E EINSTELLEN $COOO ORG ADRESSZAEHLER DIREKT-SEITEN-REGISTER START LDA #$C8 TFR LADEN A,DP $C881 CLR STEUERREGISTER L0ESCHEN $C883 CLR STEUERREGISTER L0ESCHEN #$FF04 LDD AUSGABE PROGRAMMIEREN STD $C880 EINGABE LDD #$0004 PROGRAMMIEREN STD $C882 CLRA LOOP STA $C810 START DER UMWANDLUNG STA $C820 1. UND 2 . SCHRITT UND ANALOGE AUSGABE STA $C880 3. UND 4 . SCHRITT UND DIGITALE AUSGABE NOP 5 . SCHRITT NOP 6 . SCHRITT NOP 7 . SCHRITT NOP 8 . SCHRITT 9 . SCHRITT UND ANALOGE EINGABE LDA $C810 SCHLEIFE BRA LOOP END

Bild 7-11: Programmbeispiel: Abgleich des A/D-Wandlers

Mit dem in Bild 7-11 dargestellten Testprogramm läßt sich die Eingangsschaltung des Analog/Digitalwandlers abgleichen. Die am Eingang anliegende a n a l o ge Spannung wird auf den Leuchtdioden ausgegeben. Die analoge Ausgabe auf dem Digital/Analogwandler dient der Kontrolle. Legt man an den Eingang des A/D-Wandlers eine zeitlich veränderliche Spannung, z.B. die sinusförmige Spannung eines Funktionsgenerators, so kann am Ausgang des D/A-Wandlers der zurückgewandelte analoge Wert mit einem Oszilloskop beobachtet werden.

350

7 Datenerfassung und Datenverarbeitung

cooo cooo 86 C002 C004 C007 C008 COO A C00B COOC COOD COOE COOF C010

con

C012 C014 C016 C017 C019

00C8

1F 8E 5F 97 12 12 12 12 1212 12 12 96 A7 5A 26 20

C8 8B F000 10

10 80 EF E9

* BILD 7-12 SPEICHERN EINES ANALOGEN SIGNALS DIREKT S E I T E EINSTELLEN SETDP $C8 $COOO ADRESSZAEHELR ORG #$C8 DIREKT SEITEN REGISTER START LOA LADEN A,DP TFR #$F000 ANFANG DATENSPEICHER LDX LOOP1 ZAEHLER L0ESCHEN CLRB $C810 START DER UMWANDLUNG L00P2 STA 1. SCHRITT NOP 2 . SCHRITT NOP 3. SCHRITT NOP 4 . SCHRITT NOP 5. SCHRITT NOP 6 . SCHRITT NOP 7. SCHRITT NOP 8 . SCHRITT NOP $C810 9. SCHRITT UND ANALOGWERT LADEN LDA SPEICHERN X+ STA ZAEHLER - 1 DECB L00P2 BNE L00P1 ENDE DES SPEICHERS BRA *

Bild 7 - 1 2 :

P r o g r a m m b e i s p i e l : Speichern eines a n a l o g e n Signals

D a s P r o g r a m m b e i s p i e l Bild 7 - 1 2 t a s t e t d i e E i n g a n g s s p a n n u n g m i t e i n e r A b t a s t r a t e von 33 T a k t e n o d e r 33 p s (bei 1 MHz) a b u n d s p e i c h e r t d i e d i g i t a l e n W e r t e in e i n e m f o r t l a u f e n d e n S p e i c h e r b e r e i c h von $ F 0 0 0 b i s $ F 0 F F . D i e S p e i c h e rung e r f o l g t z y k l i s c h b i s zum A b b r u c h m i t e i n e m R e s e t o d e r e i n e m I n t e r r u p t . D a s in Bild 7 - 1 3 d a r g e s t e l l t e A u s g a b e p r o g r a m m g i b t d i e g e s p e i c h e r t e K u r v e auf d e m D / A - W a n d l e r w i e d e r a u s . F ü l l t m a n d e n S p e i c h e r b e r e i c h m i t d e n T a b e l l e n w e r t e n e i n e r b e l i e b i g e n F u n k t i o n , so k a n n d i e s e z y k l i s c h auf d e m O s zilloskop a u s g e g e b e n w e r d e n . Legt m a n a b w e c h s e l n d die Werte $00 und $ F F a b , so läßt s i c h d a s E i n s c h w i n g v e r h a l t e n d e s D i g i t a l / A n a l o g w a n d l e r s z u s a m m e n mit dem A u s g a n g s - O p e r a t i o n s v e r s t ä r k e r u n t e r s u c h e n .

OOC8 C100 C100 C102 C104 C107 C108 C10A C10C C1 OD C10F

86 1F 8E 5F A6 97 5A 26 20

Bild 7 - 1 3 :

C8 8B F000 80 20 F9 F3

* BILD 7-13 ANALOGE AUSGABE EINES GESPEICHERTEN SIGNALS SETDP $C8 DIREKT SEITE EINSTELLEN ORG $C100 ADRESSZAEHLER AUS LDA #$C8 DIREKT SEITEN REGISTER TFR A ,DP LADEN L00P3 LDX #$F000 ANFANG AUSGABESPEICHER CLRB ZAEHLER L0ESCHEN L00P4 LDA X+ DIGITALWERT LADEN STA $C820 ANALOG AUSGEBEN DECB ZAEHLER - 1 BNE L00P4 AUSGABESCHLEIFE BRA L00P3 WEITER AM SPEICHERANFANG END

P r o g r a m m b e i s p i e l : A u s g a b e des g e s p e i c h e r t e n

Signals

7.3

7.3

Aufbau

und Arbeitsweise

eines

351

Arithmetikprozessors

A u f b a u und Arbeitsweise eines Arithmetikprozessors

Wie b e r e i t s im Abschnitt 4.8 gezeigt e n t h ä l t der Befehlssatz des Mikroprozessors 6809 nur Befehle zur Addition, Subtraktion und Multiplikation von 8 - B i t Dualzahlen. Bei den Prozessoren 6800 und 6802 sowie bei den meisten anderen 8-Bit-Mikroprozessoren f e h l t ein Multiplikationsbefehl. Im Bereich der t e c h n i schen Anwendungen muß jedoch sehr o f t mit h ö h e r e r Stellenzahl g e r e c h n e t w e r d e n . Die anwendungsorientierten P r o g r a m m i e r s p r a c h e n wie z.B. BASIC, FORTRAN oder PASCAL kennen die D a t e n t y p e n INTEGER (ganzzahlig) als v o r z e i c h e n b e h a f t e t e Dualzahlen von 16 oder 32 Bit Länge und REAL (reell) in einer Gleitkommadarstellung (Floating Point). Sie e r w e i t e r t den Zahlenbereich auf größer Für technische Berechnungen sind zusätzlich die Wurzelfunktion sowie die trigonometrischen und die logarithmischen Funktionen e r f o r d e r lich. Trotz a u s g e f e i l t e r m a t h e m a t i s c h e r N ä h e r u n g s v e r f a h r e n , die jedoch alle auf die Grundrechnungsarten von 8 - B i t - D u a l z a h l e n z u r ü c k g e f ü h r t werden m ü s sen, rechnet man mit c a . 20 bis 100 ms f ü r die Quadratwurzel aus einer 3 2 B i t - R E A L - Z a h l in Gleitpunktdarstellung. Durch Anwendung eines A r i t h m e t i k prozessors läßt sich die Wurzeloperation j e nach verwendeten Prozessor auf 400 bis 40 |os h e r u n t e r d r ü c k e n . Bild 7 - 1 4 zeigt die Anschlußbelegung und den Blockschaltplan des Arithmetikprozessors Am 9511A, der sich wie ein n o r m a l e r Peripheriebaustein verhält und mit jedem 8 - B i t - oder 16-Bit-Mikroprozessor z u s a m m e n a r b e i t e n kann. Der Arithmetikprozessor 8087 der 8 0 8 6 - B a u s t e i n f a m i lie kann nur an die Prozessoren dieser Familie angeschlossen werden.

GND +5V EACK SVACK

SVRH5 frei frei -> DO -> D1 -> D2 -> D3 -> D4

1 2 3 4 5 6 7 8 9 10 11 12

9511A

24 23 22 21 20 19 18 17 16 15 14 13

END -> CLK < RES < C/D < EE < WR < CS < -

Kommandoregister

Datenregister

AblaufSteuerung

ALU

Datenstapel Statusregister

(16 Bytes)

und Konstanten

Register

PAUSE ->

+ 12V D7 < - > D6 < - > D5 < - >

Bussteuerung

Anschlußsteuerung

Datenbustreiber

Am 9511A

CS UD HR C/D PAUSE

Bild 7-14:

CLK RESET SVACK SVREQ EACK END

D7

DO

Aufbau und Anschluß des Arithmetikprozessors Am 9511A

Die A r i t h m e t i s c h - L o g i s c h e Einheit (ALU) und die A r b e i t s r e g i s t e r (Akkumulat o r e n ) des Arithmetikprozessors sind 16 Bit b r e i t . Der Ablauf der a r i t h m e t i schen Operationen wird von einer f e s t e n Ablaufsteuerung (Mikroprogramm) g e -

7 Datenerfassung und Datenverarbeitung

352

steuert. lungen

Die Zahlenkonstanten stehen

Operanden

in e i n e m

(Pi, e ) und K o e f f i z i e n t e n der

internen

Konstantenspeicher.

verarbeitenden

( Z a h l e n ) w e r d e n in ein 8 - B i t - D a t e n r e g i s t e r g e s c h r i e b e n und g e l a n -

gen n a c h e i n a n d e r in e i n e n i n t e r n e n S t a p e l , der m a x i m a l kann.

Reihenentwick-

D i e zu

Durch S c h r e i b e n

auszuführende

eines Steuerbytes

arithmetische

Operation

16 B y t e s a u f n e h m e n

in das K o m m a n d o r e g i s t e r

gestartet.

Sie

läuft

wird die

unabhängig

vom

Mikroprozessor z e i t l i c h p a r a l l e l zur Ausführung e i n e s M i k r o c o m p u t e r p r o g r a m m s a b . D a s Ende der O p e r a t i o n kann e n t w e d e r durch A b f r a g e n des S t a t u s r e g i s t e r s oder durch e i n e n Interrupt über zwei S t e u e r a u s g ä n g e des erkannt

werden.

Durch

Arithmetikprozessors

L e s e n des D a t e n r e g i s t e r s werden die E r g e b n i s s e aus

dem S t a p e l g e h o l t .

RD

UR

Funktion

L L H H

H L H L

L H L H

Datenbyte nach Operandenstapel schreiben Datenbyte aus Operandenstapel lesen Operation nach Kommandoregister und Start Status der Verarbeitung lesen

Die R e g i s t e r a d r e s s e n des A r i t h m e t i k p r o z e s s o r s Am 9 5 1 1 A

Bild 7 - 1 5 :

Der

C/D

RESET-Eingang

ist

im

G e g e n s a t z zu den B a u s t e i n e n

der

68xx-Familie

aktiv HIGH. Der Eingang C S (aktiv L O W ) dient zur F r e i g a b e des B a u s t e i n s . Er wird

wie ein P e r i p h e r i e b a u s t e i n

an den

Ausgang e i n e s A d r e ß d e c o d e r s

ange-

s c h l o s s e n . Der Eingang C/D ( K o m m a n d o / D a t e n ) wird m i t der A d r e ß l e i t u n g AO verbunden und dient (WR)

zur

7-15)

.

zusammen

Auswahl der vier Der

(Ausführung

am A-l:

mit der L e s e l e i t u n g

dem P r o g r a m m i e r e r

CLK-Eingang

anliegende

( R D ) und

Schreibleitung

zugänglichen R e g i s t e r

Takt

beträgt

3 M H z ) . Er kann a s y n c h r o n zum T a k t des

maximal

(Bild

2

MHz

Mikroprozessors

und d a m i t zu den R D - und W R - S i g n a l e n v e r l a u f e n . Die S y n c h r o n i s a t i o n b e i d e r P r o z e s s o r e n e r f o l g t durch den P A U S E - A u s g a n g , der kurzzeitig auf LOW g e h t , wenn

eine

Datenübertragung

über den

Datenbus s t a t t f i n d e t . Dieser

Zustand

kann bis zu 6 ps a n d a u e r n . E i n z e l h e i t e n müssen dem D a t e n b l a t t des H e r s t e l l e r s (Advanced

Micro

Devices)

entnommen

werden.

Ein L O W - Z u s t a n d

am

END-

Ausgang zeigt das Ende e i n e r O p e r a t i o n a n . Mit e i n e m L O W - S i g n a l a m E A C K Eingang ( E N D A c k n o w l e d g e ) wird der Ausgang END w i e d e r auf HIGH z u r ü c k gesetzt. Liegt

EACK dauernd auf L O W , so gibt der E N D - A u s g a n g b e i m Ende

e i n e r O p e r a t i o n einen Impuls von e i n e r T a k t p e r i o d e a b . Im G e g e n s a t z zum E N D A u s g a n g , der

immer

das

Ende e i n e r

O p e r a t i o n m e l d e t , kann die A r b e i t

des

S V R E Q - A u s g a n g s ( S e r v i c e R e q u e s t ) durch das w e r t h ö c h s t e B i t des K o m m a n d o r e g i s t e r s g e s p e r r t und f r e i g e g e b e n w e r d e n . Mit dem S V A C K - E i n g a n g wird das S V R E Q - F l i p f l o p wieder z u r ü c k g e s e t z t . Mit den Signalen E N D bzw. S V R E Q kann also

der

Arithmetikprozessor

über e i n e n

m e l d e n ; das M i k r o c o m p u t e r p r o g r a m m

Interrupt das Ende e i n e r

Operation

b e s t ä t i g t die Ü b e r n a h m e der E r g e b n i s s e

über die E i n g ä n g e E A C K bzw. S V A C K . Bild 7 - 1 6 zeigt den Anschluß des A r i t h m e t i k p r o z e s s o r s Am 9 5 1 1 A an das Ü b u n g s s y s t e m mit dem Prozessor 6 8 0 9 .

7.3 Außau

Y1

A 1 0 RD

WR

AO

MRDY

und Arbeitsweise

eines

353

Arithmetikprozessors

RES

Bild 7-16:

Anschluß des Arithmetikprozessors an das Übungssystem

Durch den

Anschluß des Freigabeeingangs

CS an die Auswahlleitung

Y 1 und

die Adreßleitung A10 (Bild 3-101 und 3 - 1 0 2 ) ergeben sich die Adressen $CC00 für das D a t e n r e g i s t e r und $CC01 für das S t e u e r r e g i s t e r . Der P A U S E - A u s g a n g wird an den M R D Y - E i n g a n g

des Prozessors 6809 g e l e g t und verlängert damit

den Takt E des Mikroprozessors, bis der Arithmetikprozessor seine tragung abgeschlossen

Datenüber-

hat. Der Takt (2 M H z ) des Arithmetikprozessors

wird

über einen besonderen T a k t g e b e r e r z e u g t . Ein Anschluß an die T a k t e E bzw. Q des

Mikroprozessors

6809 ist nicht

m ö g l i c h , da in diesem Fall das

PAUSE-

Signal den Mikroprozessor blockieren würde. In dem vorliegenden Übungssystem wurde von der M ö g l i c h k e i t einer Interruptauslösung durch die Ausgänge und S V R E Q kein Gebrauch g e m a c h t , die Eingänge E A C K und S V A C K

END

wurden

f e s t auf L O W g e l e g t .

Durch Beschreiben des K o m m a n d o r e g i s t e r s (Bild 7 - 1 7 ) werden L ä n g e , F o r m a t und A r t der auszuführenden Operation f e s t g e l e g t . Diese wird g l e i c h z e i t i g

ge-

s t a r t e t . Mit dem werthöchsten Bit ( B 7 ) kann der S V R E Q - A u s g a n g gesperrt bzw. f r e i g e g e b e n w e r d e n . Durch T e s t e n der werthöchsten Bitposition B7 des Statusregisters kann ein Programm des Ende der Operation f e s t s t e l l e n . Die anderen Bitpositionen enthalten Angaben über V o r z e i c h e n , Null und Carry sowie einen F e h l e r c o d e . D i e zu verarbeitenden Zahlen w e r d e n entsprechend Bild 7 - 1 8 durch einen S c h r e i b b e f e h l auf den Operandenstapel g e l e g t . Der Stapel besteht aus 16 B y t e s und kann damit acht 2 - B y t e - O p e r a n d e n der

16-Bit-Festpunktarithmetik

oder vier 4 - B y t e - O p e r a n d e n der 3 2 - B i t - F e s t p u n k t - bzw. G l e i t p u n k t a r i t h m e t i k aufnehmen.

Die 1 6 - B i t - F e s t p u n k t a r i t h m e t i k von

- 3 2 768 bis

arbeitet

mit v o r z e i c h e n b e h a f t e t e n Dualzahlen

+32 767. Es stehen die vier Grundrechnungsarten

Subtraktion, Multiplikation und Division zur V e r f ü g u n g .

Addition,

354

7 Datenerfassung

und

Datenverarbeitung

Komnando-Format B7

B6

B5

B4

Länge Format SVREQ : gesp 0: 32 0 : G l e i t : f r e i 1: 16 1 :Festp

B3

B2

B1

B0

Operation 0 1 1 0 0 : Addition 0 1 1 0 1 : Subtraktion 0 1 1 1 0 : Multiplikation sowie weitere Funktionen

usw.

B e i s p i e l : Wurzelfunktion 32 B i t Gleitpunkt SVREQ g e s p e r r t : 0 0 0 0 0 0 0 1 =

$01

Statusregister B7 BUSV : ja : nein

Bild 7-17:

B6 Sign 0: + 1: -

B5 Zero 0:ne i n 1: ja

B4 £

B3

B2

B1

B0

Fehlercode ' Carry 0 0 0 0: kein Fehler 1 0 0 0: D i v i s i o n durch N U l i 0 1 0 0: neg. Argument bei Wurzel oder Log. 1 1 0 0: Argument zu groß x x 1 0: Unterlauf I x x 0 1: Überlauf

Aufbau des Kommando- und Statusregisters

Die 32-Bit-Festpunktarithmetik arbeitet mit vorzeichenbehafteten Dualzahlen von - 2 147 483 648 bis +2 147 483 647.Auch hier stehen die vier Grundrechnungsarten zur Verfügung. In der 32-Bit-Gleitpunktarithmetik wird die Dualzahl durch eine 24-BitMantisse und einen 6-Bit-Exponenten jeweils mit Vorzeichen dargestellt. Die Genauigkeit beträgt mindestens sieben Dezimalstellen, die Zahlenbereich e r streckt sich von -2.7E-20 bis +9.2E+18. Neben den vier Grundrechnungsarten gibt es eine Reihe von mathematischen Operationen (SQRT, SIN, COS, TAN, ASIN, ACOS, ATAN, LOG, LN, EXP und Exponentiation). Dazu kommen Operationen zur Umwandlung der D a t e n f o r m a t e und Stapelbefehle. Bild 7-19 zeigt abschließend ein Testprogramm, das zwei 4-Byte-Operanden in den Operandenstapel des Arithmetikprozessors bringt und eine Operation s t a r t e t , deren Code im Speicher abzulegen ist. Der Code der Wurzeloperation (SQRT) lautet z.B. $01. Die Warteschleife kontrolliert das Statusregister auf das Ende der Operation und zählt dabei die Durchläufe. Das Ergebnis wird aus dem Arithmetikprozessor in Speicher gebracht und kann dort zusammen mit dem Durchlaufzähler und dem Status ausgewertet werden.

7.3 Aufbau und Arbeitsweise eines

Arithmetikprozessors

Operandenstapel

schreiben

HIGH

lesen 32-Bit

LOW HIGH LOW

¡16-Bit

16-Bit-Festpunkt von - 32 768 bis + 32 767

32-Bit-Festpunkt von - 2 147 483 648 bis + 2 147 483 647

32-Bit-Gleitpunkt von - 2.7E-20 bis + 9.2E+18 bei 7 Dezimalstellen V V ME

Exponent 1 1 1 i

I iM' a, n. t, i, s. s, e

Beispiel : 4 dezimal = 100 dual = 0.U)0 2 x 2i = $03 80 00 00 t' 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

Bild 7 - 1 8 :

ojo

0 0 0 0 0 0 0 0 0

Aufbau des D a t e n s t a p e l s und D a t e n f o r m a t e

355

356

cooo cooo

7 Datenerfassung

CCOO CC01 F800

C014 C017 C019 C01C C01E C021 C024 C027 C029

10CE 8E 8D 8E 8D 8E B6 B7 30 B6 2B B7 BF 8E 8D 7E

C800 F001 23 F005 1E 0000 F000 CC01 01 CC01 F9 FOOD FOOE F009 13 F800

C02C C02E C030 C032 C034 C037 C038 C03A

34 30 C6 A6 B7 5A 26 35

16 04 04 82 CCOO

C03C C03E C040 C043 C045 C046 C048

34 C6 B6 A7 5A 26 35

16 04 CCOO 80

C004 C007 C009 COOC COOE

coi 1

F000 F000 F001 F005 F009 FOOD FOOE

Bild 7-19:

F8 96

F8 96

0001 0004 0004 0004 0001 0001

und

Datenverarbeitung

7 - 1 9 TESTPROGRAMM ARITHMETIKPROZESSOR DATENREGISTER STAPEL $CCOO EQU STEUERREGISTER/STATUSREGISTER $CC01 EQU EINSPRUNG MONITOR EQU $F800 ADRESSZAEHLER $C000 ORG STAPELZEIGER LADEN #$C800 START LOS 4-BYTE-OPERAND 1 LDX #0P1 NACH OPERANDENSTAPEL PUSH4 BSR 4-BYTE-OPERAND 2 #0P2 LDX NACH OPERANDENSTAPEL PUSH4 BSR DURCHLAUFZAEHLER LOESCHEN LDX #0 OPERATIONSCODE LADEN CODE LDA UND OPERATION STARTEN STA STARE LOOP LEAX 5 ZYKLEN ZAEHLEN 1,X LDA STARE 5 ZYKLEN STATUS TESTEN BMI LOOP 3 ZYKLEN: B7=1: WARTESCHLEIFE STA STATUS STATUS NACH SPEICHER ZAEHLER SPEICHERN STX ZAEHL LDX #ERG 4-BYTE-ERGEBNIS P0P4 BSR AUS AR ITHMETIKRPOZESSOR NACH SPEICHER JMP MONI SPRUNG NACH MONITOR * UNTERPROGRAMM 4-BYTE--DATEN NACH ARITHMETIKPROZESSOR PUSH4 PSHS X ,A ,B REGISTER RETTEN LEAX MIT LOW-BYTE BEGINNEN 4,X LDB #4 4 BYTES PUSH41 LDA -X STA NACH OPERANDENSTAPEL DATRE DECB DURCHLAUFZAEHLER BNE PUSH41 SCHLEIFE PULS X,A,B,PC FERTIG: RUECKSPRUNG * UNTERPROGRAMM 4-BYTE--DATEN AUS ARITHMETIKPROZESSOR HOLEN P0P4 PSHS REGISTER RETTEN X,A,B LDB #4 DURCHLAUFZAEHLER 4 BYTES P0P41 LDA DATRE AUS OPERANDENSTAPEL STA X+ NACH SPEICHER DECB DURCHLAUFZAEHLER P0P41 BNE SCHLEIFE PULS X,A,B,PC FERTIG: RUECKSPRUNG * VARIABLENßEREICH VOR START LADEN UND DANACH PRUEFEN ORG $F000 CODE RMB 1 OPERATIONSCODE VOR START LADEN 0P1 RMB 4 1. OPERAND 4 BYTE VOR START LADEN RMB 4 0P2 2 . OPERAND 4 BYTE VOR START LADEN RMB 4 ERG ERGEBNIS NACH ENDE PRUEFEN STATUS RMB 1 STATUS DES ERGEBNISSES RMB ZAEHL 1 DURCHLAUFZAEHLER END * BILD DATRE STARE MONI

T e s t p r o g r a m m f ü r den A r i t h m e t i k p r o z e s s o r Am 9511A

8

Lösungen der Übungsaufgaben Abschnitt 2.8 Grundlagen

1.Aufgabe: dual: 01100100 h e x a d e z i m a l : 64 BCD: 0001 0000 0000

3.Aufgabe: h e x a d e z i m a l : 58 ASCII-Zeichen: X als Dualzahl: 88 als B C D - Z a h l : 58

2.Aufgabe: dual: 10011100 hexadezimal: 9C

4.Aufgabe: DU A F F E !

5.Aufgabe:

6. A u f g a b e : Summe: 01001011 D i f f e r e n z : 11010011 UND: 00001100 ODER: 00111111 E O D E R : 00110011

X

Y

z

u s

0

0

0

0

0

0

1

0

1

0

1 0

0

1

0

0

1

1

1 0

1 0

0

0

1 0

1

1 0

1

1

1 0

1 0

1

1

1

1

1

7.Aufgabe: Es wird der Ausgang Y5 a u s g e w ä h l t .

c

B

A YO

TT

Y2

Y3

Y4

Y5

Y6

YT

0

0

0

0

1

1

1

1

1

1

1

0

0

1

1

0

1

1

1

1

1

i

0

1 0

1

1

1

1

1

1

1

0

1

1

1

0

1

1

1

1

1

0 0 0 1 1 0 1 1

1 1 1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

0

358

8 Lösungen der Übungsaufgaben

8.Aufgabe:

X1-

Ausgang

X2XI t X2 Ausgang

^

t

Abschnitt 4.3.7 Datenübertragung

1.Aufgabe:

cooo

cooo 7F C003 C006 C009 COOB COOE

* UEBUNG 4 . 3 . 7 AUFGABE 1 ADRESSZAEHLER ORG SCOOO STEUERREGISTER LOESCHEN $C881 CLR LDD #$FF04 STEUERBYTE $C880 NACH RICHTUNGSREGISTER STD LDA #$55 BITMUSTER 0 1 0 1 0 1 0 1 STA $C880 NACH LEUCHTDIODEN AUSGEBEN JMP LOOP WARTESCHLEIFE LOOP END

CC FD 86 B7 7E

C881 FF04 C880 55 C880 COOE

START

7F 7F 86 B7 B6 B7 7E

C883 C882 04 C883 C882 FOOO F800

START

2.Aufgabe:

COOO COOO C003 C006 C008 COOB COOE CO11 FOOO FOOO

0001

* UEBUNG 4 . 3 . 7 AUFGABE 2 ORG SCOOO ADRESSZAEHLER BEFEHLE STEUERREGISTER LOESCHEN CLR $C883 RICHTUNGSREGISTER LOESCHEN CLR $C882 LDA #$04 STEUERBYTE NACH STA $C883 STEUERREGISTER LDA $C882 KIPPSCHALTER LESEN STA NACH VARIABLENSPEICHER WERT JMP $F800 SPRUNG NACH mONITOR VARIA3LENBEREICH ORG $F000 RMB WERT 1 1 SPEICHERBYTE R E R S E R V I E R T END

8 Lösungen der Übungsaufgaben

3.Aufgabe:

00C8 cooo cooo C004 C006 C008 COOB COOE coi 1 C014 C100 C100 C101 C102 F000 F000 F001 F002

10CE 86 1F FC FD B6 B7 7E

C800 C8 8B C100 F000 C102 F002 F800 64 44 41 0001 0001 0001

* UEBUNG 4 . 3 . 7 AUFGABE 3 SETDP $C8 SETZE DIREKT-SEITE ORG ADRESSZAEHLER BEFEHLE $C000 START LDS #$C800 S-STAPELZEIGER LADEN LDA DIREKT-SEITEN-ADRESSE #$C8 A,DP NACH DIREKT-SEITEN-REGISTER TFR LDD K0N1 1. UND 2. BYTE LADEN STD VAR1 UND SPEICHERN LDA K0N3 3 . BYTE LADEN STA UND SPEICHERN VAR3 JMP SPRUNG NACH MONITOR $F800 ORG KONSTANTENSPEICHER $C100 K0N1 FCB 100 DEZIMAL FCB $44 HEXADEZIMAL K0N2 ZEICHEN K0N3 FCB 'A ORG VARIABLENSPEICHER $F000 VAR1 RMB 1 1. VARIABLE RMB 1 VAR2 2 . VARIABLE RMB 1 VAR3 3 . VARIABLE END

Abschnitt 4 . 4 . 5 Sprünge und Verzweigungen

1.Aufgabe:

COOO COOO C003 C006 C009 COOC COOF COI 2 C015 C018

7F 7F CC FD CC FD B6 B7 20

C881 C883 FF04 C880 0004 C882 C882 C880 F8

* UEBUNG 4 . 4 . 5 AUFGABE 1 ORG $C000 ADRESSZAEHLER STEUERREGISTER LOESCHEN START CLR $C881 CLR $C883 STEUERREGISTER LOESCHEN #$FF04 AUSGABE PROGRAMMIEREN LDD STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 LDA $C882 EINGABE LOOP STA $C880 AUSGABE BRA LOOP SCHLEIFE MIT BRA-BEFEHL END

2.Aufgabe:

COOO COOO C004 C007 COOA COOD C010 C013 C015 C018

F809 F806 10CE 7F CC FD B6 BD 86 BD 20

C800 C883 0004 C882 C882 F809 20 F806 F3

* UEBUNG 4 . 4 . 5 AUFGABE 2 EQU AUSB $F809 AKKU A HEXADEZIMAL AUSGEBEN ZEICHEN AUS AKKU A AUSGEBEN AUSZ EQU $F806 ORG $C000 ADRESSZAEHLER START LDS #$C800 S-STAPELZEIGER LADEN CLR $C883 STEUERREGISTER LOESCHEN LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 LDA LOOP $C882 EINGABE KIPPSCHALTER JSR AUSB AUSGABE HEXADEZIMAL AUF TERMINAL LDA #$20 CODE FUER LEERZEICHEN JSR AUSZ AUSGEBEN BRA LOOP SCHLEIFE END

359

360

8 Lösungen der Übungsaufgaben

3.Aufgabe:

cooo cooo C004 C007 COOA COOD C010 C013

F824 10CE 7F CC FD BD B7 20

C800 C881 FF04 C880 F824 C880 F8

* UEBUNG 4 . 4 . 5 AUFGABE 3 EIN EQU $F824 ZEICHEN NACH AKKU A LESEN ADRESSZAEHLER ORG $COOO S-STAPELZEIGER LADEN START LDS #$C800 CLR $C881 STEUERREGISTER LOESCHEN #$FF04 LDD AUSGABE PROGRAMMIEREN STD $C880 EIN ZEICHEN VON TERMINAL LESEN LOOP JSR NACH LEUCHTDIODEN AUSGEBEN STA $C880 BRA SCHLEIFE LOOP END

Abschnitt 4.5.5 Programmverzweigungen

1.Aufgabe:

COOO COOO C003 C006 C009 COOC COOF C012 C015 C017 C01A C01C C01E C020 C023 C025 C027 C02A

7F 7F CC FD CC FD B6 26 B7 20 2A 86 B7 20 86 B7 20

C881 C883 FF04 C880 0004 C882 C882 05 C880 F6 07 FO C880 ED OF C880 E6

* UEBUNG 4 . 5 . 5 AUFGABE 1 ORG ADRESSZAEHLER JCOOO $C881 STEUERREGISTER LOESCHEN START CLR $C883 CLR STEUERREGISTER LOESCHEN #$FF04 LDD AUSGABE PROGRAMMIEREN STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 KIPPSCHALTER LESEN LOOP LDA $C882 BNE MARK1 UNGLEICH 0: WEITER STA GLEICH 0 : AUSGEBEN $C880 BRA SCHLEIFE LOOP MARK1 BPL MARK2 B7=0: WEITER LDA #$F0 B7=1: 1111 0000 LADEN UND AUSGEBEN STA $C880 BRA LOOP SCHLEIFE MARK2 LDA #$0F B 7 = 0 : 0000 1111 LADEN STA UND AUSGEBEN $C880 BRA LOOP SCHLEIFE END

4.Aufgabe:

F800 F824 COOO COOO C003 C005 C007 COOA COOC COOE C011 C013 C015

BD 81 26 BD 81 26 BD 81 26 7E

F824 45 F9 F824 4E F2 F824 44 EB F800

* UEBUNG 4 . 5 . 5 AUFGABE 4 MONI EQU SF800 EINSPRUNG MONITOR EIN EINGABE-UNTERPROGRAMM EQU $F824 ORG $C000 ADRESSZAHLER START JSR EIN 1. ZEICHEN LESEN CMPA #' E E ? BNE N E I N : PRUEFUNG ABBRECHEN START JSR EIN J A : 2. ZEICHEN LESEN CMPA #'N N ? BNE N E I N : PRUEFUNG ABBRECHEN START JSR EIN J A : 3. ZEICHEN LESEN 1 CMPA # D D ? BNE N E I N : PRUEFUNG ABBRECHEN START JMP MONI J A : ENDE DES PROGRAMMS END

8 Lösungen der Übungsaufgaben

2.Aufgabe:

C000 C000 C003 C006 C009 COOC COOF C012 C015 C017 C019 C01C C01E C020 C022 C025 C027 C029 C02B C02D C02F C031 C033 C035 C037 C03A

F800 7F 7F CC FD CC FD B6 81 26 7E 81 26 86 B7 20 81 26 86 20 81 26 86 20 7F 20

C881 C883 FF04 C880 0004 C882 C882 55 03 F800 OF 07 FO C880 EB FO 04 OF F3 00 04 FF EB C880 D6

* UEBUNG 4.5.5 AUFGABE 2 $F800 MONI EQU EINSPRUNG MONITOR ORG $C000 ADRESSZAEHLER $C881 START CLR STEUERREGISTER LOESCHEN $C883 STEUEREGISTER LOESCHEN CLR LDD AUSGABE PROGRAMMIEREN #$FF04 STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 LOOP $C882 EINLESEN DER KIPPSCHALTER LDA CMPA #$55 ENDEMARKE 0101 0101 ? BNE MARK NEIN: WEITER JMP MONI JA: PROGRAMM ABBRECHEN MARK CMPA #$0F MUSTER 0000 1111 ? MARK1 NEIN: WEITER BNE LDA #$F0 JA: MUSTER 1111 0000 LADEN AUS STA $C880 MUSTER AUSGEBEN BRA LOOP SCHLEIFE MARIO CMPA #$F0 MUSTER 1111 0000 ? BNE MARK2 NEIN: WEITER LDA #$0F JA: MUSTER 0000 1111 LADEN BRA AUS UND AUSGEBEN MARK2 CMPA #$00 AUCH TSTA MOEGLICH BNE MARK3 NEIN: WEITER LDA #$FF JA: MUSTER 1111 1111 LADEN BRA AUS UND AUSGEBEN MARK3 CLR $C880 AUCH LDA #$00 UND BRA AUS MOEGLICH BRA LOOP SCHLEIFE END

3. Aufgabe:

COOO C000 C003 C006 C009 COOC COOF C012 C015 COI 7 C018 C01A C01B C01D C01E C020 C023 C025 C027 C029 C02B C02D C02F C031 C033 C036

7F 7F CC FD CC FD B6 2B 49 2B 49 2B 49 2B 7F 20 86 20 86 20 86 20 86 B7 20

C881 C883 FF04 C880 0004 C882 C882 OE OF 10 11 C880 ED CO OA FO 06 FC 02 FF C880 DA

* UEBUNG 4.5.5 AUFGABE 3 0RG $C000 ADRESSZAHLER $C881 START CLR STEUERREGISTER LOESCHEN $C883 STEUERREGISTER LOESCHEN CLR LDD #$FF04 AUSGABE PROGRAMMIEREN STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 LDA EINGABE KIPPSCHALTER LESEN LOOP $C882 BMI B7 BIT7=1: JA ROLA SCHIEBE LINKS BMI B6 BIT6=1: JA ROLA SCHIEBE LINKS BMI B5 BIT5=1: JA ROLA SCHIEBE LINKS B4 BMI BIT4=1: JA $C880 KEIN BIT 1: AUSGABE LOESCHEN CLR LOOP BRA SCHLEIFE B7 LDA #$C0 MUSTER 1100 0000 LADEN BRA AUS UND AUSGEBEN B6 LDA #$F0 MUSTER 1111 0000 LADEN BRA AUS UND AUSGEBEN B5 LDA #$FC MUSTER 1111 1100 LADEN BRA AUS UND AUSGEBEN B4 LDA #$FF MUSTER 1111 1111 LADEN AUS STA $C880 MUSTER AUSGEBEN AUS AKKU A BRA LOOP SCHLEIFE END

361

362

8 Lösungen der Übungsaufgaben

Abschnitt 4.6.6 Programmschleifen

1.Aufgabe:

cooo cooo C003 C006 C009 COOA COOD COOE C010

7F CC FD 4F B7 4A 8D 20

C881 FF04 C880

C012 C015 C017 C019

8E 30 26 39

30D3 1F FC

C880 02 F8

* UEBUNG 4.6.6 AUFGABE 1 ADRESSZAEHLER ORG $C000 STEUERREGISTER LOESCHEN START CLR $C881 LDD #$FF04 AUSGABE PROGRAMMIEREN STD $C880 CLRA ZAEHLER LOESCHEN STA $C880 ZAEHLER AUSGEBEN LOOP DE CA ZAEHLER - 1 BSR MS 100 100 MS WARTEN BRA LOOP SCHLEIFE * UNTERPROGRAMM 100 MS WARTEN #12499 3 ZYKLEN MS 100 LDX MS 101 LEAX 5 ZYKLEN ZAEHLER - 1 -1 ,x BNE 3 ZYKLEN: BIS NULL MS101 RTS 5 ZYKLEN END

2.Aufgabe:

COOO COOO C003 C006 C009 COOC COOF C012 C014 C017 C01A C01C C01D COI F C021

7F 7F CC FD CC FD 86 B7 7D 2B 4C 81 22 20

C881 C883 FF04 C880 0004 C882 01 C880 C882 FB 06 F1 F1

* UEBUNG 4.6.6 AUFGABE 2 ADRESSZAEHLER ORG $COOO STEUERREGISTER LOESCHEN $C881 START CLR STEUERREGISTER LOESCHEN $C883 CLR #$FF04 LDD AUSGABE PROGRAMMIEREN STD SC880 #$0004 EINGABE PROGRAMMIEREN LDD $C882 STD ANFANGSWERT LDA LOOP #1 LAUFENDEN WERT AUSGEBEN $C880 LOOP 1 STA L00P2 TST $C882 SCHALTER TESTEN BMI L00P2 SCHALTER HIGH: WARTEN INCA SCHALTER LOW: ZAEHLEN CMPA #6 ENDWERT ? BHI LOOP GROESSER BRA KLEINER ODER GLEICH LOOP 1 END

4.Aufgabe:

COOO COOO C003 C006 C009 COOC COOF con i C012 C014 C015 C016

7F CC FD 7F 7C 86 4A 26 12 12 20

C881 FF04 C880 C880 C880 EO FD F4

* UEBUNG 4.6.6 AUFGABE 4 ORG $C000 ADRESSZAEHLER START CLR $C881 STEUERREGISTER LOESCHEN LDD #$FF04 AUSGABE PROGRAMMIEREN STD SC880 CLR $C880 AUSGABE LOESCHEN $C880 LOOP INC 7 ZYKLEN UMSCHALTEN LDA #224 2 ZYKLEN L00P1 DECA 2 ZYKLEN BNE LOOP 1 3 ZYKLEN NOP 2 ZYKLEN NOP 2 ZYKLEN BRA LOOP 3 ZYKLEN END

8 Lösungen der Übungsaufgaben

3.Aufgabe:

cooo

cooo

C003 C006 C009 COOC COOF C012 C013 C016 C019 C01A C01C C01D C020 C023 C024 C026

7F 7F CC FD CC FD 4F B7 F6 56 24 4C B7 F6 56 25 20

C881 C883 FF04 C880 0004 C882 C880 C882 FA C880 C882 FA EE

* UEBUNG 4 . 6 . 6 AUFGABE 3 $C000 ADRESSZAEHLER ORG START CLR $C881 STEUERREGISTER LOESCHEN STEUERREGISTER LOESCHEN CLR $C883 #$FF04 LDD AUSGABE PROGRAMMIEREN STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 CLRA ZAEHLER LOESCHEN STA $C880 UND AUSGEBEN L00P1 LDB $C882 EINGABE LESEN BO NACH C - B I T RORB BCC L00P1 LEITUNG IST LOW INCA LEITUNG IST HIGH: ZAEHLEN STA $C880 NEUEN ZAEHLER AUSGEBEN L00P2 LDB $C882 EINGABE LESEN RORB BO NACH C-BIT BCS L00P2 LEITUNG IST HIGH BRA L00P1 FALLENDE FLANKE END

Abschnitt 4.7.7 Bereichsadressierung 1. A u f g a b e :

COOO COOO C003 C006 C009 COOC COOF coi 1 C014 C016

F800 7F CC FD 8E B6 A7 8C 23 7E

C883 0004 C882 C100 C882 80 C6FF F9 F800

* UEBUNG 4 . 7 . 7 AUFGABE 1 MONI EQU $F800 EINSPRUNG MONITOR ORG $C000 ADRESSZAEHLER START CLR $C883 STEUERREGISTER LOESCHEN LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 LDX #$C100 ANFANGSADRESSE LADEN LDA $C882 BITMUSTER VON KIPPSCHALTERN LOOP STA X+ SPEICHERN X = X + 1 #$C6FF CMPX AUF ENDEADRESSE VERGLEICHEN BLS LOOP KLEINER ODER GLEICH JMP MONI FERTIG: SPRUNG ZUM MONITOR END

3.Aufgabe:

COOO COOO C003 C006 C009 COOC COOF C012 C015 C018 C01A C01D

7F 7F CC FD CC FD 8E B6 A6 B7 20

C881 C883 FF04 C880 0004 C882 COOO C882 86 C880 F6

* UEBUNG 4 . 7 . 7 AUFGABE 3 ORG $COOO ADRESSZAEHLER START CLR $C881 STEUERREGISTER LOESCHEN CLR $C883 STEUERREGISTER LOESCHEN LDD #$FF04 AUSGABE PROGRAMMIEREN STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 LDX #$C000 BASISADRESSE LADEN LOOP LDA $C882 LOW-ADRESSE LADEN LDA A ,X INDIZIERT A + X STA $C880 DATENBYTE AUSGEBEN BRA LOOP SCHLEIFE END

363

364

8 Lösungen

der

Übungsaufgaben

2.Aufgabe:

F806 F809 cooo cooo C004 C006 C009 COOB COOD COOF C011 COI 3 C015 C018 C01A C01D C01F C022 C024 C026 C029 C02B

10CE 86 8E E6 A7 AI 27 34 1F BD 1F BD 86 BD 35 E7 8C 23 20

F100 55 C100 84 84 84 13 06 10 F809 98 F809 20 F806 06 80 C7FF DE D9

* UEBUNG 4 . 7 . 7 AUFGABE 2 ZEICHEN AUS AKKU A AUSGEBEN AUSZ EQU $F806 AKKU HEXADEZIMAL AUSGEBEN AUSB EQU $F809 ORG $C000 ADRESSZAEHLER STAPEL AB $F100 ANLEGEN START LDS #$F100 LDA #$55 TESTWERT LOOP LDX #$C100 ANFANGSADRESSE BEREICH X ALTEN WERT RETTEN L00P1 LDB STA X TESTWERT SPEICHERN CMPA MIT SPEICHERINHALT VERGLEICHEN X BEQ L00P2 BEIDE GLEICH: SPEICHER O . K . UNGLEICH: B E I D E AKKUS NACH STAPEL PSHS A,B TFR X ,D ADRESSE NACH A UND B JSR AUSB HI GH-TEIL HEXADEZIMAL AUSGEBEN TFR B,A AUSB JSR LOW-TEIL HEXADEZIMAL AUSGEBEN LDA LERRZEICHEN #$20 LEERZEICHEN AUSGEBEN JSR AUSZ PULS A,B BEIDE AKKUS AUS STAPEL ZURUECK L00P2 STB X+ ALTEN WERT NACH SPEICHER ZURUECK CMPX #$C7FF AUF ENDADRESSE VERGLEICHEN BLS WEITER DA KLEINER ODER GLEICH L00P1 BRA FERTIG: NEUER DURCHLAUF LOOP END

4.Aufgabe:

F824 F806 COOO COOO C003 C007 COOA COOC COOE C010 C012 C014 C017 C019 C01C C01F C021 C024 C026 C028 FOOO FOOO

8E 108E BD A7 31 81 26

FOOO 0000 F824 80 21 3A F5

86 BD 86 BD 8E A6 BD 31 26 20

OA F806 OD F806 FOOO 80 F806 3F F7 D6 0100

* UEBUNG 4 . 7 . 7 AUFGABE 4 UNTERPROGRAMM ZEICHEN LESEN $F824 EIN EQU UNTERPROGRAMM ZEICHEN AUSGEBEN EQU $F806 AUSZ ORG $C000 ADRESSZAEHLER BEFEHLE #TEXT SPEICHERADRESSE LADEN START LDX LDY #0 ZEICHENZAEHLER LOESCHEN JSR E I N EINGABESCHLEIFE L00P1 STA X+ ZEICHEN SPEICHERN ADRESSE + 1 LEAY ZEICHENZAEHLER + 1 1 ,Y CMPA ENDEZEICHEN : ? #': NEIN BNE LOOP 1 * ENDEZEICHEN : ERKANNT TEXT AUSGEBEN LDA #$ OA ZEILENVORSCHUB JSR AUSZ AUSGEBEN LDA #$0D WAGENRUECKLAUF JSR AUSZ AUSGEBEN LDX #TEXT SPEICHERADRESSE LADEN X+ ZEICHEN LADEN ADRESSE + 1 L00P2 LDA JSR AUSZ ZEICHEN AUSGEBEN LEAY ZEICHENZAEHLER - 1 - 1 ,Y BNE L00P2 AUSGABESCHLEIFE BRA START NEUE EINGABE ORG $F000 ADRESSZAEHLER VARIABLENBEREICH RMB 256 TEXT 256 BYTES RESERVIERT END

8 Lösungen der Übungsaufgaben

Abschnitt 4.8.11 Datenverarbeitung

1.Aufgabe:

cooo cooo

*

C004 C007 COOA COOD C010 C013

10CE 7F 7F CC FD CC FD

C800 C881 C883 FF04 C880 0004 C882

C016 C019 C01B C01D C01F C020 C021 C022 C023 C025 C027

B6 1F 84 27 54 54 54 54 27 34 4F

C882 89 OF 15

C028 C02A C02B C02D C030 C032 C034 C037

AB 5A 26 B7 35 20 7F 20

E4

OF 02

FB C880 02 E2 C880 DD

UEBUNG 4 . 8 . 1 1 AUFGABE 1 ADRESSZAEHLER ORG $COOO START #$C800 S - S T A P E L Z E I G E R LADEN LDS STEUERREGISTER LOESCHEN CLR $C881 CLR $C883 STEUERREGISTER LOESCHEN #$FF04 AUSGABE PROGRAMMIEREN LDD STD $C880 #$0004 EINGABE PROGRAMMIEREN LDD $C882 STD * EINGABE LESEN UND IFAKTOREN TRENNEN EINGABE NACH AKKU A LOOP LDA $C882 NACH B KOPIEREN TFR A,B MASKE 0000 1111 FAKTOR 2 GETRENNT ANDA #$0F BEQ NULL B E I NULL ERGEBNIS NULL LSRB FAKTOR 1 VERSCHIEBEN LSRB LSRB LSRB BEQ NULL B E I NULL ERGEBNIS NULL PSHS A FAKTOR 2 NACH STAPEL CLRA PRODUKT LOESCHEN * MULTIPLIKATIONSSCHLEIFE ADDA L00P1 S PRODUKT = PRODUKT + FAKTOR 1 ( S T A P E L ) DECB FAKTOR 2 VERMINDERN BNE LOOP 1 B I S NULL STA $C880 PRODUKT AUSGEBEN PULS A S T A P E L Z E I G E R WIEDERHERSTELLEN BRA LOOP NEUER DURCHLAUF NULL CLR $C880 AUSGABE LOESCHEN ERGEBNIS NULL BRA LOOP NEUER DURCHLAUF END

2.Aufgabe:

COOO COOO C004 C007 COOA COOD C010 C013 C016 C018 C01B C01E C020 C022 C023 C025 C027

10C E 7F 7F CC FD CC FD 86 B7 F6 2B 8B 19 81 23 20

C800 C881 C883 FF04 C880 0004 C882 01 C880 C882 FB 01 49 F1 ED

* UEBUNG 4 . 8 . 1 1 AUFGABE 2 ORG $C000 ADRESSZAEHLER START LDS #$C800 S - S T A P E L Z E I G E R LADEN CLR $C881 STEUERREGISTER LOESCHEN CLR $C883 STEUERREGISTER LOESCHEN LDD #$FF04 AUSGABE PROGRAMMIEREN STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 L00P1 LDA #1 ANFANGSZAHL LADEN L00P2 STA $C880 LAUFENDE ZAHL AUSGEBEN L00P3 LDB $C882 KOMMANDOSCHALTER LESEN BMI L00P3 SCHALTER HIGH: WARTEN ADDA #1 SCHALTER LOW: ZAEHLEN STATT INCA DAA DEZIMALKORREKTUR CMPA #$49 MIT ENDWERT VERGLEICHEN BLS LOOP2 K L E I N E R / G L E I C H : AUSGEBEN BRA L00P1 GROESSER: M I T ANFANGSWERT BEGINNEN END

365

366

8 Lösungen

der

Übungsaufgaben

3.Aufgabe:

cooo

cooo C004 C007 COOA COOD C010 C013 C016 C019 C01B C01C C01D C01F C022 C024 C027

10CE 7F 7F CC FD CC FD B6 C6 3D 4D 26 F7 20 7F 20

C800 C881 C883 FF04 C880 0004 C882 C882 OA

05 C880 F2 C880 ED

* UEBUNG 4 . 8 . 1 1 AUFGABE 3 ORG $C000 ADRESSZAEHLER START LDS #$C800 S - S T A P E L Z E I G E R LADEN CLR $C881 STEUERREGISTER LOESCHEN CLR $C883 STEUERREGISTER LOESCHEN LDD #$FF04 AUSGABE PROGRAMMIEREN STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 LOOP LDA $C882 ZAHL LESEN LDB #10 FAKTOR 10 LADEN MULTIPLIZIEREN MUL TSTA GROESSER 8 B I T ? BNE JA: FEHLER FEHL STB $C880 N E I N : LOW-TEIL AUSGEBEN BRA LOOP FEHL CLR $C880 FEHLERMELDUNG AUSGABE LOESCHEN BRA LOOP END

4.Aufgabe:

F824 COOO COOO C004 C007 COOA COOD C010 C012 C014 C016 C018 C01A C01D C01F C021 C023 C025 C027 C029 C02C C02E C030 C033

10CE 7F CC FD BD 81 25 81 22 80 B7 20 81 25 81 22 80 B7 20 86 B7 20

C800 C881 FF04 C880 F824 30 1A 39 07 30 C880 EE 41 OB 46 07 37 C880 DF FF C880 D8

* UEBUNG 4 . 8 . 1 1 AUFGABE 4 EIN EQU $F824 EINGABE-UNTERPROGRAMM ORG SCOOO ADRESSZAEHLER START LDS #$C800 S - S T A P E L Z E I G E R LADEN CLR $C881 STEUERREGISTER LOESCHEN LDD #$FF04 AUSGABE PROGRAMMIEREN STD $C880 LOOP JSR EIN ZEICHEN VOM TERMINAL HOLEN CMPA #'0 KLEINER ZEICHEN 0 ? BLO FEHL J A : FEHLER CMPA #'9 GROESSER ZEICHEN 9 ? BHI BUCH JA: AUF BUCHSTABEN PRUEFEN SUBA #$30 Z I F F E R 0 - 9 DECODIEREN STA $C880 BINAER AUSGEBEN BRA LOOP BUCH CMPA KLEINER BUCHSTABE A ? #'A BLO JA: FEHLER FEHL CMPA #' F GROESSER BUCHSTABE F ? BHI FEHL J A : FEHLER SUBA #$37 BUCHSTABE A - F DECODIEREN STA $C880 BINAER AUSGEBEN BRA LOOP FEHL LDA #$FF FEHLERMELDUNG STA AUSGEBEN $C880 BRA LOOP END

8 Lösungen

der Übungsaufgaben

Abschnitt 4.9.4 Unterprogrammtechnik

1.Aufgabe:

cooo

cooo

C004 C007 COOA COOD C010 C013 C016 C019 C01C C01E C021

10CE 7F 7F CC FD CC FD 7F B6 8D 7C 20

C023 C024 C026 C027 C029 C02B C02D C02E C030 C031 C033

4D 26 39 34 C6 21 5A 26 4A 26 35

C800 C881 C883 FF04 C880 0004 C882 C880 C882 05 C880 F6

01 07 C6 00 FD F6 87

* UEBUNG 4 . 9 . 5 AUFGABE 1 ORG $C000 ADRESSZAEHLER START LDS #$C800 S - S T A P E L Z E I G E R LADEN CLR $C881 STEUERREGISTER LOESCHEN CLR $C883 STEUERREGISTER LOESCHEN LDD #$FF04 AUSGABE PROGRAMMIEREN STD $C880 LDD #$0004 EINGABE PROGRAMMIEREN STD $C882 CLR $C880 AUSGABE LOESCHEN LOOP LDA $C882 FAKTOR VON SCHALTERN LADEN BSR NMS1 N * 1 MS WARTEN INC $C880 AUSGABE ERHOEHEN BRA LOOP * UNTERPROGRAMM N * '1 MS WARTEN N I N AKKU A NMS1 TSTA FAKTOR TESTEN BN E NMS 11 B E I UNGLEICH NULL WARTEN RTS B E I NULL SOFORT ZURUECK NMS 11 PSHS B,A,CC REGISTER RETTEN NMS 12 LDB #198 2 ZYKLEN BRN NMS 13 3 ZYKLEN NOP NMS 13 DECB 2 ZYKLEN * 198 BN E NMS 13 3 ZYKLEN * 198 DECA 2 ZYKLEN BN E NMS 12 3 ZYKLEN PULS C C . A . B ,,PC REGISTER ZURUECK UND RUECKSPRUNG END

2.Aufgabe:

F800 COOO COOO C004 C007 C009 COOC COOF CO11 C013 C014 C015 C016 C017 C019 C01A C01B C01D C01F C021 FOOO FOOO F002

10CE BE 8D BF 7E

C800 FOOO 06 F002 F800

34 1F 58 49 58 49 E3 58 49 1F 35 32 39

16 10

62

01 06 62

0002 0002

* UEBUNG 4 . 9 . 5 AUFGABE 2 MONI EQU $F800 EINSPRUNG MONITOR $C000 ORG ADRESSZAEHLER START LDS #$C800 S - S T A P E L Z E I G E R LADEN LDX ZAHL MULTIPLIKAND AUS SPEICHER LADEN MUL10 BSR MAL 10 M U L T I P L I Z I E R E N STX" ERG PRODUKT NACH SPEICHER JMP MONI SPRUNG ZUM MONITOR * UNTERPROGRAMM X = X * 10 M U L T I P L I Z I E R E N MUL10 PSHS X,B,A ALTEN WERT UND H I L F S R E G I S T E R RETTEN TFR X ,D ALTEN WERT NACH DOPPELAKKU ASLB 1 B I T LINKS = * 2 ROLA ASLB 1 B I T L I N K S = * 2 GIBT * 4 ROLA ADDD 2 ,S ALTEN WERT DAZU GIBT * 5 ASLB 1 B I T L I N K S = * 2 GIBT * 1 0 ROLA D,X TFR ERGEBNIS NACH X-REGISTER PULS A,B H I L F S R E G I S T E R AUS STAPEL LEAS 2 ,S WEGEN PSHS X ZEIGER BERICHTIGEN RTS ORG $F000 ADRESSZAEHLER TESTWERTE ZAHL RMB 2 ZAHL VOR DEM STARTEN LADEN ERG RMB 2 ERGEBNIS NACH STOP KONTROLLIEREN END

367

8 Lösungen der Übungsaufgaben

368

3.Aufgabe:

cooo cooo C004 C007 COOA COOC COOF C012 C015 C017 C019 C01C C01F C021 C023 C025 C027 C029 C02B F000 FOOO F002 F004 F006

F800 10CE BE FC 8D FD BF 7E

C800 FOOO F002 09 F004 F006 F800

1E 34 8E 10A3 25 A3 30 20 32 1E 39

01 10 0000 E4 06 E4 01 F5 62 01 0002 0002 0002 0002

* UEBUNG 4.9.5 AUFGABE 3 MONI EINSPRUNG MONITOR EQU $F800 ADRESSZAEHLER ORG $C000 S-STAPELZEIGER LADEN START LDS #$C800 DIVIDENDEN AUS SPEICHER LADEN LDX DIVID DIVISOR AUS SPEICHER LADEN LDD DISOR BSR DIVXD DIVIDIONSUNTERPROGRAMM QUOTIENTEN NACH SPEICHER STD QUOT STX REST REST NACH SPEICHER JMP MONI * UNTERPROGRAMM X : D QUOTIENT IN D REST IN X DI VXD EXG D = DIVIDEND X = DIVISOR D,X PSHS X DIVISOR NACH STAPEL LDX #0 QUOTIENT LOESCHEN DIVXD1 CMPD DIVIDEND MIT DIVISOR VERGLEICHEN S DIVXD2 KLEINER: FERTIG BLO SUBD S GROESSER/GLEICH: ABZIEHEN QUOTIENT + 1 LEAX 1 ,x BRA DIVXD1 SUBTRAKTIONSSCHLEIFE 2 ,S PSHS X AUFHEBEN DIVXD2 LEAS D,X D = QUOTIENT X = REST EXG RTS $F000 ORG ADRESSZAEHLER TESTWERTE 2 DIVIDEND VOR START LADEN DIVID RMB DIVISOR VOR START LADEN 2 DISOR RMB RMB 2 QUOTIENT NACH STOP PRUEFEN QUOT RMB 2 REST NACH STOP PERUEFEN REST END

8 Lösungen

der Übungsaufgaben

3.Aufgabe Zusatzlösung:

F800 COOO COOO C004 C007 C009 C00C C00E coi 1 C013 C016 C018 C01B C01 C020

10CE BE 8D F7 8D F7 8D F7 8D F7 1F F7 7E

C800 FOOO 1A F002 1A F003 1A F004 1A F005 10 F006 F800

CC 20 CC 20 CC 20 CC 1E 34 8E 10A3 25 A3 30 C045 20 C 0 4 7 32 C 0 4 9 1E C04B 39 F000 FOOO F002

2710 OD 03E8 08 0064 03 OOOA 01 10 0000 E4 06 E4 01 F5 62 01

C023 C026 C028 C02B C02D C030 C032 C035 C037 C039 C03C C03F C041 C043

F003 F004 F005

F006

0002 0001 0001 0001 0001 0001

* UEBUNG 4 . 9 . 5 AUFGABE MONI EQU SF800 ORG $C000 START LDS #$C800 LDX DIVID BSR D10000 STB S10000 BSR D1000 STB S1000 BSR D100 STB S100 BSR D10 STB S10 TFR X,D STB S1 JMP MONI * UNTERPROGRAMM X : D D10000 LDD #10000 BRA DIVXD D1000 LDD #1000 BRA DIVXD D100 LDD #100 BRA DIVXD D10 LDD #10 DIVXD EXG D,X PSHS X LDX #0 DIVXD1 CMPD S BLO DIVXD2 SUBD S LEAX 1 ,x BRA DIVXD1 DIVXD2 LEAS 2 ,S

EXG

RTS ORG DIVID RMB S 1 0 0 0 0 RMB S1000 RMB S100 RMB S10 RMB S1 RMB

END

D,X

$F000 2 1 1 1 1 1

3 ZUSATZLOESUNG EINSPRUNG MONITOR ADRESSZAEHLER S - S T A P E L Z E I G E R LADEN DIVIDENDEN AUS S P E I C H E R LADEN DURCH 10000 T E I L E N ZEHNTAUSENDERSTELLE DURCH 1000 D I V I D I E R E N TAUSENDERSTELLE DURCH 100 T E I L E N HUNDERTERSTELLE DURCH 10 T E I L E N ZEHNERSTELLE REST I S T E I N E R S T E L L E EINERSTELLE QUOTIENT IN D REST IN X D I V I D E N D IST 10 0 0 0 D I V I D E N D IST

1000

DIVIDEND IST

100

D I V I D E N D IST 10 D = DIVIDEND X = DIVISOR D I V I S O R NACH S T A P E L QUOTIENT LOESCHEN D I V I D E N D MIT D I V I S O R VERGLEICHEN KLEINER: FERTIG GROESSER/GLEICH: ABZIEHEN QUOTIENT + 1 SUBTRAKTIONSSCHLEIFE

PSHS X

AUFHEBEN

D = QUOTIENT

X = REST

ADRESSZAEHLER TESTWERTE D I V I D E N D VOR START LADEN ZEHNTAUSENDERSTELLE TAUSENDERSTELLE HUNDERTERSTELLE ZEHNERSTELLE EINERSTELLE

369

9

Ergänzende und weiterführende Literatur

Kobitzsch, W. Mikroprozessoren - A u f b a u und Wirkungsweise Teil 1: G r u n d l a g e n Oldenbourg München - Wien 2 . A u f l a g e 1981 Kobitzsch, W. Mikroprozessoren - A u f b a u und Wirkungsweise Teil 2: Beispiele und Anwendungen Oldenbourg München - Wien 1980 T i e t z e , U., S c h e n c k , Ch. Halbleite r - S c h a l t u n g s t e c h n i k Springer Verlag Berlin Motorola M6800 Mikroprozessor P r o g r a m m i e r h a n d b u c h F i r m e n s c h r i f t Motorola Leventhal, L.A. 6800 - P r o g r a m m i e r e n in Assembler t e - w i - V e r l a g München 1978 Motoro la Microcomputer Components 6800 8 - B i t M i c r o p r o c e s s i n g Unit 6802 8 - B i t Microprocessing Unit 6809 8 - B i t Microprocessing Unit F i r m e n s c h r i f t e n Motorola Zaks, R., L a b i a k , W. P r o g r a m m i e r u n g des 6809 Sybex 1984 Leventhal, L.A. 6809 Assembly L a n g u a g e Programming Os b o r n e / M c G r a w - H i l l 1981

10

Anhang

10.1

Zahlentabellen 0

1

2

3

u

5

6

7

8

00 Ol 02 03 04 05 06 07_

0000 0016 0032 0048 0064 0080 0096 0112

0001 0017 00 3 3 004 9 006 5 0081 0097 0113

0002 0018 0 0 34 0050 0066 0082 0098 0114

0003 0019 0 0 35 0051 006 7 008 3 0099 0115

0004 0020 0 0 36 0052 0068 0084 0100 0116

0006 0022 0038 0054 0070 0086 0102 0118

0007 0023 0 0 39 0055 0071 0087 0103 0119

0008 0024 0040 0056 0072 0088 0104 0120

08 09 OA OB OC OD OE OF

0128 0144 0160 0176 0192 0208 0224 0240

0129 0130 0145 0146 0161 0162 0177 0178 0193 0194 0209 0210 0225 0226 0241 0242

0131 0147 0163 0179 0195 0211 0227 0243

0132 0133 0134 0148 0149 0 1 5 0 0164 0165 0166 0180 0181 0182 0196 0197 0198 0212 0213 0214 0228 0229 0230 0244 0245 0246

0135 0151 0167 0183 0199 0215 0231 0247

10 11 12 13 14 15 16 17_

0256 0272 0288 0 304 0320 0336 0352 0368

0257 0273 0289 0305 0321 0337 035 3 0369

0258 0274 0290 0306 0322 0338 0354 0370

0259 0275 0291 0307 0323 0339 0355 0371

0260 0276 0292 0308 0324 0340 0356 0372

18 19 1A 1B IC 1D IE 1F_

0384 04 0 0 0416 0432 04 4 8 0464 0480 0496

0385 0401 0417 0433 0449 0465 0481 0497

0386 0387 0388 0402 0403 0404 0418 0419 0420 0 4 3 4 04 35 04 36 0450 0451 0452 0466 0467 0468 0 4 8 2 048 3 0484 0498 0499 0500

20 21 22 23 24 25 26 27_

0512 0513 0528 0529 0544 0545 0560 0561 0576 0577 0592 0593 0608 0609 0624 0625

0

1

0514 0515 0 5 3 0 05 31 0546 0547 0 5 6 2 056 3 0578 0579 0594 0595 0610 0611 0626 0627

28 29 2A 2B 2C 2D 2E 2F_

0640 0656 0672 0688 0704 0720 0 7 36 0752

0641 0657 067 3 0689 0705 0721 0 7 37 0753

30 31 32 33 34 35 36 37

0768 0784 08 00 0816 0832 0848 0864 0880

0769 0785 0801 0817 0833 0849 0365 0881

0770 0786 0802 0818 0 8 34 0850 0866 0882

38 39 3A 3B 3C 3D 3E 3F

0896 0912 0928 0944 0960 0976 0992 1008

0897 0913 0929 0945 0961 0977 0993 1009

0898 0899 0900 0914 0915 0915 0930 0931 0932 0 9 4 6 094 7 0 9 4 8 0 9 6 2 096 3 0 9 6 4 0978 0979 0980 0994 0995 0996 1010 1011 1012

0005 0021 0037 0053 0069 008 5 0101 0117

9

0009 0025 0041 0057 007 3 0089 0105 0121

A

B

c

D

E

F

0011 0027 004 3 0059 0075 0091 0107 0123

0012 0028 0044 0060 0076 0092 0108 0124

0013 0029 004 5 0061 0077 0093 0109 0125

0014 0 0 30 0046 0062 0078 0094 0110 0126

0015 0031 004 7 006 3 0079 0095 Olli 0127

0 1 3 6 Ol 37 0152 0153 0168 0169 0184 0185 0200 0201 0216 0217 0232 0233 0248 0249

0138 0139 0154 0155 0170 0171 0186 0187 0202 0203 0218 0219 0234 0235 0250 0251

0140 0156 0172 0188 0204 0220 0236 0252

0141 0157 0173 0189 0205 0221 0237 0253

0142 0158 0174 0190 0206 0222 0238 0254

0143 0159 0175 0191 0207 0223 0239 0255

0261 0262 0263 0277 0278 0279 0293 0294 0295 0309 0310 0311 0325 0326 0327 0 3 4 1 0 3 4 2 034 3 0357 0358 0359 0373 0374 0375

0264 0280 0296 0312 0328 0344 0360 0376

0265 0281 0297 0313 0329 0345 0361 0377

0266 0282 0298 0314 0330 0346 0362 0378

0267 0283 0299 0315 0331 0347 036 3 0379

0268 0284 0300 0316 0332 0348 0364 0380

0269 0285 0301 0317 0333 0349 0365 0381

0270 0286 0302 0318 0334 0350 0366 0382

0271 0287 0303 0319 0335 0351 0367 0383

0390 0406 0422 0438 0454 0470 0486 0502

0391 0407 0423 0439 0455 0471 0487 0503

0392 0408 0424 0440 0456 0472 0488 0504

0393 0409 0425 0441 0457 0473 0489 0505

0394 0410 0426 0442 0458 0474 0490 0506

0395 0411 0427 0443 0459 0475 0491 0507

0396 0397 0398 0399 0412 0413 0414 0415 0 4 2 8 0 4 2 9 0 4 3 0 0 4 31 0444 0445 0446 0447 0460 0461 0462 0463 0476 0477 0478 0479 0 4 9 2 0 4 9 3 0494 0495 0508 0509 0510 0511

0516 0517 0 5 3 2 0 5 33 0548 0549 0564 0565 0580 0581 0596 0597 0612 0613 0628 0629

0518 0534 0550 0566 0582 0598 0614 0630

0519 0535 0551 0567 0583 0599 06i5 0631

0520 0536 0552 0568 0584 0600 0616 0632

0521 0537 0553 0569 0585 0601 0617 0633

0522 0538 0554 0570 0586 0602 0618 06 34

0523 0524 0539 0540 0555 0556 0571 0572 0587 0588 0 6 0 3 06 04 0619 0620 0635 0636

0525 0541 0557 057 3 0589 0605 0621 0637

0526 0527 0542 0543 0558 0559 0574 0575 0590 0591 0606 0607 0622 0623 0638 0639

0 6 4 2 064 3 0658 0659 0674 0675 0690 0691 0706 0707 0722 0723 0 7 3 8 07 39 0754 0755

06 4 4 0660 0676 0692 0708 0724 0740 07 56

0646 0662 0678 06 94 0710 07 26 0742 0758

0647 0663 0679 0695 0711 0727 074 3 0759

0643 0664 0680 0696 0712 0728 0744 0760

0649 0665 0681 0697 0713 0729 0745 0761

0650 0666 0682 0698 0714 07 30 0746 0762

0651 0667 068 3 0699 0715 0 7 31 0747 076 3

0652 0668 0684 0700 0716 07 32 0748 0764

0653 0669 0685 0701 0717 07 33 074 9 0765

0654 0670 0686 0702 0718 07 34 0750 0766

0771 0787 0803 0819 0835 0651 0867 088 3

0772 0788 0804 0820 08 36 0852 0868 0884

0774 0775 0776 0790 0791 0792 0806 0807 0808 0822 0823 0824 0 8 38 08 39 0 8 4 0 0854 0855 0856 0870 0871 0872 0886 0887 0888

0777 0793 0809 0825 0841 0857 0873 0889

0778 0794 0810 0826 0842 0858 0874 0890

0779 0795

0780 0781 0796 0797

0782 0798

0902 0918 0934 0950 0966 0982 0998 1014

0905 0921 0937 0953 0969 0985 1001 1017

0907 09 2 3 U9'39 0955 0971 0987 100 3 1019

0908 0909 0924 0925 0940 0941 0956 0957 0972 097 3 0988 0989 1004 1005 1020 1021

0910 0926 0942 0958 0974 0990 1006 1022

2

3

0389 0405 0421 0437 0453 0469 0485 0501

L, 5

0901 0917 0933 0949 0965 0981 0997 1013

0903 0919 0935 0951 0967 09tí 3 0999 1015

8

0904 0920 0 9 36 0952 0968 0984 1000 1016

9

0010 0026 004 2 0058 0074 0090 0106 0122

A

B

C

D

E

F

0655 0671 0687 0703 0719 0 7 35 0751 0767

0783 0799 0815 0 8 2 7 0 8 2 8 0 8 2 9 08 30 0 8 3 1 084 3 0844 084 5 0846 0847 0859 0860 0861 0862 0863 0875 0876 0877 0878 0879 0891 0892 0 8 9 3 0894 0895

o a i i 0 8 1 2 0 8 1 3 0814

0911 0927 0943 0959 0975 0991 1007 1023

372

10 Anhang

DEZ HEX KPL 00 01 02 03 04 05 06 07 08 09 10 1 1 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

10.2

00 01 02 03 04 05 06 07 08 09 OA OB OC OD OE OF 10 1 1 12 13 14 15 16 17 18 L 19 U IA 1B 1C ID IE 1 F

DEZ HEX KPL

00 FF FE FD FC FB FA F9 F8 F7 F6 F5 F4 F3 F2 Fl FO EF EE ED EC EB EA E9 ES

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

E7

E6 E5 E4 E3 E2 El

20 21 22 23 24 25 26 27 28 29 2A 2B 20 2D 2E 2F 30 31

i¿

33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F

DEZ HEX KPL

DEZ HEX KPL 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

EO DF DE DD DC DB DA D9 D8 D7 D6 D5 D4 D3 D2 DI DO CF CE CD CC CB CA C9 C8 C7 C6 C5 C4 C3 C2 C1

40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F

CO BF BE BD BC BB BA B9 B8 B7 B6 B5 64 B3 B2 B1 BO AF AE AD AC AB AA A9 A8 A7 A6 A5 A4 A3 A2 AI

96 97 98 99 100 101 102 103 104 105 106 107 108 109 1 10

111 1 12

1 1 3 114 115 1 16 117 1 18 119 120 121 122 123 124 125 126 127 128

60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71

AO 9F 9E 9D 9C 9B 9A 99 98 97 96 95 94 93 92 91 90 8F BE 80 8C 8B 8A 89 88 87 86 85 84 83 82 81 80

12

73 74 75 76 77 78 79 7A /B 7C 7D 7E 7F

ASCIl-Zeichen-Tabelle

HEX ASCII HEX A S C I I HEX A S C I I HEX ASCII HEX A S C I I HEX A S C I I HEX ASCII HEX A S C I I 00

NUL

10

DLE

20

30

0

40

@

50

P

60

70

P

01

SOH

11

DC t

21

1

31

i

41

A

§

51

'.SLA | -ÎC--U I I.LIJJ o- 118 : 2 xxxx ASL B 53 i ; 2 1 xxxx 68 2 7 •SL 78 •»ymimii ;2 xxxx i i •,SP. A — " KTI ' ! ; xxxx .'SR B —: KX1JXŒHM57 1 .2 77:3,6 67 : 2 i 7 xîx-xx -,SR — ..KTiniTMtJ 1 ! xfxpcx LSP, A —eîrnuTDfc- 11 1 2 xp

reg.

1F98

2

6

1F99

2

6

1F9A

2

6

1F9B

2 ¡6

TFR

CC. CC=>

reg.

1FA8

2

6

1FA9

2

6

tFAA

2

6

1FAB

2

TFR

DP, DP=>

reg.

1FB8

2

6

1FB9

2

6

1FBA

2

6

1FBB

2 ¡6

Befehl

Wirkung

A-Rec

B-Reg

CC-Reg

6

DP-Reg

L

Op

B

Z

Op

B Z

Op

B

Z

Op

EXG

A, A

reg.

1E8Ô

2

8

1E89

2 8

1E8A

2

8

1E8B

B 2:8

EXG

B, B

reg.

1E98

2

8

1E99

2

8

1E9A

2

8

1E9B

2,8

EXG

CC, C C < = > r e £ .

1EA8

2

8

1EA9

2 8

1EAA

2

8

1EAB

2

B

EXG

DP,

1EB8

2

8

1EB9

2

1EBA

2

8

1EBB

2

8

DPreg.

PC - R c g z B

Op

BlZ

D

=>

reg.

1FOO

2(6

1 FOI 2 i 6

2

b

_X. _*

=>

reg.

1F10

2|fi

1F11

?

fi

1 F02 2 1F1?

?:6

1F13

2:6

1F14

2:6

l U b

2

6

6

1F22

2 I 6

1F23

216

1F24

216

1F25

2

6

6

1F32

2

b

1F33!216

11-34

2 1 b U3b

1F42 [2

6

11-43

11-44

2

TF531 f " î r

TF5T

Op

B|Z

TFR

Y,

Y

=>

reg.

1F20

2

6

1F21

2

TFR

U,

U

=>

reg.

1F30

2

6

1F31

2

S,

S

=>

reg.

1F«I2T6

TFR TFR

PC, PC=>

Befehl

WCf

|2

r e g J ÏF5ÛT2"i5~ T F 4 T Z

Wirkung

D - teg

Y-f îeg

s - Reg

Wirkung

TFR TFR

X - teg

U - Reg

Befehl D,

D- !eg

8

6

Z

B'Z

1E00

!

Op

B|Z

Op

H03

2:6

11-04

Y-Rec Op

IB Z

Op

b

TF52

X-Re

Op

BIZ

Op

8

1E03

~U, Lk=>

EXG

S, S

EXG

PC,

r e i "ÏE3Ô

2

8

reg..

1É40

218

PCreg.

1È50

2

Ï Ë J T f

8

1E32

1E412

8

1E42

8 ÎË51

Wirkung

LDA

A

Reo

37

2

5+

PULS

S-Stapel

=>

Reg

Jb

2

b+

2+

5+

i ! 1 ; X|XQ :

3+

6+

S i : ; ,

!

s+ PC

S/U

Y

X

DP

;

10

b+

PULU

TO

i X,

101

BF 10

PSHS

6

30! 2+ 4+

"10" I

1

U-Stapel

3

33¡2+:4+ B7

I Reg.=>

DE

i

j

PSHU

7

31I2+I4+



STB

4

10

1

M

STD

FE

10

B

A

CCR

: 1 l!

!

10.5 Befehlstabellen des 6809

B e f e h l Wirkung CWAI SYNC SWI SWI2 SWI3

CC2 19

2

20

2

20

Befehl

Bedingung

BRA/LBRA BRN/LBRN BEQ/LBEQ BNE/LBNE BPL/LBPL BMI/LBMI BCC/LBCC BCS/LBCS BVC/LßVC BVS/LBVS BLT/LBLT BLE/LBLE BGE/LBGE BGT/LBGT BLO/LBLO BLS/LBLS BHS/LBHS BHT/CB'RT BSR/LBSR RTS RTI

immer nie Z = 0 Null Z = 1 nicht Null N = 0 positiv N = 1 neqativ C = 0 kein übertraq C = 1 Übertrag V = 0 kein uberlauf V = 0 Überlauf 2er K p l . < 0 2 e r K p l . =0 2er K p l . > 0 pos.Zahl < 0 p o s . Z a h l =0 pos.Zahl > 0 Unterproqr.Verzw. Rücksjjrung U n t e r p r . Rücksprung I n t e r r t .

I n d i z . Adr. 2 . B y t e X-Reg Operand Abstand Code +B 84 0 U ,R .R+ 0 r e g + 1 80 0 ,R++ 0 reg+2 81 u 82 0 req-1 0 ,-R 83 0 ,—R 0 reg-2 Od +d,R +4bit 0 -d,R -4bit 1d 0 88 dd,R 8bit 1 89 dddd.R 1 16bit A,R A-Reg. 8b ü 85 B,R B-Reg. 0 D,R 8B O-Reg. ü Operand dd.PCR dddd.PCR

Abstand 8bit 16bit

+z u

2 3 2 3 1 1 1 4 1 1 4

Up 20 21 27 26 2A 2R 24 25 28 29 2D 2F 2C 2E 25 23 24 22 80 39 3B

kurz B Z 2 3 2 3 2 3 2 3 2 3 ? 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 7 1 5 1 5/1E

Y-Reg U-Reg Code +B +Z Code +B A4 U U 14 U 0 2 CU AO u ü 3 C1 A1 ü 0 2 C2 A2 0 0 3 C3 A3 0 0 1 4d 0 2d 0 1 bd 0 3d 1 1 C8 i 1 A8 2 4 C9 A9 2 Ab U 1 Cb ü 0 1 C5 A5 0 Aß 0 4 CB U

2.Byte 3 . Byte Code +B +Z 8C 1 1 dd 8D 2 5 dd

Abstand 2 . B y t e 3 . Byte Code +B +Z 9C 1 4 dd 9D 2 8 dd 9F 2 5 nn

(dd.PCR) 8 b i t (dddd.PCR) 1 6 b i t (nnnn) absöl.

Z 5 5 5/6 5/6 5/6 5/6 5/6 5/6 5/6 5/6 5/6 5/6 5/6 5/6 5/6 5/6 5/6 5/6 9

+z u

2 3 2 3 1 1 1 4 1 1 4

S-Reg Code +B L4 U

tu t1

E2 E3 6d /d E8 E9 tb E5 kB

u

0 0 0 0

u

1 2

u 0 0

+z u

2 3 2 3 1 1 1 4 1 1 4

3.Byte

4.Byte

dd dd

dd

3.Byte

4.Byte

dd dd

dd

4.Byte

dd

I n d i r . A d r . 2 . B y t e X- Reg Y- Reg Operand Abstand Code + B I + Z Code + B I + Z 94 0 0 3 B4 ö! 3 ( ,R) 91 Ol 6 B1 ( ,R++) 0 reg+2 0 6 93 0 6 B3 Ol 6 ( ,—R) 0 reg-2 98 (dd.R) 8bit 1 4 B8 1 ! 4 (dddd.R) 1 6 b i t 99 2 7 B9 2 i 7 A-Reg. 96 (A,R) Ol 4 B6 0 4 Ol 4 B-Re^. 95 (B,R) Ol 4 B5 (D,R) 9B D-Reg. 0 | 7 BB 0| 7

Operand

lang 0p B 16 3 1021 4 1027 4 1026 4 102A 4 102B 4 1024 4 1025 4 1028 4 1029 4 102D 4 102F 14 102C 4 102 E 4 1025 4 1023 4 1024 4 1022 4 17 3

U-Reg S-Reg Code|+B +Z Code| +B|+Z D4 \ 0 3 F4 ; 0! 3 D1 : 0 6 F1 Ol 6 ÖT~6 D3 I 0 6 F3 08 ' 1 - 4 F8 11 4 09 ' 2 i 7 F9 ! 2 7 D6 ! 0 ' 4 F6 0 4 D5 I 0 ! 4 F5 0 4 DB | 0 7 FB 0 7

4.Byte

dd nn

379

380

10 Anhang

Befehl Wirkung CLRA

A