lehrerbibliothek.deDatenschutzerklärung
Assembler Grundlagen der Programmierung
Assembler
Grundlagen der Programmierung




Marcus Roming, Joachim Rohde

mitp-Verlag
EAN: 9783826606717 (ISBN: 3-8266-0671-X)
474 Seiten, paperback, 17 x 24cm, 2003, mit CD

EUR 24,95
alle Angaben ohne Gewähr

Umschlagtext
Das Buch führt in die Grundlagen der Sprache Assembler ein und beschäftigt sich mit der Assembler-Programmierung unter den Betriebssystemen DOS im ersten und Windows im zweiten Teil. Neben der Vermittlung des theoretischen Grundwissens wie die Funktionsweise eines PCs, die unterschiedlichen Zahlensysteme und die Basiselemente der Sprache selbst steht vor allem die praktische Umsetzung des Gelernten im Vordergrund. So wird Ihnen in Teil 1 aufgezeigt, wie Sie z.B. unter DOS mit Texten und Zahlen arbeiten sowie auf Dateien lesend und schreibend zugreifen können. Anhand eines Feuer-Demos lernen Sie die Möglichkeiten der Grafikprogrammierung kennen.

Der zweite Teil geht konkret auf die Windows-Programmierung mit Assembler ein. Hierzu gehören u.a. Aufgaben wie die Programmierung von Fenstern, Dialogboxen, Steuerelementen und Threads sowie der Umgang mit den wichtigsten Dateifunktionen. Im Anhang finden Sie eine Referenz zu den wichtigsten Interrupt- und Win32-API-Funktionen. Dieses Buch vermittelt das theoretische Hintergrundwissen und verbindet dieses zugleich mit einer praktischen Herangehensweise an die konkrete Assembler-Programmierung.



Aus dem Inhalt:

• Das Dezimal-, Dual- und Hexadezimalsystem

• Befehle und Adressierungsarten

• Grafikprogramme und "Feuer-Demo"

• Speicherresidente Programme und der Coprozessor

• Fehlersuche mit dem Debugger

• Assembler in Hochsprachen (Pascal und C)

• Fenster und Dialogboxen in Windows

• Debugging und Exception-Handling

• Prozesse, Threads und Timer

• DLLs und die Registry



Auf der CD:

Alle Beispielprogramme aus dem Buch und weitere Beispiele, aktuelle Interruptliste
Verlagsinfo
Das Buch beschäftigt sich mit der Programmiersprache Assembler unter den Betriebssystemen DOS und Windows. Der Leser erhält eine ausführliche und vertiefende Einführung in die Assembler-Programmierung. Damit erlernt er den modernen Einsatz von Assembler als maschinennahe Programmier-Sprache. Neben einer grundsätzlichen Einführung in die Sprache und der Vermittlung des theoretischen Grundwissens steht vor allem die praktische Umsetzung des Gelernten im Vordergrund. Der Leser lernt die Erstellung vom simplen Mini-Programm bis hin zu größeren Assembler-Programmen. Auch der Einsatz von Assembler unter Hochsprachen wird ausführlich erläutert.
Inhaltsverzeichnis
Vorwort 17

Einleitung 19
E.1 Was ist Assembler? 19
E.2 Warum Assembler? 19
E.3 Anmerkungen zum Buch 20


Teil 1 - Assembler unter DOS 21

1 Theoretische Grundlagen 23
1.1 Eine Einführung in den 8086er Prozessor 23
1.1.1 Funktionsweise eines PC 23
1.1.2 Der Speicher 24
1.1.3 Bits, Bytes & Co. 24
1.2 Die Register 25
1.2.1 Universalregister 26
1.2.2 Die Segmentregister 27
1.2.3 Index- und Zeigeregister 29
1.2.4 Das Flagregister 29
1.3 Der Stack 32
1.4 Übungsaufgaben 33

2 Mathematisches 35
2.1 Zahlensysteme 35
2.1.1 Dezimalsystem 35
2.1.2 Das Dualsystem 36
2.1.3 Das Hexadezimalsystem 38
2.1.4 Logische und physikalische Adressen 40
2.1.5 Wieso kann der Computer rechnen? 40
2.2 Übungsaufgaben 48

3 Erste Programmierschritte 49
3.1 Wir schreiben das erste Programm 49
3.1.1 Assembler & Linker 49
3.1.2 Hallo Welt! 50
3.1.3 Genauere Erläuterungen zum Programm selbst 55
3.2 Übungsaufgaben 57

4 Möglichkeiten des Assemblers 59
4.1 Grundlagen 59
4.1.1 Deklaration der Segmente 59
4.1.2 Der Aufbau eines Assemblerprogramms 61
4.2 Der Umgang mit Daten 62
4.2.1 Variablen 62
4.2.2 Konstanten 66
4.3 Prozeduren und Makros 67
4.3.1 Prozeduren 67
4.3.2 Makros 70
4.4 Übungsaufgaben 73

