Table Of ContentHeidelberger Taschenblicher Band 141
R. Alletsee · G. Umhauer
Assembler II
EinLennprogrannna
Mit einem Geleitwort von
Prof. Dr.-Ing. E. h. Konrad Zuse
Mit tiber 250 Abbildungen und Formularen
und 83 Aufgaben
Springer-Verlag
Berlin· Heidelberg· New York 1974
RAINER ALLETSEE
GERD F. UMHAUER
Siemens Aktiengesellschaft, Bereich Datentechnik,
Schule ffu Datenverarbeitung, Miinchen
ISBN-13; 978-3-540-06515-9 e-ISBN-13: 978-3-642-96182-3
DOl: 10.1007/978-3-642-96182-3
Das Werk ist urheberrechtlich geschiitzt. Die dadurch begriindeten Rechte, insbe
sondere die der Ubersetzung, des Nachdruckes, der Entnabme von Abbildungen, der
Funksendung, der Wiedergabe auf photomecbanischem oder iilmlichem Wege und
der Speicherung in DatenverarbeitungsanIagen bleiben, auch bei nur auszugsweiser
Verwertung, vorbehaiten.
Bei Vervielfliltigungen fUr gewerbliche Zwecke ist gemaS § 54 UrhG eine Vergiitung
an den Verlag zu zahlen, deren Hohe mit dem Verlag zu vereinbaren ist.
© by Springer-Verlag Berlin, Heidelberg 1974
Softcover reprint of the hardcover i st edition
Die Wiedergabe von Gebraucllsnamen, Handeisnamen, Warenbezeichnungen usw. in
diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme,
daB solche Namen im Sinne der Warenzeichen-und Markenschutz-Geselzgebung aIs
frei zu betrachten waren und daber von jederrnann benutzt werden diirften.
Gesamtherste\lung: Offsetdruckerei Julius Beltz oHG.
Geleitwort
Als die Computer nach ihren ersten Pionierjahren etwa zwischen 1950
und 1960 in die Praxis Eingang fanden, lieS sich kaum voraussehen,
welche Bedeutung einmal der organisatorische Teil einschlieBlich der
Programmierung erlangen wtirde. Heute wissen wir, daB beim Compu
tereinsatz die sogenannte »Software« mindestens so wichtig ist, wie die
eigentliche »Hardware«. Auch dabei haben wir ein weites Feld, welches
von strengen Theorien bis zu praxisbezogenen Arbeiten reicht.
Das vorliegende Buch dient nun voU und ganz dem praktischen Einsatz
der Computer. Es gibt ein gutes Bild davon, welche ungeheure Kleinar
be it zu leisten ist, urn die moderne elektronische Datenverarbeitung in
Gang zu setzen und in Betrieb zu haIten. Das zwingt zu einer neuen Gei
steshaltung und zu einer strengen Disziplin in der Verwendung von Ideen
und Mitteln. Jedes Zeichen, jede Aktion, jede Anweisung muB gut
durchdacht sein, und es ist kein Platz ftir Schwiirmerei mit unausgegore
nen Ideen.
So konnte sich die Datenverarbeitung auch tiber ihr eigenes Arbeitsge
biet hinaus positiv auswirken und in einer in vieler Hinsicht verworrenen
Zeit formend und bildend ftir die ganze GeseUschaft wirken, indem ihr
Geist tiber eigentliche Fachkreise hinaus wirksam wird.
Htinfeld, im August 1973 Konrad Zuse
v
Vorwort
AIle Bereiche aus Wirtschaft, Wissenschaft, Technik und Verwaltung be
dienen sich in der Praxis in zunehmendem MaBe der modernen elektroni
schen Datenverarbeitung.
Dabei erweist es sich in vielen Anwendungsfallen als besonders effek
tiv, wenn die technischen Moglichkeiten dieser Anlagen auch wirklich
genutzt werden, d. h. in moglichst maschinennaher Sprache - speicher
platz- oder zeitoptimal - programmiert werden kann. Das aber setzt
fachlich fundierte Sachkenntnis voraus.
Der Bedarf an qualifizierten Fachleuten wlichst heute schon schneller,
als er von den offentlichen, den privaten oder den Schulen der Hersteller
von Datenverarbeitungsanlagen befriedigt werden kann. Es ist das Ziel
des vorliegenden dreiteiligen Lernprogramms »Assembler«, hier eine
Brucke zwischen Theorie und Praxis zu schlagen.
Das Buch ist - neben seinem Wert fur den (Anfangs-)Programmie
rer - insbesondere gedacht fur die sekundlir mit dem Assembler befaBten
Berufe, wie Operateure, Wartungstechniker, Organisatoren, Systembera
ter und Vertriebsbeauftragte, zugleich jedoch auch - und dies erweist sich
in den heutigen Bildungs-und Ausbildungskonzepten -fur Informanden,
SchUler, Studenten oder Lehrer weiterfuhrender Schulen. Die Assembler
sprache vermittelt dabei einen auBergewohnlich engen Kontakt zur prak
tischen Datenverarbeitung. Durch die Konzeption als Lernprogramm
konnte die abstnikte Definition der Assemblersprache obendrein so aufbe
reitet werden, daB die Basis fUr das Verstlindnis auch eines der strengen
algorithmischen Denkweise ungewohnten Lesers geschaffen wurde. Einer
seits wurde das Assembler-Reglement zwar hinreichend exakt erhalten,
andererseits aber wurden die formalen Regeln aus didaktischen Grunden
so groBzugig ausgelegt, daB sie dem sich einarbeitenden Leser stets ver
standlich bleiben.
Der Stoffumfang der drei Teile ist bei alIer bewuBten Beschrankung
so gewahlt, daB er etwa dem in den meist zweiwochigen Grundlehrgangen
vermittelten Wissen entspricht. Die behandelten Sprachelemente und -re
geln sind, obwohl die Assemblersprache zu den anlagenabhangigen Spra
chen zlihlt, auf der Basis des Siemens-Systems 4004 und der IBM-Systeme
360/370 weitestgehend identisch.
VI
Das Lernziel von Teil II ist die selbstiindige Programmierung eines ab
lauffiihigen Assemhlerprogramms. Hierzu wird das Befehlsspektrum
gegeniiber Teil I betriichtlich erweitert und die erforderliche Kenntnis
der Intern- und EinlAusgabeverarbeitung erworben.
Der AnstoB zur Entwicklung des vorliegenden Lernprogramms »As
sembler« kam aus dem Hause Siemens, insbesondere aus der dorti
gen Schule fur Datenverarbeitung. Durch die wertvollen Anregungen und
Hinweise zahlreicher Mitarbeiter und die vielen uns zur Verfugung ge
stellten Erfahrungen konnte das Gesamtvorhaben in relativ kurzer Zeit
erstellt und zugleich zur letzten Auspragung gebracht werden.
Dem Springer-Verlag gilt unser besonderer Dank fur die druck- und
satztechnische Beratung, das Eingehen und Entgegenkommen bei Auf
machung und Ausstattung sowie die freundliche Betreuung des Vorha
bens in allen Phasen seiner Entstehung.
Munchen, im Januar 1974 R. Alletsee
G. Umhauer
VII
Hinweise fiir Tell II
Lernziel
Nach Durcharbeiten von Teil II kann ein ablauffahiges Assemblerpro
gramm mit Intern- und Ein/A usgabeverarbeitung programmiert werden,
wie es von Seite 77 an ersichtlich ist.
Voraussetzungen
Urn diesen Teil II mit Erfolg zu bearbeiten, sollten die Grundkenntnisse
der Assemblersprache vorhanden sein, wie sie in Teil I dieses Lern
programms vermittelt wurden.
Handhabung
Die in vorliegendem Buch angewandte Lernmethode umfaBt einen Lern
teil (Kapitel 1 bis 4), einen Losungsteil (Kapitel 5) und einen Anhang
(Kapitel 6). Durch die Beantwortung der Fragen im Lernteil konnen
Verstandnis und Wissen iiberpriift werden. Die Losungen der jeweiligen
Aufgaben sind im Losungsteil aufgefiihrt.
Der Anhang dient vornehmlich als Nachschlagewerk, in dem eine Zu
sammenfassung aller behandelten Befehle und Anweisungen enthalten
ist, und sollte vor aHem dann benutzt werden, wenn verschiedene Sach
gehalte im Lernteil selbstandig aufzusuchen sind.
VIII
Inhaltsverzeichnis
1. Relative Adressierung .......... 1
1.1. Bedeutung der relativen Adressierung 1
1.2. Laden von Registern, BALR 5
1.3. Die Assembleranweisung USING 7
1.4. Sternadressen .......... 12
2. Die Programmierung der Ein/Ausgabe 14
2.1. Die Ein/Ausgabe von Daten 14
2.2. Makroaufrufe zur Dateibehandlung 15
2.2.1. Die DateierkHirung, DTFSR 16
2.2.2. Der Makroaufruf DTFEN 24
2.2.3. OPEN und CLOSE 24
2.3. Der Makroaufruf CNTRL 25
3. Einfiihrung in die Befehlsliste . 28
3.1. Die Befehle MVC, MVI 28
3.2. Die Konstantentypen X und B 31
3.3. Vergleichsoperationen, CLC, CLI 32
3.4. Sprungbefehle .......... 34
3.4.1. Pseudobefehle ...... 36
3.4.2. Sprungbefehle fiir Unterprogrammroutinen, BAL, BCR 36
3.5. Dezimalarithmetische Befehle . . . . . . . . 41
3.5.1. Der Befehl PACK .......... 41
3.5.2. Addition und Multiplikation, AP, MP 44
3.5.3. Die P-Konstante ....... 46
3.5.4. Anwendungen .......... 47
3.5.5. Die Befehle UNPK und MVZ .. 52
3.5.6. Division und Subtraktion, DP, SP 54
Obungen zu den Kapiteln 1 bis 3 57
4. Anwendungsfall am Beispiel eines Lohnabrechnungsprogramms 60
4.1. Aufgabenstellung 60
4.2. Programmablaufplan ...... . 62
4.3. Codierung ...... . 64
4.4. Assemblierung und Programmlauf 73
4.5. PRINT, TITLE, ORG ...... . 81
Ausblick 84
5. Losungen 85 A1
IX
6. Anhang .......... 106 A22
6.1. Die Assemblersprache 107 A23
6.2. Befehle . . . . . . . . 109 A25
6.2.1. Move Characters, MVC 110 A26
6.2.2. Move Immediate, MVI 111 A27
6.2.3. Move Zones, MVZ .. 112 A28
6.2.4. Compare Logical Characters, CLC 113 A29
6.2.5. Compare Logical Immediate, CLI 114 A30
6.2.6. Pack, PACK. . . . . . . 115 A31
6.2.7. Unpack, UNPK . . . . . . . 116 A32
6.2.8. Add Decimal Packed, AP . . 117 A33
6.2.9. Subtract Decimal Packed, SP 118 A34
6.2.10. Multiply Decimal Packed, MP 119 A35
6.2.11. Divide Decimal Packed, DP 120 A36
6.2.12. Branch And Link, BAL 121 A37
6.2.13. Branch And Link Register, BALR 122 A38
6.2.14. Branch on Condition, BC . . . . . 123 A39
6.2.15. Pseudobefehle . . . . . . . . . . . 124 A40
6.2.16. Branch on Condition Register, BCR 125 A41
6.3. Assembleranweisungen ......... 126 A42
6.3.1. Programmanfang, START 126 A42
6.3.2. Programmidentifikation, TITLE .. 127 A43
6.3.3. Steuerung der Protokollierung, PRINT 127 A43
6.3.4. Die USING-Anweisung 128 A44
6.3.5. Define Storage, DS 129 A45
6.3.6. Define Constant, DC 131 A47
6.3.7. Die ORG-Anweisung 133 A49
6.3.8. Die END-Anweisung 134 A50
6.4. Makroaufrufe ........ 135 A51
6.4.1. DateierkHirung flir ein Geriit mit seriellem Zugriff,
DTFSR . . . . . . . . . . . . . . . . . . . . . 135 A51
6.4.2. Ende der Dateierkliirungen, DTFEN 137 A53
6.4.3. Eroffnen Datei, OPEN .. 138 A54
6.4.4. AbschlieBen Datei, CLOSE . 138 A54
6.4.5. Lesen eines Satzes, GET 139 ASS
6.4.6. Ausgeben eines Satzes, PUT. 139 A55
6.4.7. Steuern eines Geriits, CNTRL 140 A56
6.4.8. Programmende, EO] .. 140 A56
6.5. EBCDI-Code-Tabelle . . . . . . . . . 141 A57
6.6. Rechnerinterne Datendarstellung ... 143 A59
6.7. Umwandlungstabelle Sedezimal-Dezimal 144 A60
6.8. Verzeichnis einiger symbolischer Geriitenamen 145 A61
Literaturverzeichnis 146
Sachverzeichnis . . . 147
x
Inhaltsiibersicht Teil I
1. Grundlagentest, einfiihrende Dberlegungen und MVC-Befehl
2. Konstanten-und Speicherbereichsdefinitionen, Assembleranweisungen
3. Befehlsformat, AdreBpegel und AdreBbuch
4. Dbersetzungsvorgang, Modul-Phase
5. Ein/Ausgabe mit den Makroaufrufen GET und PUT
6. Vergleichs-und Sprungbefehle
7. Losungen und Erlauterungen zu den zahlreichen Fragen, Aufgaben und
Programmiibungen
8. Anhang in Form einer knappen Zusammenfassung aller behandeIten Befehle
und Anweisungen, jeweils mit Beispielen
Inhaltsiibersicht Teil III
1. Dualarithmetik mit Registerbefehlen
2. Dualarithmetik mit RX-Befehlen, sowie die Programmierung einer Tabellen
verarbeitung als Anwendung der Indexadressierung
3. Adressenrechnung
4. Druckaufbereitung mit dem EDIT-Befehl an einer Vielzahl von moglichen
Aufgabenstellungen
5. Code-Umsetzung mit dem Translate-Befehl
6. Programmunterteilung und -verkniipfung, Modultechnik und Segmentierung
7. Spezielle Obungen und Programme zum gesamten Stoffumfang aller drei
Teile
8. Losungen und Erlauterungen der Fragen, Aufgaben und Programme
9. Anhang mit Zusammenstellung aller behandelten Befehle und Anweisungen
XI