„Eine Assemblersprache (oft abgekürzt als ASM bzw. asm) ist eine spezielle Programmiersprache, welche die Maschinensprache einer spezifischen Prozessorarchitektur in einer für den Menschen lesbareren Form repräsentiert. Jede Computerarchitektur hat folglich ihre eigene Assemblersprache.“ - Assembler
Man kann also den Nullen und Einsen, die ein Computer versteht (Maschinensprache), verständliche Namen geben (Assemblersprache). So kann man verstehen, was der Computer tut bzw. im genaue Anweisungen geben, was er tun soll. Die Übersetzung von Assembler(sprache) in Nullen und Einsen ist eine 1 zu 1 Übersetzung und wird von Programmen erledigt, die man auch Assembler nennt. Die umgekehrte Übersetzung leisten Disassembler. Es muss also nichts compiliert oder interpretiert werden, sondern lediglich direkt übersetzt werden.
Unter Windows ist ein Programm dabei, dass diese Übersetzung beherrscht:
debug
Ein schönes Beispiel…
In einer Datei test.asm
befinde sich der folgende Text:
a100 jmp 200 e110 "Hallo Welt" 0d 0a "$" a200 mov dx,110 mov ah,9 int 21 mov ah,4c int 21 n test.com rcx 200 w q
(gute Erläuterungen siehe „Programmiersprache Assembler - Eine strukturierte Einführung“ von Reiner Backer, 1993, Rowohlt Taschenbuch Verlag GmbH)
Mit Hilfe der Eingabe von
debug < test.asm
übersetzt debug
den Assemblercode in Maschinensprache und damit in ein ausführbares Programm. Mit der Eingabe von
test
kann dieses Programm ausgeführt und die unglaubliche Ausgabe betrachtet werden.
Außerdem bemerkenswert ist die Größe des Programms! Mit
dir
kann die Größe in Byte betrachtet werden.
Einige wenige Erläuterungen zu den Kürzeln:
Format | Befehl | Semantik |
---|---|---|
a [Adresse] | Assemble | Assembleranweisungen umwandeln |
c Bereich Adr | Compare | Speicherbereiche miteinander vergleichen |
d [Adr] oder d [Bereich] | Dump | Speicherinhalt anzeigen |
e Adr Liste | Enter | Speicherinhalt ändern / eingeben |
f Bereich Muster | Fill | Speicherbereich mit Muster füllen |
g [=Adr] [Adr1] [Adr2] … | Go | Programmausführung mit evtl. Breakpoints |
h Wert Wert | Hexarithm. | hexadez. Addition und Sbtraktion |
i Portadresse | Input | Byte von I/O-Adresse lesen |
l [Adr [Laufw Sek. Sek.]] | Load | Dateien oder abs. Diskettensektoren laden |
m Bereich Adr | Move | Speicherbereich übertragen |
n [d:] [Pfad]Name[.erw] | Name | Dateien und Parameter definieren |
o Portadresse Byte | Output | Byte an I/O-Adresse senden |
p [=Adr] [Wert] | Proced | Stopp bei nächster Instruktion |
q | Quit | DEBUG-Prog. verlassen, zurück zu DOS |
r [Reg] | Register | Register abfragen / Wert zuweisen |
s Bereich Liste | Search | Suche nach Zeichen |
t [=Adr] [Wert] | Trace | Ausführung und Protokoll der Register |
u [Adr] oder u [Bereich] | Unassemble | Code rückübersetzen in Assemblersprache |
w [Adr [Laufw Sek. Sek.]] | Write | Dateien oder abs. Diskettensek. schreiben |