5 Befehle und Adressierungsarten 75
5.1 Die wichtigsten Befehle 75
5.1.1 Transportbefehle 75
5.1.2 Mathematische Befehle 77
5.1.3 Schiebebefehle 82
5.1.4 Stringbefehle 83
5.1.5 Sprünge und Schleifen 85
5.1.6 Verschiedene Befehle 88
5.1.7 Stackbefehle 90
5.2 COM-Programme 91
5.3 Adressierungsarten 92
5.4 Übungsaufgaben 96

6 DOS unter der Lupe 97
6.1 Interrupts 97
6.1.1 Wie ein Software-Interrupt funktioniert 97
6.2 Ausführbare Dateien 100
6.2.1 COM & EXE 100
6.2.2 Das PSP 105
6.3 Übungsaufgaben 107

7 Programmieren - Die Grundlagen 109
7.1 Mit Texten und Zahlen arbeiten 109
7.1.1 Einlesen eines Textes 109
7.1.2 Zahlenausgabe 110
7.1.3 Zahleneingabe 112
7.1.4 Externe FAR-Prozeduren 114
7.2 Zugriff auf Dateien 117
7.2.1 Das Erstellen und Öffnen von Dateien 118
7.2.2 Daten schreiben und lesen 119
7.2.3 Dateien schließen 120
7.2.4 Beispiel 121
7.3 Die Kommandozeile 122
7.4 Ports 124
7.5 Übungsaufgaben 125

8 Grafikprogramme 127
8.1 Grundwissen 127
8.1.1 Speicher reservieren 127
8.1.2 VGA & Co. 128
8.2 Etwas Geschwindigkeitsoptimierung 131
8.3 Das Feuer-Demo 132
8.3.1 Wie das Feuer entsteht 133
8.4 Der Bildbetrachter 140
8.5 Übungsaufgaben 141

9 TSRs und der Coprozessor 143
9.1 Speicherresidente Programme 143
9.1.1 Das Programm 143
9.2 Der Coprozessor 146
9.2.1 Beispiele 149
9.3 Übungsaufgaben 155

10 Fehlersuche mit dem Debugger 157
10.1 Grundlagen 157
10.2 Ein Beispielprogramm 157
10.2.1 Die Fehlersuche 158
10.2.2 Mehr Komfort 163
10.3 Übersicht über Turbo-Debugger 164
10.4 Übungsaufgaben 164

11 Assembler in Hochsprachen 165
11.1 Assembler und Pascal 165
11.1.1 Der externe Assembler 165
11.1.2 Der integrierte Assembler 167
11.2 Assembler und C 169
11.3 Übungsaufgaben 172


Teil 2 - Assembler unter Windows 173

12 Grundlagen zur Windows-Programmierung 175
12.1 Allgemeines 175
12.1.1 Der ewige Krieg 175
12.1.2 Welchen Assembler sollten Sie benutzen? 176
12.1.3 Was ist ein API? 177
12.1.4 ANSI- und Unicode-Funktionen 178
12.1.5 Extended-Funktionen 178
12.1.6 Was sind DLLs? 178
12.1.7 Was sind Libraries? 179
12.1.8 Was bleibt noch zu sagen? 179
12.2 Die Messagebox 180
12.2.1 Eine Messagebox (TASM-Version) 180
12.2.2 MASM-Version 183
12.3 Was ist neu? 185
12.3.1 32-Bit 185
12.3.2 Das Ring-Prinzip 186
12.3.3 Interrupts 186
12.3.4 Das FLAT-Modell und der Protected-Mode 186
12.4 Ausführliche Erläuterung des ersten Programms 186
12.4.1 Die Parameter beim Kompilieren und Linken 188
12.4.2 MessageBoxA 189
12.4.3 ExitProcess 192
12.4.4 Symbolische Namen und weitere Include-Dateien 192
12.5 Übungsaufgaben 194

13 Fenster, Dialogboxen und Ressourcen 195
13.1 Ein Fenster in Assembler 195
13.2 Ein Fenster in C 199
13.3 Erläuterungen 202
13.3.1 Objekte und Module 202
13.3.2 Client-Area 202
13.3.3 Gerätekontext 202
13.3.4 Handles 202
13.3.5 Nachrichten 202
13.3.6 Aufbau der MSG-Struktur 203
13.3.7 Verschiedene Nachrichten 204
13.3.8 Nachrichten explizit senden 206
13.3.9 Threads 206
13.4 Beschreibung des Listings 206
13.4.1 Ablauf 207
13.4.2 Menüs 214
13.4.3 Ressource-Dateien 217
13.4.4 Steuerelemente 220
13.4.5 Anweisungen 224
13.4.6 Beispieldialogfenster 225
13.4.7 Funktionen 231
13.5 Multilingualismus 239
13.6 Standard-Dialogfenster 240
13.6.1 GetOpenFileName 240
13.6.2 GetSaveFileName 242
13.7 Übungsaufgaben 242

