• MYSELF
  • Start
  • About Me...
  • Photo's
  • COMMUNICATE
  • Foren
  • Links
  • weiter Links...
  • SOMETHING
  • Musik
  • Elektronik
  • Unsere Welt...
  • Shop
  • PROGRAMMING
  • Tips+Infos
  • VGA Grafik
  • MS-DOS
  • WIN32
  • Python
  • THE END
  • Impressum
  • CSS ist valide!

  • Valid HTML 4.01 Transitional

  

Assembler auf der 16 Bit Plattform / DOS


Wichtig! Bitte vor dem Herunterladen lesen!
Hinweise zum Download PDF HTML

Wichtig! Bitte vor dem Herunterladen lesen und abspeichern!
Allgemeine Nutzungsbedingungen PDF HTML

Um die Beispiele besser zu verstehen und zum eigenen Programmieren, möchte ich an der Stelle mal auf Ralf Brown's Interrupt List verweisen, die praktisch ein Standartwerk zum Thema Interrupts darstellt. Wer allerdings noch ganz am Anfang steht sollte vielleich zunächst einmal Markus Romings Webseite (PDF) besuchen.
Für Fragen zu speziellen Themen steht euch das Forum der Codingcrew zur Verfügung.

Datensicherheit

Mit ganz einfachen Beispielen werden grundlegende Methoden gezeigt.

Dateiintegrität: Prüfsummenbildung

Schon in der Anfangszeit der Informationsverarbeitung war es notwendig zu überprüfen ob Daten vollständig und unverändert gesendet oder gespeichert wurden. Das Standartverfahren hierzu ist die Bildung einer Prüfsumme. Bei dem Beispiel wird die Prüfsumme als Highword/Lowword dezimal angezeigt. Die Datei pruefsum.asm muss z.B. die Länge 10054 Byte und das Wertepaar 10, 3217 besitzen.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Kryptisch: Verschlüsseln von Dateien und Informationen

Eine Datei wird geladen, und durch XOR (Exklusiv Oder) Verknüpfung mit einer anderen Datei verschlüsselt, Die verschlüsselte Ausgabedatei kann durch erneutes Verknüpfen mit derselben Schlüsseldatei wieder in lesbare Form gebracht werden.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Das Assembler Beispiel "Passwortvergleich"

Das Beispiel zeigt eine Passworteingabe und überprüfung. Das Passwort findest Du im Quellcode, ausserdem die Beschreibung des Prog's. Wurde es falsch eingegeben ertönt ein Warnton und es wird eine erneute Eingabe erforderlich ....
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

mathematisches...

Lookup Table - erzeugen einer Include Datei

Die Sinuswerte von 0 bis 180 Grad werden per Coprozessor berechnet und als Wertetabelle ausgegeben, Funktion: Ausgabe = 240 x sin (Winkel)
Diese Tabelle wird als Tabelle.inc abgespeichert.
Der Quellcode (.asm): Anschauen!
Liesmich.txt: Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Das Assembler Beispiel DOS "Wurzel"

Die Quadratwurzel mittels des Newton Raphson Verfahrens berechnen. Das Beispiel ist im Quelltext sehr gut Dokumentiert. Und zusätzliche Informationen gibts unter 'Tips & Infos'
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Datenverarbeitung und Auswertung

Suchmaschine

Die angegebene Datei wird nach einem Suchbegriff durchsucht.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Das Assembler Beispiel "ASCII to Decimal"

Das Programm wandelt den eingegebenen Text in die dezimalen Werte um. Also der ASCII Code (American Standart Code for Information Interchange) des Textes wird angezeigt.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Dateioperationen

Hinweis: bei den Beispielen beschränken sich die Dateipuffer auf 64000 Byte, was zum experimentieren reichen sollte.

auswerten des Dateiheaders

Der Dateikopf (Header) mancher Dateien hält für das Betriebssystem oder mit diesem Datentyp verknüpfte Anwendungen einige Informationen bereit, die vom Programm ausgewertet werden sollten. Dieses Programmbeispiel zeigt nach dem laden einer Bitmap Datei (max. 64 kByte) die Byteanzahl gesammt, Breite, Höhe, Farbtiefe und die Byteanzahl 'netto'.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

ermitteln des aktuellen Laufwerks

Die Interrupt 021h Funktion 019h (Get Current Drive) ermittelt das aktuelle Laufwerk, der übergebene Wert wird dann in den für Windows / MsDos üblichen Laufwerksbuchstaben umgesetzt und angezeigt.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

erstellen von Dateien und Datenspeichern

Eine Datei mit vorgegebenem Namen wird erstellt und mit Daten beschrieben. Da es nur sehr kurz ist, habe ich es als .com Proggi geschrieben um damit auch diesen Dateityp einmal vorzustellen.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

lesen von Datenträger

In diesem Beispiel wird nach Eingabe eines gültigen Dateinamens diese geöffnet, eingelesen und als Text dargestellt, das Programm arbeitet mit den Standart Int21h Funktionen und funktioniert auch unter Win2000pro in der DOS Konsole, auch wenn das Laufwerk ein NTFS Datenträger ist. Ein minimalistischer Fehlerabfang sorgt dafür das das Programm nicht 'einfriert', falls die angegebene Datei nicht gefunden wird.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Eingabe- und Ausgabe

Dialoggeführte Eingabe

Werden oft hintereinander Eingaben des selben Typ, z.B. Dezimalwerte aus einer Liste oder Tabelle gefordert, wird man das natürlich nicht 'linear' programmieren, sondern den Vorgang: Dialogtext anzeigen - Wert annehmen - Wert abspeichern, in einer Programmschleife realisieren, ein flexibles Beispiel dafür ist dieses hier, nach Eingabe von bis zu 6 Werten werden diese addiert und die Summe ausgegeben.
Der Quellcode (.asm): Anschauen!
Macrobibliothek (.inc): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Hexadezimalwert Eingabe

Hin und wieder ist es erforderlich einen Ganzzahlwert in seiner Hexadezimalschreibweise einzugeben. Das geschieht innerhalb dieses Beispiels, der Wert wird eingegeben in einen unsigned Integerwert umgewandelt und als Dezimalzahl ausgegeben.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Programm Aktivitäts Anzeige

Manchmal ist lediglich eine Information relevant: läuft die Anwendung noch oder steht sie? Das wird in dem Beispiel durch einen 'drehenden Stern' als Indikator angezeigt.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Das Assembler Beispiel "Echtzeituhr"

Ob Messung von Programmlaufzeiten, Ereignissprotokoll, Benutzerinformation, oder zeitgesteuertes Starten von Vorgängen, Zeitdaten werden von vielen Anwendungen benötigt, dieses einfache Beispiel zeigt wie man mit der Int 021h Funktion 01Ch Zeitdaten erhält und verwendet.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Das Assembler Beispiel DOS "Sirene"

Das Beispiel arbeitet mit unmittelbaren Zugriff auf die Hardware per In und Out Anweisung.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

Das Assembler Beispiel DOS "mehrdimensionales Variablenfeld"

Das Beispiel zeigt einen textbasierten Benutzerdialog. Text wird ausgegeben und auf drücken der Leertaste gewartet. Danach die nächste Zeile ausgegeben.
Der Quellcode (.asm): Anschauen!
Die Ausführbare Datei (.exe): Ausführen oder Speichern!
Alle Dateien Speichern: ZIP-Archiv

neue Stats:
eXTReMe Tracker - neue Statistik
Sir Shylock   •  53783 Eitorf
E-Mail: webmaster
alte Stats:
eXTReMe Tracker - alte Statistik