Diese Zusammenfassung enthält die wichtigsten Grundlagen für die Assemblerprogrammierung mit dem Programm DOS-Box. Geeignet für Schüler und Einsteiger.
Assembler (16 Bit) unter Windows
Allgemeine Zusammenfassung der wichtigsten Grundlagen der Assemblerprogrammierung
Abschnitt 1: Die Arbeitsumgebung
Die Arbeitsumgebung ist die DOS-Box, die im Gegensatz zum cmd-Programm von Windows auch im Vollbild-Modus (Tastenkombination: ALT + Enter) betrieben werden kann.
Editor der Dateien ist das Notepad++. In ihm werden die Dateien geschrieben und als .asm-Dateien abgespeichert.
Umgang mit der DOS-Box:
Zuerst wird der Ordner hinzugefügt (englisch: hinzufügen ➔ mount), indemmount c Ordnerpfad eingegeben wird.
Der Ordnerpfad meint dabei den Pfad, in dem später die Programmdateien gespeichert werden.
Umwandlung in der .asm in .exe (macht die Dateien ausführbar):
TASM Dateiname – wandelt die .asm-Datei in eine .obj-Datei um („Compiler“)
TLINK Dateiname – wandelt die .obj-Datei in eine ausführbare .exe-Datei um („Linker“)
Umwandlung mit Hilfe einer „BAT-Datei“:
Mit dem Notepad++ erstellt man eine leere Datei mit dem Namen asm.bat (.bat als Dateiformat) und fügt dort folgenden Quelltext ein:
@echo off
if exist %1.obj del %1.obj
if exist %1.exe del %1.exe
@echo on
tasm %1.asm
tlink %1.obj
Damit erspart man sich das Kompilieren und Linken. Um eine Datei zu Kompilieren und zu Linken gibt man nach dem Mounten (siehe oben) ein: asm Dateiname
Um die Datei zu starten gibt man danach einfach nur noch den Dateinamen ein.
! Hinweis: Kursiv gedruckte Wörter müssen durch bestimmte Werte oder Namen oder ähnliches ersetzt werden, z.B. der oben genannte Dateiname durch den selbstgewählten Namen der Datei, die später ausgeführt werden soll.
! Hinweis: Dunkelblau unterlegte Abschnitte sind Programmauszüge und können direkt ins Programmkopiert werden.
! Hinweis: Die Befehle der einzelnen Programmauszüge sind im Abschnitt 10 erklärt.
Abschnitt 2: Prozessarchitektur und Registerarten
Die sogenannten „Register“ werden bei Computern zum festen Speichern von Bits verwendet, mit denen der Prozessor arbeitet. Windows verwendet 64-Bit (alle Spalten), in dieser Anleitung werden nur die Register mit 16-Bit verwendet (die 2 rechten Spalten).
Registerarten:
Es gibt verschiedene Arten von Registern. Das eine sind die Grundregister. Diese sind:
AX (Akkumulator), BX, CX, DX (diese können auch kleingeschrieben werden)
Außerdem gibt es noch andere Register, wie:
DS (Daten-Segmentregister), ES (Extra-Segmentregister), SI (Source-Index), DI (Destination-Index), SP (Stack-Pointer), BP (Base-Pointer)
Abschnitt 3: Bedingte und unbedingte Sprünge
Flagregister:
Die Flagregister dienen dazu, eine Markierung zu setzen, wenn ein bestimmter Fall eintritt. Es gibt vier verschiedene Arten:
Abbildung in dieser Leseprobe nicht enthalten
Wenn ein Vergleich durchgeführt wird, müssen vorher zwei Register verglichen werden. Das wird mit der „Compare“-Befehl realisiert: cmp erstes_Register, zweites_Register
Damit die Flagregister verwendet werden können, müssen Sie als Sprungmarke gesetzt werden(ein j).
jz weiter ➔ bedeutet: Wenn das angegebene Register =0 ist, springe zu „weiter“! weiter: ➔ diese ist die Stelle, an der das Programm bei der gesetzten Flag weiterläuft.
Um eine Flag zu negieren, gibt man statt jz ➔ jnz ein.
Erklärung: jnz ➔ „jump not zero“ ➔ „Springe, wenn nicht gleich null“
Unbedingte Sprünge (immer):
jump Ziel (sogenannte Sprungmarke)
Ziel:
Beispiel:
jmp start;----
Unterprogramme ----;-----
MAIN -------------
start: movax,@data
Bedingte Sprünge (siehe auch: Flagregister):
Beispiel:
cmp ax, bx
jng weiter1
;Aktionen für AX>BX
;beliebig viele Anweisungen
weiter1: …
Abschnitt 4: Einseitige und Zweiseitige Auswahl
Einseitige Auswahl (if):
Abbildung in dieser Leseprobe nicht enthalten
Zweiseitige Auswahl (if -else):
Abbildung in dieser Leseprobe nicht enthalten
Abschnitt 5: Wiederholungen
Der loop-Befehl:
Der loop-Befehl ist ein Sprungbefehl (ableitbar: Looping). Er arbeitet grundsätzlich mit dem CX-Register. Dabei zieht er von dem CX-Register 1 ab und arbeitet für CX > 0. ! Hinweis: Das CX-Register darf dabei nicht überschrieben werden!
Solange-Schleife (while):
Abbildung in dieser Leseprobe nicht enthalten
Zählschleife (for):
Abbildung in dieser Leseprobe nicht enthalten
Abschnitt 6: Makros
Makros sind Codeteile bzw. Codestücke, die aus mehreren Anweisungen bestehen können.Makros werden vor dem eigentlichen Programm definiert.Sie können vom Programm aus aufgerufen werden, wobei, im Gegensatz zu einer Prozedur, das Makro in den Quellcode kopiert wird.Außerdem kann man Makros auch Parameter übergeben.
Makros beginnen mit:
Makroname MACRO;Anweisungen
ENDM
[...]
- Arbeit zitieren
- Philipp Hänicke (Autor:in), 2014, Grundlagen der Assemblerprogrammierung, München, GRIN Verlag, https://www.grin.com/document/341303
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.