14 Tools 243
14.1 MASM32 Prostart 243
14.1.1 Benutzung von Prostart 243
14.1.2 Fazit 248
14.2 Wie man eigene Libraries erzeugt 248
14.2.1 Unter MASM 248
14.2.2 Unter TASM 251
14.2.3 Fazit 252
14.3 Übungsaufgaben 252

15 Debugging und Exception-Handling 253
15.1 Welche Fehler gibt es? 253
15.2 SEH 254
15.2.1 Was ist eine Exception? 256
15.3 Fehler lokalisieren 257
15.3.1 Mit Debugger 257
15.3.2 Ohne Debugger 258
15.4 DbgWin 258
15.4.1 Die Oberfläche von DbgWin 259
15.4.2 Benutzung von DbgWin 259
15.5 Exception-Handler 261
15.5.1 Finale Exception-Handler 261
15.5.2 Per-Thread-Exception-Handler 265
15.5.3 Ein eigener Exception-Handler 266
15.6 Weitere Informationen zum Thema 268
15.7 Übungsaufgaben 268

16 Prozesse, Threads und Timer 269
16.1 Prozesse 269
16.1.1 Prüfen der Internetverbindung 269
16.1.2 Benutzte Funktionen 271
16.1.3 Prozesse aus laufenden Prozessen starten 272
16.2 Threads 273
16.3 Thread-Programm 274
16.4 Prioritäten 275
16.5 Thread-Funktionen 275
16.5.1 CloseHandle 275
16.5.2 CreateThread 276
16.5.3 Sleep 276
16.6 Synchronisation 276
16.6.1 WaitForSingleObject 277
16.6.2 Synchronisation des Internetverbindungs-Beispiels 277
16.7 Timer 280
16.8 Übungsaufgabe 283

17 Dateien 285
17.1 Ein einfacher TextViewer 285
17.1.1 GetWindowText 292
17.1.2 SetWindowText 292
17.2 Verwendete Dateifunktionen 292
17.2.1 CopyFile 292
17.2.2 CreateFile 293
17.2.3 DeleteFile 294
17.2.4 ReadFile 295
17.2.5 WriteFile 295
17.3 Weitere Dateifunktionen 295
17.3.1 GetFileSize 295
17.3.2 MoveFile 296
17.3.3 SetFilePointer 296
17.4 Übungsaufgaben 297

18 DLLs 299
18.1 Grundlegendes über DLLs 299
18.2 Load Time Dynamic Linking und Run Time Dynamic Linking 300
18.3 Run Time Dynamic Linking in der Praxis 301
18.3.1 LoadLibrary 302
18.3.2 GetProcAdress 302
18.4 Eigene DLLs erstellen 303
18.4.1 Funktionen 303
18.4.2 Das DLL-Modul 305
18.4.3 Das Assembler-Testprogramm 308
18.4.4 Das C-Testprogramm 308
18.4.5 Das Delphi-Testprogramm 309
18.4.6 Das Visual-Basic-Testprogramm 310
18.5 Übungsaufgaben 311

19 Registry 313
19.1 Aufbau der Registry 313
19.2 Funktionen 314
19.2.1 Überblick 314
19.2.2 RegCloseKey 315
19.2.3 RegCreateKeyEx 315
19.2.4 RegDeleteKey 317
19.2.5 RegDeleteValue 317
19.2.6 RegOpenKeyEx 317
19.2.7 RegQueryValueEx 318
19.2.8 RegSetValueEx 319
19.3 Übungsaufgabe 320

20 Behind the Scenes 321
20.1 Das Letzte 321
20.2 Behind the Scenes 321
20.3 Der Protected-Mode 322
20.3.1 Privileg-Level 322
20.4 Speicherverwaltung 324
20.4.1 DPL & RPL 325
20.5 Task-Switch 325
20.5.1 Multitasking 326
20.6 Datenzugriffe 326
20.7 Gates 326
20.7.1 Call-Gate 327
20.7.2 Task-Gate 327
20.7.3 Interrupt-Gate 327
20.7.4 Trap-Gate 327
20.8 Interrupts 327
20.9 Shadow-Register 328
20.10 Paging 328
20.11 VMM 329
20.12 Fazit 329
20.13 Übungsaufgaben 330

