Zum Inhalt springen
L

Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).

Grundlagen der Informatik, Lehrvideo; HW, CPU, Assembler, Maschinensprache - mit Übungsteil

Ulrich Greveler25:27 4.025 Aufrufe veröffentlicht Auf YouTube

Das Wichtigste aus dem Video

Tipp auf eine Zeit – das Video springt genau dorthin.

Transkriptautomatisch erstellt · 167 Zeilen
Herunterladen
  1. ja hallo liebe Zielgruppe ich begrüße Sie zu einem weiteren Video aus der Reihe Grundlagen Informatik heute mit den Themen Hardware CPU aber vor allem
  2. Maschinensprache und Assembler zunächst ein kurzer Blick in die Geschichte die Zuse Z3 war der erste funktionsfähige Digitalrechner und wurde
  3. 1941 von Konrad zose und seinem Team gebaut sie arbeitete mit insgesamt 2000 elektromagnetischen Relais Relais sind elektromagnetische Schalter bestehend
  4. aus Spule und Anker und sie haben meist zwei Schaltstellungen an aus 01 schon im 19 Jahrhundert wurden mechanische Rechenmaschinen entworfen und zum Teil
  5. auch gebaut hier sieht man die analytical machine von charles Babbage aus den 18300er Jahren dies ist leider nie über
  6. den Entwurf hinausgekommen aber es gab schon Programme zur hat adaer Lovelace 1843 ein Programm veröffentlicht zur Berechnung von benulli Zahlen mit dieser
  7. Analytical Engine in den späten 1940er Jahren wurde der WG gebaut dieser enthielt bereits Neuerungen gegenüber der eniak die ein
  8. paar Jahre vorher gebaut wurde finanziert hat beide sehr sehr teuren Rechner die US-Armee die brauchte einen Rechner zur Berechnung von ballistischen
  9. Tabellen beide Rechner beruhen bereits auf der Röhrentechnologie die sehr viel schneller war als die Relais Technologie allerdings fielen
  10. diese Röhren sehr häufig aus so dass der iniak fast ständig defekt war beim adweg sah das schon deutlich besser aus eine weitere Neuerung war beim weg dass
  11. Programmdaten wie zu verarbeitende Daten behandelt wurden was eine sehr viel schnellere Konfiguration erlaubte das bezeichnen wir heute als von Neumann
  12. Architektur beide Rechner blieben letztlich Einzelstücke die mit sehr großem auch personellen Aufwand betriebsbere it gehalten werden mussten
  13. das Nixdorf 820 System wurde 1968 gebaut und bestand im wesentlichen aus einem 12 Bit parallelrechenwerk mit lochkartentechnik zur ein und Ausgabe es
  14. hatte schon eine numerische funktionstastatur und auch einen integrierten Drucker zuudem zwei Roms für die Anwenderprogramme und für das
  15. Betriebssystem dieses war auch kommerziell erfolgreich es wurden 40.000 Exemplare verkauft die sich auch klein ere Betriebe leisten konnten in den 70er
  16. und 80er Jahren gab es dann ein paar Neuerungen zuerst gab es miniomputer die waren etwa so groß wie ein Kühlschrank und später auch Mikrocomputer oder
  17. homecuter genannt die man sich sogar auf den Schreibtisch zu Hause stellen konnte der Altair 8800 war ein früher Vertreter er wurde 1975 als Bausatz verkauft und
  18. kostete bei der Fertigstellung so ca 500 USDollar er war ein Basic programmierbar hielt ein 8bit Prozessor zur Ausgabe diente allerdings kein Monitor sondern
  19. es wurden Leuchtdioden verwendet die die Ergebnisse den Benutzer anzeigten die frühen 80er wurden stark dominiert von diesen 8 Bit Mikrocomputern oder eben
  20. Heimcomputern darunter auch der IBM PC der sein Siegeszug in den büromgebungen antrat und Rechner wie der Commodore 64 oder Apple 2 oder ZX Spektrum die als
  21. Homecomputer für Privatleute oder auch als spieleecomputer für Jugendliche dienten ein wichtiger Vertreter dieser 8bit CPU Technologie war z.B z80a von
  22. zilock wir möchten uns nur näher mit der Funktionsweise von Prozessoren beschäftigen zunächst geht es um den Speicher der Arbeitsspeicher eines
  23. Computers wird in Speicherzellen eingeteilt jede Zelle verfügt über eine Adresse der Speicher ist also durchnummeriert und über die Adresse
  24. kann ich auf eine Speicherzelle zugreifen lesen oder schreiben wir können uns einen Speicher fast immer als Folge von bites vorstellen hier sehen
  25. Sie ein Beispiel die Speicheradressen haben eine Breite von 16 Bit damit kann ich 64 Kibi bite Hauptspeicher ansteuern wobei jede Adresse auf ein bite zeigt
  26. das ist eine typische Architektur von Rechnern aus den 80er Jahren oder auch von Microcontrollern heute wir unterscheiden einige speicherarten die
  27. Speicherzellen haben unterschiedliche Größen früher waren es oft 8 Bit heute aber auch 16 32 64 ja oder sogar 100 28 Bits trotzdem werden die Adressen
  28. weiterhin im Beiz hochgezählt auch bei größeren Zellen der Arbeitsspeicher ist meist ein flüchtiger Speicher das heißt er muss regelmäßig mit Strom versorgt
  29. werden damit die Daten nicht vergessen werden dort hat man einen wahlfreien Zugriff auf jede Speicherzelle also mit Angabe der Adresse kann ich lesen oder
  30. schreibend auf irgendeine Zelle zugreifen und das auch recht schnell darüber hinaus gibt es feste Speicher also nicht flüchtige Speicher die z.B
  31. beim Einschalten eines Computers zur Verfügung stehen diese brauchen keinen Strom um Ihre Daten zu halten wir unterscheiden also RAM und Rom das ROM
  32. unterteilen wir oft noch in ein prom das ist einmalig zu überschreiben in ein EPROM das ist mit gewissem Aufwand mehrfach zu beschreiben und EEPROM was
  33. mit geringem Auwand das heißt auch elektronisch neu beschrieben werden kann beim EPROM geschieht das nicht elektronisch z.B mit UVLicht spezielle
  34. eeepromspeicher sind flashpeicher hier können massenhaft Daten gespeichert werden ohne dass wir eine ständige Stromversorgung brauchen diese
  35. Flashspeicher werden daher auch als Ersatz für Festplatten mit rotierenden Scheiben verwendet diese werden dann SSDs für solid state Discs genannt die
  36. heute verwendeten PCs bestehen aus typischen Komponenten für die sich in den letzten Jahren so eine Art Standard herausgebildet hat die Hauptplatine ist
  37. meist senkrecht verbaut auch oft Motherboard genannt und auf dieser befindet sich auch der Hauptprozessor das das ist die wesentliche
  38. rechenkomponente und auch der hauptenergieverbraucher eines Computers deseswegen ein besonders aufwendiger Kühler auf dem Prozessor angebracht wird
  39. hier finden Sie auch den Arbeitsspeicher und teilweise noch gesonderte Grafikkarten für die grafische Ausgabe auf einem Display sie benötigen ein
  40. Netzteil und ein Festplattenspeicher und die älteren von Ihnen kennen vielleicht auch noch optische Laufwerke z.B DVD Brenner oder cdraumlaufwerke für den
  41. Menschen gibt es dann noch Monitor Tastatur und Maus damit der Computer bedient werden kann in der historischen Rücksicht gibt es zwei wesentliche
  42. hauptarchitekturen die Harvard Architektur sieht vor dass Daten und Programme getrennt sind es sind also zwei verschiedene Speicher die können
  43. auch eine unterschiedliche Architektur aufweisen und es ist ein gleichzeitiger Zugriff auf Programmbefehle und Daten möglich so werden z.B fehlerhafte
  44. Programme auch davor geschützt sich selbst zu überschreiben mit Hilfe von Steuer und Rechenwerk werden die Befehle ausgeführt die meistens aus sehr
  45. einfachen arithmetischen Operationen bestehen ebenfalls aus den 40er Jahren stammt die von neumannarchitektur hier gibt es nur einen speichertypus der
  46. sowohl Daten als auch programmbefehler enthält das ist von der Grundidee her etwas langsamer als die harvardarchitektur weil der Rechner
  47. zuerst den Befehl und dann die Daten liest dafür ist es aber viel einfacher neue Programme in den Speicher zu laden und diese zu modifizieren die Funktionen
  48. von Steuerwerk und Rechenwerk werden in einer zentralen Einheit der CPU zusammen gefasst das Steuerwerk führt die Programmbefehle aus das Rechenwerk fürt
  49. die Operationen durch es gibt einen adressbuss um die Speicheradressen zu übertragen und ein Datenbus für die eigentlichen gelesenen oder
  50. geschriebenen Daten diese Architektur ergänzt um Eingabe und Ausgabe ist letztlich die Grundarchitektur der meisten heute verwendeten Computer die
  51. zentrale Recheneinheit folgt dabei einem festen Rhythmus oder einem Takt der Befehlszähler zeigt in den Speicher zuerst wird ein Maschinenbefehl aus dem
  52. Speicher geholt dann wird der Befehl decodiert und schließlich wird der Befehl ausgeführt wenn kein Sprung erfolgt wird der Befehlszähler
  53. inkrementiert und wir beginnen von vorne nächsten Befehl holen nächsten Befehl dekodieren nächsten Befehl ausführen und so weiter die Maschinenbefehle stehen
  54. hintereinander am Speicher wobei die CPU auch hin und her springen kann wenn bedingte oder unbedingte Sprungbefehle verwendet werden der Prozessor vereinigt
  55. also Rechenwerk und Steuerwerk und er verfügt auch über einen kleinen Speicher mit den sogenannten Registern auf den er besonders schnell zugreifen kann zudem
  56. enthält er meistens einen speichermanager um das RAM zu verwalten auch heutige Prozessoren führen im Wesentlichen nur diese Aufgabe aus
  57. Maschinenbefehle aus dem Speicher holen und einfache arithmetische oder logische Operationen durchführen das allerdings in einer rasenden Geschwindigkeit pro
  58. Sekunde können Milliarden von Maschinenbefehle ausgeführt werden typische Instruktionen der Maschinensprache sind diese bitweisen
  59. logischen Operationen wie and or X or oder not deren Ergebnisse wir Wahrheitstabellen entnehmen können so gilt true and false = false oder false X
  60. or true = true diese Operationen liegen als Befehle vor und können von der CPU direkt ausgeführt werden wie auch weitere Befehle zur Addition Subtraktion
  61. inkrementieren dekrementieren Zugriff auf den Speicher und bedingte wie auch unbedingte Sprünge jeder Maschinenbefehl hat eine Nummer den sogenannten Opcode
  62. der als Bitmuster im RAM vorliegt wenn die CPU den nächsten Befehl dort findet zusammen bilden alle diese Codes den Befehlssatz einer CPU um es den Menschen
  63. zu erleichtern Maschinenprogramme zu erstellen wurden assempl Sprachen erfunden dann müssen wir keine Opcodes lernen sondern kurze Befehle die
  64. sogenannten nanomix die man sich viel besser merken kann das ergibt dann eine assemers Sprache die vom Assembler in Maschinensprache übersetzt werden kann
  65. sie sehen hier rechts den wichtigen Unterschied die CPU findet im Speicher die hier hexadezimal dargestellten obcodes vor z.B bedeutet 06 dass ein
  66. Register ein neuen Wert bekommt 02 ist das Register mit der Nummer 2 und 2 ist der Wert 32 den das Register bekommen soll die CPU liest also nacheinander
  67. diese drei Bytes und führt den Befehl aus das ist ein Beispiel für ein 8bit Prozessor der also bite für bite aus dem RAM liest der nächste Befehl schreibt
  68. den Wert 232 in das Register mit der Nummer 3 hier dargestellt als Opcode 06 mit Parameter 03 und E8 danach folgt der
  69. Opcode 32 der Befehl schiebt den Inhalt eines Registers auf den Stack das geschieht einmal für das Register mit der Nummer 0 und dann für das Register
  70. mit der Nummer 1 es wäre grundsätzlich denkbar dass wir als Menschen auch so programmieren dass wir also die Opcodes einer großen Tabelle entnehmen und dann
  71. nach und nach diese Werte aufschreiben die das Maschinenprogramm bilden das wäre aber wirklich sehr umständlich und sehr anfällig man findet sich hier nur
  72. sehr schlecht zurecht in der Maschinensprache unten rechts sehen Sie die assempler Darstellung dieses maschinenprogramms wir können das viel
  73. einfacher verstehen die Register bekommen hier Buchstaben a b c d und die obcodes entsprechende nenomix z.B move um 32 in das Register C zu schreiben
  74. oder ink C und InCD um beide Register zu inkrementieren am Schluss des Programms finden Sie hier einen bedingten Sprungbefehl das Programm springt an die
  75. Adresse Null also an den Anfang zurück wenn eine gewisse Bedingung gegeben ist so werden also Schleifen in Maschinensprache realisiert hier codiert
  76. als assemlersprache in den weiteren Beispielen und auch meine Lehrveranstaltung verwenden wir ein
  77. übungsassemler von Markus schweighauser das ist ein 8bit assempler Simulator der komplett im Browser läuft damit können Sie nicht nur Programme erstellen und
  78. assemplieren und zur Ausführung bringen sie können auch jederzeit sehen was das Programm genau tut sie haben einen vollständigen Überblick über das gesamte
  79. RAM und können erkennen welche Werte dort verändert werden das ist eine sehr komfortable Situation die sie als normaler assempler Programmierer nicht
  80. haben zudem brauchen sie keine weiteren Werkzeuge um hier assempler Programmieren zu erlernen wenn Sie die assemler Programmierung mit diesem
  81. übungsassemler einmal erlernt haben ist der Umstieg auf einen richtigen assemler aber nicht schwierig denn dort herrscht die gleiche Grundstruktur was den
  82. Befehlssatz angeht und auch die nenomix sind sehr ähnlich zum üben und zu feh Suche ist der übungsassembller allerdings
  83. unschlagbar das RAM besteht hier aus 256 Bytes die jederzeit dezimal oder hexadezimal visualisiert werden das kann man einstellen auch der aktuelle
  84. Registerinhalt und der wer der Flex wird jederzeit dargestellt ich stelle nun die assempler Befehle vor es dauert nur wenige Minuten
  85. und sie haben den kompletten Befehlssatz der assemlersprache kennengelernt und das ist übrigens typisch für assemlersprachen
  86. es gibt nur sehr wenige unterschiedliche Operationen mit dem mvebefehl können wir auf den Speicher zugreifen und auch Registerwerte kopieren die Reihenfolge
  87. ist immer Ziel Komma Quelle move a b kopiert also B nach A move a,1 kopiert den Wert 1 in das Register a move a c in eckigen Klammern bedeutet dass der Wert
  88. aus dem Speicher an der Adresse C in das Register a kopiert wird wir lesen also aus dem RAM move D in eckigen Klammern Komma a ist das zurückschreiben ins RAM
  89. der Wert von a wird in das RAM an die Adresse die im Register D gespeichert ist geschrieben die Register im Prozessor sind Variablen auf die sehr
  90. schnell zugegriffen werden kann diese enthalten die Parameter und die Ergebnisse von arithmetischen und logischen Operationen die flagreister
  91. speichern einzelne Bits die Werte nennen wir meistens true und fals einige der Maschinenbefehle ändern Werte von fleckregistern während der Operation
  92. sodass der näch Befehl auf die Flex zugreifen kann dazu sehen sie noch Beispiele und nun lernen Sie auf einen Schlag alle Rechenoperationen und alle
  93. logischen Operation kennen ganz allgemein können CPUs zwar extrem schnell rechnen dafür sind ihre Rechenfähigkeiten aber auf wenige
  94. elementare Operationen beschränkt das gilt nicht nur für den übungsassempler sondern auch für reale CPUs wir können inkrementieren dekrementieren addieren
  95. subtrahieren manche CPUs können auch multiplizieren und dividieren das ist aber bereits purer Luxus bei der Maschinensprache neben den bitweisen
  96. logischen Operationen wie and or X or oder Not gibt es auch shift Operation da werden alle Bits nach links oder nach rechts geschoben alle diese Operationen
  97. beeinflussen auch nebenbei die Flex hier nun wichtige Varianten add a b führt zur Addition von A und B wobei die Summe in a abgelegt wird auf die gleiche Weise
  98. kann ich den konstantenwert 10 auf a aufadidieren ich kann B von abziehen oder ein konstant Wert 5 von B abziehen ich kann B inkrementieren oder C
  99. dekrementieren mit dem Befehl mull5 wird der Wert von a verffacht sowohl der multiplikationsbefehl als auch der divisionsbefehl können nur mit dem
  100. Register a operieren das sind typische Einschränkungen die das Design einer CPU erleichtern und für die schnelle Ausführung von Operationen dienlich sind
  101. die bitweise Verknüpfung von A und B kann ich mit n a b ausdrücken und das Ergebnis wird dann wieder im Register a gespeichert eine
  102. Verknüpfung mit dem hexadezimalenwerert 80 hier dargestellt als 0x 80 entspricht der Verknüpfung mit dem dezimalen Wert 128 und das bedeutet letztlich der Wert
  103. des ersten Bits wird festgehalten und alle anderen sieben Bits werden auf Null gesetzt also quasi gelöscht genauso funktioniert auch der orbefehl z.B mit
  104. zwei Registern oder einem Register und einer Konstante der notbefehl flippt alle Bits das heißt aus 0 wird 1 aus ein wird 0 und sie sehen hier noch ein
  105. Beispiel für Sch Befehle der Link shift um z führt dazu dass alle Bits zwei Stellen nach links wandern wähend von rechts zwei Nullen eingeschoben werden
  106. im konkreten Beispiel führt das dazu dass das Bitmuster was für die Zahl 42 steht danach den Wert 168 aufweist das ist der vierfache wert weil das Anhängen
  107. von zwei Nullen letztlich der Multiplikation mit 4 entspricht solange Links keine einbits rausfallen was hier der Fall war zur Realisierung von
  108. Schleifen brauchen wir bedingt oder unbedingte Sprünge und ein Befehl den sogenannten comparebefehl der comparebefehl vergleicht Werte und setzt
  109. entsprechende Flag Register hier als z und C bezeichnet Zero und carry bedingte Sprünge werden nur ausgeführt wenn die Flex entsprechend gesetzt sind so können
  110. wir A mit B vergleichen oder auch B mit 17 vergleichen und danach springen wenn beispielsweise a größer als B ist oder es gibt auch ein Sprungbefehl für wenn A
  111. = B ist und so weiter der jumpbefehl ist ein unbedingter Sprung der also immer ausgef frt wird ansonsten gibt es eine lange Tabelle mit bedingten Sprüngen wo
  112. ich mir den Befehl raussuchen kann der zu meinem letzten Vergleich oder zu meiner letzten Rechnung passt z.B jne wenn der compare eine Ungleichheit
  113. ergeben hat hier nur gleich drei Beispielprogramme die aber alle dre dasselbe tun die drei Programme erfüllen eine Aufgabe es werden die Werte aus dem
  114. Speicher von der Adresse 100 bis zur Adresse 108 ausgelesen und die Inhalte werden addiert und zum Schluss in a abgelegt das Programm ganz links ist die
  115. direkte Implementierung zunächst wird der Wert 0 in a geschrieben damit wir danach aufsummieren können dann wird der Inhalt der Speicherzelle mit der Adresse
  116. 100 auf a auferdiert dann 101 102 und so weiter bis zum Schluss der Inhalt von der Speicherzelle mit Adresse 108 auf A aufadidiert wird dann ist die Summe im
  117. Register a enthalten das kann man natürlich so implementieren aber je größer der Speicherbereich ist desto eher suchen wir eine Möglichkeit das mit
  118. einer Schleife zu realisieren das Programm mit der in der Mitte merkt sich zunächst die Adresse 100 im Register B und dann den Wert 9 im Register C weil
  119. wir insgesamt neun addition vornehmen möchten dann wird in der Schleife jeweils der Inhalt an der adressierten Speicherzelle auf a addiert und der Wert
  120. von C dekrementiert sodass wir die Befehle in der Schleife immer wieder ausführen bis der Wert von c 0 erreicht der bedingte Sprung jnz da steht für
  121. Jump non Zero wird also so lange ausgeführt wie die Operation davor Dekrement C nicht den Wert Null ergibt insgesamt wird die Schleife also neunm
  122. durchlaufen und die Gesamtsumme steht schließlich im Register a auf der rechten Seite sehen Sie eine Alternative Implementierung Überschleifen hier wird
  123. in C der Wert 109 gespeichert und in der Schleife wird überprüft ob dieser Wert erreicht wurde dann wird die Schleife verlassen das funktioniert genau so gut
  124. aber viele würden vielleicht sagen der programmierstilel ist hier schlechter denn die Zahl 109 wird ja gar nicht benötigt für das reale Problem wo wir
  125. einfach nur auf die Zellen 100 bis 108 hinweisen die 109 ist also der erste nicht erlaubte Wert der zum rechtzeitigen Verlassen der Schleife
  126. führt das ist aber letztlich eine Geschmacksfrage ganz generell würden wahrscheinlich viele programmiererinnen und Programmierer sagen dass assemler
  127. Programme nie elegant sind denn die üblichen Beispiele für gute Programmierstile werden mit Hochsprachen realisiert zum Schluss lernen wir noch
  128. kennen wie wir Unterprogramme realisieren und den steck nutzen können der Stackpointer ist ein Register welches ins RAM zeigt und die Position
  129. festlegt die der oberste Wert auf dem Stack einnimmt mit dem pushbefehl werden dann Werte auf dem Stack abgelegt und der Zeiger wird entsprechend
  130. dekrementiert mit dem popbefehl werden diese Werte vom Stack zurückgeholt und der Zeiger wird inkrementiert man könnte sagen das Stck wächst von rechts nach
  131. links und der Teil des RAMs zwischen Programm und zwischen Stack ist der freie Speicher W der Abarbeitung über den Stack können Sie auch Parameter an
  132. Unterprogramme übergeben der Aufruf eines Unterprogramms wird nicht über den jumpbefeh vorgenommen sondern über den callbefehl dieser führt zwar ebenfalls
  133. einen Sprung aus aber gleichzeitig merkt er sich den Wert des befehlszählers also die Adresse im RAM die auf eine Speicherzelle zeigt die den
  134. nächsten auszuführenden Befehl enthält der Wert wird auf dem Stack abgelegt und wenn das Unterprogramm seine Arbeit beendet hat kann der returnbefehl aus
  135. führt werden der den Wert vom Stack zurückliest und einen Sprung an die Adresse ausführt so kann ein Hauptprogramm ein Unterprogramm
  136. ausführen und danach wird mit dem nächsten Befehl des Hauptprogramms fortgesetzt hier sehen Sie nur ein paar Beispiele zum Verständnis ist es
  137. zunächst wichtig zu verstehen dass unser übungsassembler über ein virtuelles Display verfügt das sind 24 Bytes die mit askizeichen beschrieben werden
  138. können und die im hinteren Teil des ramspeichers ab Adresse 232 zu finden sind sind im Register D wird also die Adresse dieser displayausgabe abgelegt
  139. dann wird der Wert 2 im Register a abgelegt und der Wert wird zweimal ausgegeben a wird inkrementiert und der Wert wird noch dreimal ausgegeben und
  140. zum Schluss für die Zahl 4 noch einmal ausgegeben das Unterprogramm wird hier mit einer Sprungmarke angesteuert der assempler berechnet also die
  141. Speicheradresse die den Maschinencode des Unterprogramms enthält zunächst wird der alte Inhalt des Registers a auf dem Stack abgelegt weil wir das Register
  142. gleich brauchen und den Wert nicht einfach überschreiben möchten dann wird der aski Wert der Ziffer Null aufadidiert um eine Ausgabe der Ziffer
  143. vorzubereiten und das askzeichen wird an die Adresse die in D abgelegt ist geschrieben damit erscheint eine Ziffer auf dem Display der Wert von D wird
  144. inkrementiert um ein Schreiben von links nach rechts zu ermöglichen a wird wiederhergestellt und wir springen zurück die beiden programmfragmente
  145. rechts zeigen wie ein Unterprogramm ein weiteres Unterprogramm aufrufen kann so wird das Unterprogramm in der Mitte aufgerufen wenn ich ein Komma und ein B
  146. ausgeben möchte und dieses Unterprogramm kann ich im neuen ausgabeunterprogramm auf der rechten Seite nutzen um nach jeder Ziffer entsprechend Komma und
  147. space auszugeben und dann zurück ins Hauptprogramm zu springen auf diese Weise kann das Unterprogramm Ausgabe kommpace auch von anderen Programmteilen
  148. verwendet werden ich muss es nur einmal implementieren das neue Unterprogramm verschachtelt also diese Aufrufe zum Abschluss noch ein paar
  149. Übungen zum Thema assempler sie können das Video wieder anhalten um sel das Programm zu schreiben bzw zu analysieren dazu werden wieder die Zahlen 1 2 3
  150. hochgezählt s dass sie rechtzeitig stoppen können bevor die Lösung erscheint in dieser Aufgabe sollen sie nun selbst analysieren was genau dieses
  151. assempler Programm macht es berechnet eine Funktion aber welche im Programm wird die ganzzahlige Division und Multiplikation verwendet einige
  152. Wertepaare sind angegeben so führt die Eingabe 47 zur Ausgabe 7 die Eingabe 146 Z 6 und so weiter die Eingabe 0 FT zur Ausgabe 0 aber welche Funktion ist das
  153. überlegen Sie einmal selbst stoppen Sie nun das Video in wenigen Sekunden werden Sie hier die Lösung sehen und hier ist die Lösung das
  154. Programm berechnet die Funktion f Vonn = n Modul 10 das heißt es wird der ganzzahlige Rest beim Teilen durch 10 bestimmt oder mit anderen Worten es wird
  155. die letzte Ziffer einer dezimalen Zahl bestimmt dies geschieht hier über einen geschickten Umweg zuerst wird durch 10 geteilt und der Rest wird dabei fallen
  156. gelassen danach wird wieder mit 10 multipliziert sodass die Zahlen nun ein werter hat der sich um den Rest unterscheidet von ihrem bisherigen Wert
  157. mit der Bildung der Differenz erhalten wir schließlich diesen Rest und können ihn anschließend in a ablegen so wurde die Funktion
  158. implementiert in dieser Aufgabe sollen sie nun selbst eine semplerprogramm schreiben und zwar eine Schleife implementieren diese Schleife soll die
  159. Ausgabe löschen das heißt hier konkret das bite an der Adresse 232 und alle folgebites bis zur Adresse 255 sollen mit null überschrieben werden
  160. einen passenden Sprungbefehl können Sie aus der Tabelle rechts auswählen sie können das Video jetzt anhalten und in aller Ruhe das assemplerprogramm
  161. Aufschreiben sie sehen nun gleich die Lösung ja und das kurze Programm unten rechts löst diese Aufgabe der Startwert von 232 wird im Register D abgelegt in
  162. der Schleife wird im RAM an dieser Position der Wert 0 abgelegt und D wird so lange inkrementiert bis der Wert 255 erreicht ist und letztmalig die Null
  163. geschrieben wird die Schleife bricht also ab wenn der Wert von 255 noch einmal inkrementiert wird dabei geschieht hier ein Überlauf sod dass wir
  164. den Vergleich mit dem Wert Null durchführen müssen das Programm hält also einfach an nachdem D den Wert n0 erreicht hat das war auch schon die
  165. letzte Übungsaufgabe und das Ende des Lehrvideos ist der reich ich hoffe Sie konnten etwas dazu lernen über Hardware über CPUs und insbesondere über assemler
  166. und Maschinensprache vielleicht schauen sie sich dann auch ein anderes Video aus der Reihe Grundlagen der Informatik an bis dahin verabschiede ich mich auf
  167. wiederschauen [Musik]

Zum Nachlesen