Benutzer:Be59

Aus Lowlevel
Version vom 1. Februar 2009, 13:39 Uhr von Be59 (Diskussion | Beiträge) (→‎Algemeines zu Assembler)
Wechseln zu:Navigation,

Dieses Tutorial ist dafür da, die Grundlagen von Assembler beizubringen. Anders als circa 99,9 Periode aller Assemblertutorial werde ich grundsätzlich auf die nicht so bekannte AT&T Syntax setzen.

Algemeines zu Assembler

Wieso es Assembler gibt

Um das zu Erfahren, wieso es Assembler gibt, muss man sich die Geschichte der Informatik ansehen. Im 16. Jahrhundert(Ja, im 16.) wurden Rechenmaschinen entwickelt, die leider nicht so schnell waren. Nachdem den zweiten Weltkrieg gab es dann langsam eine nächste Generationen von Rechenmaschinen, die universiell einsetzbar waren, die Computer. (Ein Magazin über Elektronik sagte 1946 mal, dass Computer der Zukunft 1,5 Tonnen wiegen werden. Heute witzeln wir darüber, aber es ist wahr geworden.) Erstmal rechneten diese Computer in Dezimalstellung(Einfach ausgedrückt sind das unsere Zahlen) Aber mit diesem zu Rechnen war lllllaaaaannnnnnnggggggggssssssssssaaaammmmm. Ab den Zuse Z3 gab es den ersten binären Computer. Binär ist eine Zahl, die mit Nullen und Einsen geschrieben wird. Jetzt kommen wir langsam zur eigentlichen Fragestellung? 00110101 konnte sich niemand merken, welcher Befehl dies war, oder würdest auswendig lerne, was 10011011 bedeutet. Das gab es schlaue Menschen, die diese Zahlenkolonnon durch Befehle, genannt Mmenokias, ersetzen.

Binär, Dezimal und das berüchtigte Hexadezimal

Dezimal

Dazu gibt es nicht viel zu sagen. Dezimal ist unser Zahlensystem, z.B. 23, 655555, 4594, 10. (Übrigens kommt dieses System aus Indien und wurde über Arabien zu uns gebracht.)

Binär

Binär rechnet jeder PC intern. Binär besteht nur aus den Ziffern 0 und 1, was wiederum für den PC einfach ist, 0 steht für Aus und 1 steht für An. Dies lernt ja man überall, aber für die Menschen, die Mathe zum Schlafen benutzen, ist das hier gedacht.
Eine Zahl als Dezimal zu erfassen geht in Sekundenschnelle, aber beim binären muss man(ich) sehr lange rechnen. Hier kommt die Rechnung: 10 = 1010b. Die letzte Ziffer rechts steht für eins. Ist sie Eins, hat die Zahl ein Wert von Eins(Doof ausgedrückt, aber egal). Die zweite Ziffer von links steht für zwei. Die dritte Ziffer für Vier und die vierte Ziffer für Acht. So jetzt berechnen wir die Zahl 10 binärisch:

1 * 8 (1 = Die vierte Ziffer ist an, 8 bedeutet die vierte Ziffer) + 0 * 4 (3. Ziffer aus, bedeutet 4)
+ 1 * 2(2.Ziffer 1, bedeutet 2) + 1 * 0(1.Ziifer 0, bedeutet 1)

Ich hoffe, ihr habt es kapiert, sonst sieht in Wikipedia an.

In Assembler wird am einer binären Zahl immer noch ein b angehängt, Computer (und Menschen) wissen sonst, ob die Zahl dezimal oder binär ist. Ein wichtiger Artikel ist "Bitweiße Operation", man findet den Link in der Siehe auch - Sektion.

Hexadezimal

Hexadezimal ist ein sehr wichtiges Stellenwertsystem in der Informatik, vielleicht das Wichtigste überhaupt. Man benutzt dieses System oft, da ein Char ein Wert bis maximal 256 haben kann, was in Hexadezimal ausgedrückt 0xFF ist. Wie man sieht, beginnen Hexadezimalezahlen mit 0x. (Ungebräuchlich ist ein h am Ende) Neben den bekannten Zahlen(1, 2, 3, 4, 5, 6, 7, 8, 9, 0) besteht das hex. Stellenwertsystem noch aus den Ziffern A(Wert = 10), B (=11), C(=12), D(=13), E(=14), F(=15).

Bei Wikipedia ist ein gutes Umrechnungsmöglichkeit. Wenn wir ausgehen, dass x die dezimale Zahl ist. Wir teilen x durch 16, den Rest nehmen als Hexadezimale Ziffer(z.B. Rest = 13 = 0xD) Diese Ziffer ist rechte Ziffer. Das Ergebnis dieser Division teilen wir wieder durch 16 und machen mit den Rest das gleiche, sie ist die nächstlinke Ziffer. Dies geht soweit, bist das Ergebnis 0 ist, dann wird der Rest nochmal benutzt.

Ein Beispiel:

1278 : 16 = 79 Rest: 14 (= E) (Nr:1278-(79*16)=14)
 79 : 16 =  4 Rest: 15 (= F) (Nr:79-(4*16)=15)
  4 : 16 =  0 Rest:  4       (Nr:4-(0*16)=4)

Das Ergenis ist 0x4FE.

Bei nicht Verstanden verweise ich auf den Wikipediaartikel.

Andere Zahlensysteme

Es gibt noch andere Zahlensysteme, das oktale kann man als Beispiel nennen. Es hatte früher eine größere Bedeutung als heute, ich nenne es hier nur nebenbei. Additionssysteme(z.B. das römische Zahlensystem) haben keine Bedeutung in der Informatik, ich erwähns mal kurz :-P.

Wieso hier Assembler gebraucht wird

Assembler braucht man für lowlevel-Programmierung. Bootloader, IDT und GDT sind nur einige Beispiele. Das heißt aber nicht, man muss überall Assembler einsetzen. Meiner Meinung sollte man Assembler möglichst wenig benutzen, denn das erhöht die Portablität.(Trotzdem sind Assemblerprogramme/betriebsysteme sehr schnell) Aus diesem Grund wird dieses Tutorial die AT&T-Syntax benutzen, welches beim gcc zu Trage kommt. Damit empfehle ich eine Linux-Installation(bzw. ein Unix, zur Not geht auch Knoppix), die gcc dabei hat.

Siehe auch

Bitweise Operatoren

Weblinks

Für alle Computerhistoriker