Assemblerkurs #1
                       ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

  Ich habe lange berlegt wie ich nun anfange und fr wen diese 
  Rubrik eigentlich gedacht sein soll. Am Ende aller šberlegun-
  gen, bin ich schlieálich zu der Entscheidung gelangt mit dieser
  Rubrik die Assemblersprache von Anfang an zu erkl„ren, um In-
  terresierten einen Einstieg zu erm”glichen.
  
  Da gibt es allerdings nur ein Problem, denn bevor man richtig
  in die Assembler-Programmierung einsteigen kann, w„ren einige
  Grundkenntnisse ber die Funktionsweise einer CPU, bin„rer Lo-
  gik und Zahlensysteme ratsam, allerdings nicht notwendig.
  Alle die, die diese Grundkenntnisse schon besitzen, oder sogar 
  schon erste Erfahrungen in Assembler-Programmierung gemacht ha-
  ben, werden in dieser Rubrik also nicht auf Ihre Kosten kommen
  (nicht b”se sein!).

  Themenbersicht:

                Teil 1  1.1             Zahlensysteme
                        1.2             Bin„re Logik
                        1.3             Aufbau eines PC's
                        1.4             Die CPU

                Teil 2  2.1             Assembler-Programmierung
                        2.2             Prozeduren
                        2.3             Arithmetikbefehle
                        2.4             Logikbefehle
                        2.5             Schleifen und Sprnge
                        2.6             Felder             
                        2.7             Zeichenketten

  Vielleicht wird es auch noch einen dritten Teil geben, aber
  daá h„ngt ganz von der von Euch kommenden Resonanz ab. Wenn
  kein Interesse an diesem Einsteiger-Kurs besteht, dann
  schreibt es mir bitte.

                                
                                TEIL 1

  1.1   Zahlensysteme

        Fangen wir nun an, mit der etwas theoretischen, aber 
        sehr ntzlichen Einfhrung in die Zahlensysteme, die im 
        Umgang mit Assembler wichtig sind.
        
                            
                            Das Dezimalsystem

        Wir kenne alle aus unserem t„glichen Umgang mit Zahlen
        das Dezimalsystem (Zehnersystem), das Zahlen auf der Ba-
        sis von zehn Ziffern darstellt.

        Wenn man aber, z.B. die Zahlen

                        983     und     544

        betrachtet, wird nicht unmittelbar klar, warum es sich um
        ein Dezimalsystem handelt. Wenn man die Zahlen aber als 
        Summen aus den Produkten der Ziffern mit der Basis 10
        hoch der Postition der Ziffer in der Zahl darstellt wird
        es deutlicher:

                983 = 9 * 10^2 + 8 * 10^1 + 3 * 10^0   und
                
                544 = 5 * 10^2 + 4 * 10^1 + 4 * 10^0

        
        Fr die Programmierung in Assembler wird das Dezimalsys-
        tem allerdings sehr selten verwendet, sondern viel h„ufi-
        ger das Dual- und das Hexadezimalsystem.

        
                              Das Dualsystem

        Das Dualsystem benutzt zur Darstellung von Zahlen nur 
        zwei Ziffern, die 0 und die 1. Die Zahlen

                            0101 und 1010

        kann man auch wieder als Summen aus Produkten schreiben, 
        diesmal allerdings mit der Basis zwei hoch der Position 
        der Ziffer in der Zahl:

          0101 = 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 5 und

          1010 = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0 = 10

        Damit wird auch gleichzeitig klar, wie man Dualzahlen in
        Dezimalzahlen umwandelt.
        Das Dualsystem liegt jeder digitalen Datenverarbeitungs-
        anlage zugrunde, da die Schalt- und Speicherelemente
        dieser Anlagen nur zwei Zust„nde kennen.


                            Das Hexadezimalsystem

        Das Hexadezimalsystem basiert auf 16 verschiedenen Zif-
        fern. Da wir aber nur zehn verschiedene Ziffern kennen,
        werden die fehlenden sechs Ziffern durch Buchstaben re-
        pr„sentiert, genaugesagt durch die ersten sechs Buchsta-
        ben des Alphabetes. Das 'A' steht stellvertretend fr die
        Ziffer zehn, das 'B' fr die Ziffer elf, usw., bis zum
        'F', das die Ziffer 15 darstellt. Die Zahlen

                               083F und AD4E

        lassen sich dann auch wieder als Summen aus Produkten
        darstellen, diesmal allerdings zur Basis 16 hoch der Po-
        sition der Ziffer in der Zahl:

        083F = 0 * 16^3 + 8 * 16^2 + 3 * 16^1 +15 * 16^0 = 2111

        und

        AD4E =10 * 16^3 +13 * 16^2 + 4 * 16^1 +14 * 16^0 =44366


  1.2   Bin„re Logik

        Wie beim Dual-, oder Bin„r-, system schon erkl„rt, kennen
        Schalt- und Speicherelemente einer DV-Anlage nur zwei Zu-
        st„nde, n„mlich 0 oder 1. Man sagt auch eine Ziffer ist
        gesetzt (1), oder nicht gesetzt (0).
        Die logischen Grundverknpfungen machen nichts anderes 
        als reihenweise zwei duale Ziffern nach einer bestimmten 
        Funtionsvorschrift zu einer zusammenzufassen. Die lo-
        gischen Grundverknpfungen sind die AND, OR, EXOR und die
        NOT Funktion.
        Die Funktionsvorschrift nach der die einzelnen Ziffern
        einer Dualzahl miteinander verknpft werden, stellt man
        am einfachsten in einer Wahrheitstabelle dar.
        Der Aufbau einer Wahrheitstabelle wird sehr schnell an
        einem Beispiel klar:

        Die Wahrheitstabelle der AND Funktion sieht wie folgt
        aus:

                Ziffer 1   |     Ziffer 2    |    nach AND
             ------------------------------------------------
                   0       |        0        |        0
                           |                 |
                   1       |        0        |        0
                           |                 |
                   0       |        1        |        0
                           |                 |
                   1       |        1        |        1

        Man erkennt, daá bei einer AND Verknpfung das Ergebnis
        nur dann 1 wird, wenn beide Ziffern die verknpft werden
        sollen gesetzt, also gleich 1, sind.

        Die Wahrheitstabelle der OR Funktion:

                Ziffer 1   |     Ziffer 2    |    nach OR
             ------------------------------------------------
                   0       |        0        |        0
                           |                 |
                   1       |        0        |        1
                           |                 |             
                   0       |        1        |        1
                           |                 |
                   1       |        1        |        1

        Die Wahrheitstabelle der EXOR Funktion:

                Ziffer 1   |     Ziffer 2    |    nach EXOR
             ------------------------------------------------
                   0       |        0        |        0
                           |                 |
                   1       |        0        |        1
                           |                 |             
                   0       |        1        |        1
                           |                 |
                   1       |        1        |        0

        Die Wahrheitstabelle der NOT Funktion, auch Inverter-
        Funtion genannt sieht etwas anders aus als die vorange-
        gangenen Tabellen, daá liegt daran das die NOT Funtion
        nichts anderes macht als eine Ziffer invertiert, also
        eine gesetzte Ziffer l”scht und eine nicht gesetzte Zif-
        fer setzt.

                Ziffer 1   |     nach NOT
             --------------------------------
                   1       |         0
                           |
                   0       |         1

        Die logischen Grundverknpfungen existieren auch als 
        Assemblerbefehle, deshalb ist es ganz ntzlich ber die
        Funktionsweise dieser Funktionen Bescheid zu wissen.

        Damit sind wir fr heute auch schon ans Ende des Ein-
        steiger-Kurses gelangt.


                                               Gabriel