====== Assembler ====== "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." - [[http://de.wikipedia.org/wiki/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 |