21 MMX und 3DNow! 331
21.1 Was steckt dahinter 331
21.2 Wo ist der Unterschied? 332
21.3 Die neuen Register 332
21.4 Datentypen 333
21.5 Vorbereitungen zum Einsatz der Multimedia-Extensionen 333
21.5.1 Verfügbarkeit von MMX testen 333
21.5.2 Verfügbarkeit von 3DNow! testen 334
21.5.3 Vorbereitung der Register 334
21.6 Beispiel einer Addition mit MMX 336
21.7 Befehle 339
21.7.1 MMX-Befehle 340
21.7.2 3DNow!-Befehle 348
21.7.3 DSP-Befehle 356
21.8 Übungsaufgaben 357


Teil 3 - Anhang 359

A Wichtige Interruptfunktionen 361
A.1 Zeichen-Ein- und Ausgabe 362
A.2 Verzeichnis und Dateiverwaltung 363
A.3 Speicher-Verwaltung 366
A.4 System- und Programmfunktionen 367
A.5 Grafikfunktionen 368
A.6 Mausfunktionen 369

B Win32-API-Funktionen 373
B.1 Beep 373
B.2 CheckDlgButton 373
B.3 CheckRadioButton 374
B.4 CloseHandle 375
B.5 CopyFile 375
B.6 CreateDialog 376
B.7 CreateDialogParam 376
B.8 CreateFile 377
B.9 CreateThread 379
B.10 CreateWindowEx 381
B.11 DefDlgProc 392
B.12 DefWindowProc 393
B.13 DeleteFile 393
B.14 DisableThreadLibraryCalls 394
B.15 DispatchMessage 394
B.16 DlgDirList 395
B.17 DlgDirListComboBox 396
B.18 DlgDirSelectComboBoxEx 396
B.19 DlgDirSelectEx 396
B.20 EndDialog 397
B.21 ExitProcess 398
B.22 ExitThread 398
B.23 FreeLibrary 398
B.24 FreeLibraryAndExitThread 399
B.25 GetDlgCtrlID 399
B.20 GetDlgItem 400
B.27 GetDlgItemText 400
B.28 GetExitCodeThread 401
B.29 GetFileSize 401
B.30 GetMessage 402
B.31 GetModuleHandle 403
B.32 GetOpenFileName 404
B.33 GetProcAdress 404
B.34 GetSaveFileName 405
B.35 GetThreadPriority 405
B.36 GetWindowText 406
B.37 InternetCloseHandle 406
B.38 InternetGetConnectedState 407
B.39 InternetOpen 407
B.40 InternetOpenUrl 408
B.41 IsDlgButtonChecked 409
B.42 IsDialogMessage 409
B.43 KillTimer 410
B.44 LoadCursor 410
B.45 LoadIcon 412
B.46 LoadLibrary 412
B.47 LoadMenu 413
B.48 MessageBox 413
B.49 MoveFile 417
B.50 PostQuitMessage 418
B.51 ReadFile 418
B.52 RegCloseKey 419
B.53 RegCreateKeyEx 419
B.54 RegDeleteKey 421
B.55 RegDeleteValue 422
B.55.1 RegisterClassEx 423
B.56 RegOpenKeyEx 423
B.57 RegQueryValueEx 425
B.58 RegSetValueEx 426
B.59 ResumeThread 427
B.60 SetDlgItemText 428
B.61 SendDlgItemMessage 428
B.62 SendMessage 429
B.63 SetFilePointer 429
B.64 SetMenu 430
B.65 SetThreadPriority 431
B.66 SetTimer 431
B.67 SetWindowText 432
B.68 ShellExecute 433
B.69 ShowWindow 435
B.70 Sleep 436
B.71 SuspendThread 436
B.72 UpdateWindow 437
B.73 WaitForSingleObject 437
B.74 WriteFile 438

C Strukturen 439
C.1 MSG 439
C.2 CREATESTRUCT 439
C.3 OPENFILENAME 440
C.4 WNDCLASSEX 442

D Nachrichten 445

E Lösungen zu den Übungsaufgaben 449
E.1 Zu Kapitel 1 449
E.2 Zu Kapitel 2 449
E.3 Zu Kapitel 3 449
E.4 Zu Kapitel 4 450
E.5 Zu Kapitel 5 450
E.6 Zu Kapitel 6 450
E.7 Zu Kapitel 7 451
E.8 Zu Kapitel 8 453
E.9 Zu Kapitel 9 454
E.10 Zu Kapiteln 455
E.11 Zu Kapitel 12 455
E.12 Zu Kapitel 13 456
E.13 Zu Kapitel 14 457
E.14 Zu Kapitel 15 457
E.15 Zu Kapitel 16 457
E.16 Zu Kapitel 18 458
E.17 Zu Kapitel 19 458
E.18 Zu Kapitel 21 459

F Über die CD-Rom 461

Stichwortverzeichnis 463