...
close

Cookie-Einstellungen

Zulassen:

 

Infos/Erklärung
Gemäß Ihrem Recht auf informierte Selbstbestimmung.

Konto löschen

Damit wir unseren Service verbessern können, würden wir uns über die Angabe eines Grundes freuen.
Vielen Dank!



Abbrechen

Besser wissen durch Nachhilfe: Wissensfragen

Hier kannst Du eine Wissensfrage zu einem Thema stellen, das Dich interessiert.
Die Fragen und die Antworten darauf werden hier veröffentlicht und evtl. zusätzlich an interessierte Benutzer (Nachhilfelehrer/innen) weitergeleitet.

Die Fragen sollten eher allgemeiner Natur sein, z.B. : "Ich will eine chinesische Sprache lernen. Mandarin oder Kantonesisch?", oder: "Vor Klausuren bin ich immer sehr nervös und bin schnell blockiert, obwohl ich vorbereitet bin - was kann ich tun?"

Alle Fragen & Antworten werden moderiert. Unangebrachte oder unhöfliche Beiträge, Links zu anderen Webseiten o.ä. werden gelöscht. Achtung: hier gibt es keinen Kundenservice.
Dieser Service soll keinen Unterricht ersetzen.

Assembler Programmierung

Was ist Assembler? Warum programmiert kaum jemand in Assembler?
Assembler, Programmierung
Datum: 15.08.2019 14:34, Benutzer 1898Antwort:

Hallo Anonymous,


gerne beantworte ich Deine Frage und beginne vielleicht so:


Seinerzeit Anfang der 80-er Jahre habe ich begonnen, indem ich in ASSEMBLER (... gemeint ist die Maschinenprogrammiersprache konkret durch die jeweiligen Chip~/CPU-Hersteller oder für noch komplexere - auch ältere Technik - Zentraleinheit genannt) für den ZILOG-Z80 (ZILOG war der Hersteller des 8-bit-Mikroprozessors) programmiert habe.


Parallel zu den Entwicklungen gab es noch parallele Entwicklungen von CPUs der Firmen INTEL und MOTOROLLA. Hier jeweils in ASSEMBLER zu programmieren bedeutet(e), sich jeweils mit anderen - mitunter völlig verschiedenen - ASSEMBLER-Sprachen zu beschäftigen, und das war schon damals kaum noch beherrschbar. Komfortable Entwicklungsumgebungen hatten wir damals auch nicht, so das ich die Befehlsliste dann schon auswendig aus dem Kopf hinschreiben konnte.

Nun, ich habe jahrelang am Fraunhoferinstitut sog. Kernel-Programmierung bzw. später Systemprogrammierung/Firmware-Programmierung betrieben und habe einen großteil meiner Module in Assembler geschrieben. Warum? Nun, die ASSEMBLER-Programmierung befasst sich mit der sogenannten maschinennächsten Programmierung mit dem Vorteil, das der geschriebene und dann assemblierte - später in die entsprechende Plattform gelinkte lauffähige Maschinen-Code sehr performant/schnell ablaufen kann. Der Nachteil ist das differenzierte nur für die konkrete Plattform (z.B. konkrete PC-Hardware mit konkreter CPU) Herstellen entsprechenden Programmcodes. Jede Hardware verlangt also speziell hergestellten Code.

Heute nun ist die Hardware um Potenzen schneller als damals, wo ASSEMBLER noch nicht die Ausnahme war:


Wir programmieren in der sogenannten Anwendungs-Software ausschließlich in höheren Programmiersprachen, meißtens sogenannte objektorientierte Programmiersprachen (Beispielsweise c++, JAVA, c#). Das hat den Vorteil, das so hergestellter Programmcode auf fast jeder Plattform lauffähig ist. Die sogenannten Schnittstellen zu konkreter Hardware wird i.d.R. durch die CPU-Hersteller als sogenannte APIs mit entsprechenden Bibliotheken zur Verfügung gestellt. Diese durch die jeweiligen Hersteller bereitgestellten (Software)Module werden für laufzeitkritischen Code immer noch in ASSEMBLER geschrieben bzw. wenn Laufzeit nicht so priorisiert ist, auch in der sogenannten maschinennahen Programmiersprache C.


Ich denke, das ich für das Verständnis der nachgefragten Problematik Hinreichendes geschrieben habe.

Für differenzierte Fragestellungen stehe ich (fast) jederzeit zur Verfügung. (... natürlich nicht, wenn ich mich auf Konkretes im Programmieren konzentrieren muss :-) )


