Bits & Bytes & Maschinensprache

Nicht nur Bilder, Videos und Dokumente bestehen aus einzelnen Bits. Nein, auch alle Programme sind aus Bits und Bytes gemacht.


Bits, Bytes, BASIC

Man kann die Bits und die Bytes auch "verstehen".

Dazu gehen wir schrittweise von der höheren Programmiersprache BASIC zu den Bits (also zur "Maschinensprache").

Dieses folgende BASIC-Programm addiert zwei ganze Zahlen, und dann zeigt es das Endergebnis am Bildschirm an. Es ist nicht lang:

A = 8

B = 1

C = A + B : REM EINE ADDITION

PRINT C : REM ZEIGE C AN

Dieses kleine Programm tut dies: Der Wert 8 wird der Variablen A zugewiesen, ebenso der Wert 1 der Variablen B. Dann folgt die Addition und die Zuweisung an die Variable C. Der letzte Befehl bedeutet, dass der Inhalt von C am Bildschirm angezeigt wird.

Jetzt kommt eine "Übersetzung" in eine andere Programmiersprache, in "Assemblersprache".

Assemblersprache und Maschinensprache

Wir befassen uns jetzt mit der "Assemblersprache". Sie ist die Programmiersprache der ersten Stunde. Also: Bevor es die (alte) Programmiersprache "Fortran" gab, gab es schon Assemblersprache. Aber Assembler (wie die Assemblersprache auch kurz heißt) hat  auch Nachteile: Die Assemblersprache ist immer auf den jeweiligen Prozessor zugeschnitten. Und sie ist sehr schwer zu erlernen.

Nur zur Dekoration: Assembler-Code
Nur zur Dekoration
Assembler-Code
Auch nur zur Dekoration: Assembler-Code


Das hier ist ungefähr unser BASIC-Programm in Assemblersprache:

mov ax,   08        mov bx,   01       add ax, bx

Man kann diesen Code erklären, damit ihn jeder versteht: Das mov ax, 08 - mov bx, 01 - add ax, bx bedeutet so ungefähr das Gleiche wie:

A = 8

B = 1

C = A + B  in BASIC.

Dazu muss man wissen, dass jedes dieser "Dinge" wie ax oder bx so genannte Register sind. Diese Register sind in diesem Fall 16 Bits "breit". Sie dienen - genauer gesagt - dazu, um 16 Bits zu speichern. Jedenfalls für eine gewisse Zeit.

Und damit wir jetzt lesen können, wie die Bits und Bytes genau lauten, kommt hier die Übersetzung in Maschinensprache. (Maschinensprache ist die "Sprache", die der Computer versteht.)

mov ax, 08  mov bx, 01  add ax, bx

b8 08 00      bb 01 00        03 c3         (sieht so aus in Maschinensprache.)

Die Nullen und Einsen zu b8 08 00 usw.:

1011 1000 0000 1000 0000 0000

1011 1011 0000 0001 0000 0000

0000 0011 1100 0011

Aber das hier oben ist natürlich schon höhere Mathematik. Ganz genau genommen sind die Nullen und Einsen die Sprache, die der Computer begreift. Die Maschinensprache (b8 08 00 usw.) versteht der Computer, weil er einen Befehlssatz besitzt, welcher letztlich nur Bits und Bytes lesen kann. Wozu dann die vielen komplizierten Befehle in den höheren Programmiersprachen? Für das menschliche Verständnis natürlich!

Weil wir Menschen das auch verstehen müssen, was man dem Computer so sagen will, gibt es die höheren Programmiersprachen - und weil es für uns Menschen sonst sehr mühsam wäre. Assemblersprache ist eine sehr, sehr schwierige Programmiersprache.

Speicherauszug = Hexdump

Die einzelnen Bytes kann man nun auch sichtbar machen. Man sagt auch "Speicherauszug" oder "Dump" dazu. Oder - weil es meistens in Hexadezimalzahlen geschieht, sagt man "Hexdump".

Der Begriff "Hexdump" bei Wikipedia: