Assembler

Grunge

Erfahrenes Mitglied
Hi!

Ich möchte mal gerne von euch folgendes wissen:
Was ist Assembler??

Ich lese immer wieder davon kann mir jemand mal ein beispiel programm geben,welchen in dieser sprache entwickelt wurde??? UND: Mit welchem Programm schreibt mal Assembler!!??

Ich danke euch!!!
 
Hi!

Jeder Source Code, der kompiliert wird, wird in Maschinensprache (in sehr einfache Befehle, die direkt auf dem Prozessor ausgeführt werden können) umgesetzt.

Maschinensprache nur aus Nullen und Einsen besteht ist Assembler die Übertragung dieser Nullen und Einsen in einfache Befehle.

Ein Maschinensprachenprogramm könnte z.B. so aussehen:
Code:
54h 85h 3Eh 53h

Ein Assemblerprogramm z.B. so:

Code:
MOV bx,34
MOV [bx],435
INT 32

Assembler wird durch ein Programm übersetzt(assembliert), das auch Assembler(das was in C der Complier ist) heißt.

Da alle Programme(.Exe-Dateien) in Maschinensprache gespeichert sind, kann man auch alle Programme in Assembler-Programme umwandeln(disassemblieren)

Gruß Frank
 
THX!! Hast mir glaub ich sehr geholfen.. eine frage noch: Schätzt ihr die Sprache leicht zum lernen ein!?
 
also mathe ist bei mir eigentlich kein problem?? aber warum muss mathe wichtig sein!? Kannst du mal nen beispiel nennen!?
 
Da du in Assembler nur simple Befehle hast, ist es wichtig die mathematisch logische Denkweise zu beherschen(wirklich anwenden mußt du mathe nicht).

Außerdem solltest du allgemeine Informatik- und Logik-Kenntnisse(z.B. was eine AND-Verknüpfung ist) haben.

Nehmen wir einmal möchtest eine Schleife programmieren, die das Unterprogramm(=Funktion) ABC 100 mal ausführt, dann sieht das in Intel-Assembler so aus:


Code:
MOV CX, 100

beginn: 
CALL ABC
SUB CX,1
CMP CX,0
JZ beginn

MOV CX, 100 bedeutet Register CX = 100.
Ein Register kann man wie eine Variable betrachten.

beginn ist eine Marke(wird intern als Adresse betrachtet)

CALL ABC ruft das Unterprogramm ABC auf

SUB CX,1 bedeutet: CX = CX - 1

CMP CX,0 Vergleicht CX mit dem Wert 0. Ist CX=0 dann wird das Zero-Flag gesetzt.

JZ beginn springt nach beginn, wenn das Zero-Flag gesetzt ist(if (Zero) then goto beginn)

Ich hoffe dieses kurze Programmstück ist noch halbwegs verständlich.


Außerdem hoffe ich, das mir die Assembler-Programmierer das CMP CX,0 und SUB CX,1 verzeihen.
 
wie sieht ein kompliertes Programm dann aus?? Ich meine "stylisch" gesehen??? Wie eine normale windows anwendung???
 
Im Normallfall ist ein Assemblerprogramm eine kleines Programmstückchen , meist bei zeitkritischen oder Hardwarenahen Sachen verwendet.
(z.b Treiber für eine Schnittstellenkarte; oder ein Steuerungsrechner - Kaffee- Wasch- oder sonstige Maschiene)

Aber kein Mensch schreibt heutzutage ein Programm mit grafischer Oberfläche in Assembler, ist einfach zu aufwendig.

Und das schöne ist :
Jede CPU hat ein anderen Assembler :-(

Ich habe jedenfalls beim dritten Assembler aufgehört ....
 
Assembler ist eigentlich nichts anderes als eine etwas besser lesbare Form von richtigem Maschinencode. Jede einzelne Anweisung in Assembler entspricht genau einem Takt (also einer einzigen logischen Berechnung) im Prozessor.
Dadurch lassen sich mit Assembler zwar sehr schnelle Anwendungen umsetzen, weil es sehr hardwarenah ist und man auf unnötige Anweisungen verzichten kann. Auch die Hochsprachen-Compiler (beispielsweise GCC) setzen den Code erst in Assembler-Code um, der dann wieder fast 1 zu 1 in Maschinencode übernommen wird. Die compilierten Anwendungen sehen vom Bytecode her eigentlich genau so aus, wie jede andere Anwendung auch.
Aber durch die Tatsache, dass man wirklich immer nur absolute Einzelschritte hat und alles "zu Fuss" machen muss, wird Assembler eigentlich nur noch eingesetzt, wenn es nicht anders geht. Typische Beispiele für Assembler-Programme sind Bootloader, Betriebssysteme oder Hardware-Treiber.
 
Um es mal deutlicher zu machen:

Hochsprache wie C, Pascal

Programm Morgens:
Aufstehen
Waschen
Fruhstücken
usw:

das gleiche als Assembler:
Programm Morgens
Wecker Aus
Bettdecke Zurück schlagen
Füsse aus dem Bett
Körper hoch
usw ..
 

Neue Beiträge

Zurück