Viele Grüße aus Paderborn - nahe dem Siemens-Nixdorff-Formum, da wo die antiken Computer wohnen
M. N.


PD Dipl.-Ing. (FH)

+ 2 weitere Antworten:
Datum: 14.02.2019 11:14, Benutzer: 300866Assembler ist so gesehen die unterste Programmierungsschicht.
Hier wird nichts mehr mit netten Befehlen umschrieben wie "FOR-NEXT" "PRINT" usw...
Man besitzt auch keine Variablen mehr, sondern kann nur noch die Daten als Speicher unter einer Adresse ablegen und auslesen. Zusätzlich gibt es Register, die beim Computer bestimmte Reaktionen hervorrufen. Was aber auch wieder computerabhängig ist.
Somit ist Assembler für Anwendungsprogramme ungeeignet, sondern nur für den Unterbau der "höheren" Programmiersprachen und Treiber.
Es programmieren durchaus Personen in Assembler, aber eben wie gesagt, nicht mehr im Anwendungsbereich für alle Benutzer, sondern Computer-/Maschinenspezifisch.
Datum: 20.01.2020 16:16, Benutzer: 302646assembler ist die menschenlesbare form von den befehlen die direkt auf den prozessor laufen. prozessoren sprechen nur in nullen und einsen. das sogennante binary (binäre). befehle und daten werden in binary eingelesen. ergebnisse in binary ausgegeben. die ersten computer wurden von menschen nur in binary bedient. mit assembler können wir die befehle in menschenlesbare form schreiben (z.b. MOV, ADD oder JMP) und zahlen können wir im dezimalsystem schreiben.

ein assemblerprogram übersetzt die menschenlesbare variante zurück in nullen und einsen für den prozessor zum ausführen. es ist eine reine übersetzung. z.b. ein MOV wird zu einer ganz bestimmten reihe von nullen und einsen. fast wie ein telefonbuch: name zu nummer. im kontrast dazu wird in einer höheren programmiersprache eine for schleife z.b. zu einer ganzen reihe von assembler befehlen übersetzt.

der vorteil von assembler ist die maximale kontrolle. wenn ich fleißig und aufmerksam (und genial) bin dann kann ich programme in assembler schreiben die schneller und mit weniger speicherverbauch laufen als programme die mit einer höheren programmiersprache geschrieben sind. dieser vorteil kam hauptsächlich am anfang der computer entwicklung zur geltung. prozessoren waren langsam. arbeitsspeicher war knapp. jede anweisung und jedes byte das man sparen konnte war ein gewinn. die ersten computerspiele wurden meistens von genialen assembler programmierern entwickelt die den prozessor maximal ausgereizt haben so das leistung möglich war die der prozessorhersteller selbst nicht erwartet hat.

der hauptnachteil von assembler ist die prozessor abhängigkeit. ein assembler programm welches für ein prozessor optimiert ist lässt sich nicht ohne weiteres auf ein anderen prozessor übertragen. oft mussten wesentliche teile vom programm neu geschrieben werden. manchmal haben optimierungstricks nur auf ein prozessor funktioniert aber nicht auf ein anderen so das programme nicht oder nur mit einschränkungen auf andere prozessoren lauffähig waren. andere nachteile von assembler ist die benötigte genialität. assembler programme wurden oft von nur einer person geschrieben und verstanden. außerdem sind assembler programme anfällig für menschliche konzentrationsfehler. natürlich kann man programme schreiben die viele dieser fehler für den menschen auffangen aber solche programme nennt man meistens höhere programmiersprachen.

mit der zeit wurden prozessoren immer schneller und arbeitsspeicher immer größer. leistungshungrige spiele bzw. programme in einer höheren programmiersprache wurden allmählich möglich. so kamen die vorteile der höheren programmiersprachen immer mehr zur geltung und die nachteile von assembler wurden immer schwerer.

lange zeit wurde assembler noch für microcontroller verwendet. z.b. in digitalen armbanduhren oder die steuerung einer mikrowelle. mit der zeit wurden sogar diese prozessoren so mächtig das man die mit einer hohen programmiersprache programmiert.

heute existiert assembler code noch in programmteilen bei den es sich noch lohnt die sehr stark zu optimieren. z.b. in programmen für wissenschaftlichen berechnungen von milliarden von datensätzen.
Aktion: antworten

Die Frage:

 
Weitere Fragen: 44










Nachhilfe | Nachhilfelehrer | Nachhilfevermittlung | Gesuch aufgeben |  EF Familie Unternehmsnetzwerk Erfolgsfaktor Familie
Merkzettel ()