Programmieren - alles kontrollieren 4.937 Themen, 20.662 Beiträge

assembler - wie funktioniert das

Alekom / 45 Antworten / Flachansicht Nickles

Hallo Leute,

Was Assembler ist weiss ich ja, es sind mnemotechnische Abkürzugen für binäre Einheiten.

Zumindest hab ich das so verstanden. Also anstatt alles in 0 oder 1 zu programmieren, hat man Assembler-Befehle entwickelt.

Und genau da hapert bei mir das Verständnis.

Wie entwickelt man solche Befehle?

Sind diese in einem Chip verdrahtet, so das ein Chip 1 Befehl darstellt oder wie kann man das verstehen?

Weil ja irgendein Register muss ja diese Befehle verarbeiten, aber wie  zum Teufel merkt er sich solche Abkürzungen?

Ich habe noch nirgends wo was gelesen wie solche Befehle "gemacht" werden.

zb Beispiel der Befehl Mov

aus was besteht der und wo wird der "abgelegt" oder "eingegossen"?

ich hoffe meine Frage verständlich ausgedrückt zu haben.

netten Gruß

Alekom

Alles hat seinen Sinn, auch das scheinbar Sinnlose, denn es gibt nichts ohne Sinn.
bei Antwort benachrichtigen
Andreas42 Alekom „hallo Borlander, danke für die Links, einige kannte ich schon, ...“
Optionen

Hi!

ich lese vorhanden. jetzt frage ich mich, wie haben die es gemacht das dieser Befehl im 8086er SCHON verhanden ist.

Ich glaube, du müsstest uns am besten kurz erklären, wie du dir bisher die Entwicklung der Maschinensprachebefehle einer CPU vorstellst.

Hast du die Vorstellung, dass Befehle mehr oder weniger Zufällig seit dem 8086 existierten und erst heute entdeckt und genutzt werden?

Ganz konkret zu SHL/SHR (Shift Left und Shift Right). Das sind mit die grundlegensten Befehle neben der einfachen Addition oder Subtraktion, die eine CPU ausführen kann. Die kennt jede CPU und auch bei mir waren es mit die ersten CPU-Kommandos die ich für den MOS6510 gelernt habe - das war die CPU im Commodore 64.
Alle Bits nach Links oder Rechts zu schieben bedeutet einen Zahlenwert durch 2 zu teilen oder mal 2 zu nehmen. Die CPU des C64 kannte keine Befehle für Multiplikation und Division von beliebigen Zahlen, daher war mit die erste Übung beim Lernen, eine solche Routine zu schreiben und die verwendete diese Kommandos.

Eine CPU ist dafür gedacht einen Code auszuführen. Dieser Code wird als "Maschinensprache" bezeichnet. Technisch sind das mindestens eine handvoll Befehle zum Laden und Schreibern von Werten in den Speichern. Dann benötigt jede CPU Befehle um geladene Daten zu modifizieren (Addieren, Subtrahieren, Shift-Left/Right usw.).

Das "Aussehen" der Codes wird festgelegt und dann in der "Verdrahtung" der CPU fest hinterlegt (man definiert also die Syntax des Maschinencodes vorab).

Ein wichtiges Thema bei der CPU Entwicklung ist Kompatibilität: man will mit der neuen CPU Maschinencode ausführen, der für eine ältere CPU geschrieben wurde. Wie macht man das? Ganz einfach: ich nehme die Definition des Maschinencodes der alten CPU und baue darauf den Maschinencode der neuen CPU auf. Und schon ist die neue CPU abwärtskompatibel.

War es das, was du wissen wolltest?

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen