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
Das Wichtigste aus dem Video
Transkriptautomatisch erstellt · 167 Zeilen
- 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
- Maschinensprache und Assembler zunächst ein kurzer Blick in die Geschichte die Zuse Z3 war der erste funktionsfähige Digitalrechner und wurde
- 1941 von Konrad zose und seinem Team gebaut sie arbeitete mit insgesamt 2000 elektromagnetischen Relais Relais sind elektromagnetische Schalter bestehend
- aus Spule und Anker und sie haben meist zwei Schaltstellungen an aus 01 schon im 19 Jahrhundert wurden mechanische Rechenmaschinen entworfen und zum Teil
- auch gebaut hier sieht man die analytical machine von charles Babbage aus den 18300er Jahren dies ist leider nie über
- den Entwurf hinausgekommen aber es gab schon Programme zur hat adaer Lovelace 1843 ein Programm veröffentlicht zur Berechnung von benulli Zahlen mit dieser
- Analytical Engine in den späten 1940er Jahren wurde der WG gebaut dieser enthielt bereits Neuerungen gegenüber der eniak die ein
- paar Jahre vorher gebaut wurde finanziert hat beide sehr sehr teuren Rechner die US-Armee die brauchte einen Rechner zur Berechnung von ballistischen
- Tabellen beide Rechner beruhen bereits auf der Röhrentechnologie die sehr viel schneller war als die Relais Technologie allerdings fielen
- 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
- Programmdaten wie zu verarbeitende Daten behandelt wurden was eine sehr viel schnellere Konfiguration erlaubte das bezeichnen wir heute als von Neumann
- Architektur beide Rechner blieben letztlich Einzelstücke die mit sehr großem auch personellen Aufwand betriebsbere it gehalten werden mussten
- das Nixdorf 820 System wurde 1968 gebaut und bestand im wesentlichen aus einem 12 Bit parallelrechenwerk mit lochkartentechnik zur ein und Ausgabe es
- hatte schon eine numerische funktionstastatur und auch einen integrierten Drucker zuudem zwei Roms für die Anwenderprogramme und für das
- Betriebssystem dieses war auch kommerziell erfolgreich es wurden 40.000 Exemplare verkauft die sich auch klein ere Betriebe leisten konnten in den 70er
- 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
- 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
- kostete bei der Fertigstellung so ca 500 USDollar er war ein Basic programmierbar hielt ein 8bit Prozessor zur Ausgabe diente allerdings kein Monitor sondern
- es wurden Leuchtdioden verwendet die die Ergebnisse den Benutzer anzeigten die frühen 80er wurden stark dominiert von diesen 8 Bit Mikrocomputern oder eben
- 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
- Homecomputer für Privatleute oder auch als spieleecomputer für Jugendliche dienten ein wichtiger Vertreter dieser 8bit CPU Technologie war z.B z80a von
- 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
- Computers wird in Speicherzellen eingeteilt jede Zelle verfügt über eine Adresse der Speicher ist also durchnummeriert und über die Adresse
- kann ich auf eine Speicherzelle zugreifen lesen oder schreiben wir können uns einen Speicher fast immer als Folge von bites vorstellen hier sehen
- 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
- das ist eine typische Architektur von Rechnern aus den 80er Jahren oder auch von Microcontrollern heute wir unterscheiden einige speicherarten die
- 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
- 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
- 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
- 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
- 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
- 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
- mit geringem Auwand das heißt auch elektronisch neu beschrieben werden kann beim EPROM geschieht das nicht elektronisch z.B mit UVLicht spezielle
- eeepromspeicher sind flashpeicher hier können massenhaft Daten gespeichert werden ohne dass wir eine ständige Stromversorgung brauchen diese
- Flashspeicher werden daher auch als Ersatz für Festplatten mit rotierenden Scheiben verwendet diese werden dann SSDs für solid state Discs genannt die
- heute verwendeten PCs bestehen aus typischen Komponenten für die sich in den letzten Jahren so eine Art Standard herausgebildet hat die Hauptplatine ist
- meist senkrecht verbaut auch oft Motherboard genannt und auf dieser befindet sich auch der Hauptprozessor das das ist die wesentliche
- rechenkomponente und auch der hauptenergieverbraucher eines Computers deseswegen ein besonders aufwendiger Kühler auf dem Prozessor angebracht wird
- hier finden Sie auch den Arbeitsspeicher und teilweise noch gesonderte Grafikkarten für die grafische Ausgabe auf einem Display sie benötigen ein
- Netzteil und ein Festplattenspeicher und die älteren von Ihnen kennen vielleicht auch noch optische Laufwerke z.B DVD Brenner oder cdraumlaufwerke für den
- Menschen gibt es dann noch Monitor Tastatur und Maus damit der Computer bedient werden kann in der historischen Rücksicht gibt es zwei wesentliche
- hauptarchitekturen die Harvard Architektur sieht vor dass Daten und Programme getrennt sind es sind also zwei verschiedene Speicher die können
- auch eine unterschiedliche Architektur aufweisen und es ist ein gleichzeitiger Zugriff auf Programmbefehle und Daten möglich so werden z.B fehlerhafte
- Programme auch davor geschützt sich selbst zu überschreiben mit Hilfe von Steuer und Rechenwerk werden die Befehle ausgeführt die meistens aus sehr
- einfachen arithmetischen Operationen bestehen ebenfalls aus den 40er Jahren stammt die von neumannarchitektur hier gibt es nur einen speichertypus der
- sowohl Daten als auch programmbefehler enthält das ist von der Grundidee her etwas langsamer als die harvardarchitektur weil der Rechner
- 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
- von Steuerwerk und Rechenwerk werden in einer zentralen Einheit der CPU zusammen gefasst das Steuerwerk führt die Programmbefehle aus das Rechenwerk fürt
- die Operationen durch es gibt einen adressbuss um die Speicheradressen zu übertragen und ein Datenbus für die eigentlichen gelesenen oder
- geschriebenen Daten diese Architektur ergänzt um Eingabe und Ausgabe ist letztlich die Grundarchitektur der meisten heute verwendeten Computer die
- zentrale Recheneinheit folgt dabei einem festen Rhythmus oder einem Takt der Befehlszähler zeigt in den Speicher zuerst wird ein Maschinenbefehl aus dem
- Speicher geholt dann wird der Befehl decodiert und schließlich wird der Befehl ausgeführt wenn kein Sprung erfolgt wird der Befehlszähler
- 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
- hintereinander am Speicher wobei die CPU auch hin und her springen kann wenn bedingte oder unbedingte Sprungbefehle verwendet werden der Prozessor vereinigt
- 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
- enthält er meistens einen speichermanager um das RAM zu verwalten auch heutige Prozessoren führen im Wesentlichen nur diese Aufgabe aus
- Maschinenbefehle aus dem Speicher holen und einfache arithmetische oder logische Operationen durchführen das allerdings in einer rasenden Geschwindigkeit pro
- Sekunde können Milliarden von Maschinenbefehle ausgeführt werden typische Instruktionen der Maschinensprache sind diese bitweisen
- 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
- 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
- inkrementieren dekrementieren Zugriff auf den Speicher und bedingte wie auch unbedingte Sprünge jeder Maschinenbefehl hat eine Nummer den sogenannten Opcode
- 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
- zu erleichtern Maschinenprogramme zu erstellen wurden assempl Sprachen erfunden dann müssen wir keine Opcodes lernen sondern kurze Befehle die
- sogenannten nanomix die man sich viel besser merken kann das ergibt dann eine assemers Sprache die vom Assembler in Maschinensprache übersetzt werden kann
- sie sehen hier rechts den wichtigen Unterschied die CPU findet im Speicher die hier hexadezimal dargestellten obcodes vor z.B bedeutet 06 dass ein
- 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
- 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
- den Wert 232 in das Register mit der Nummer 3 hier dargestellt als Opcode 06 mit Parameter 03 und E8 danach folgt der
- 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
- 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
- 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
- sehr schlecht zurecht in der Maschinensprache unten rechts sehen Sie die assempler Darstellung dieses maschinenprogramms wir können das viel
- 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
- 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
- Adresse Null also an den Anfang zurück wenn eine gewisse Bedingung gegeben ist so werden also Schleifen in Maschinensprache realisiert hier codiert
- als assemlersprache in den weiteren Beispielen und auch meine Lehrveranstaltung verwenden wir ein
- ü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
- 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
- RAM und können erkennen welche Werte dort verändert werden das ist eine sehr komfortable Situation die sie als normaler assempler Programmierer nicht
- haben zudem brauchen sie keine weiteren Werkzeuge um hier assempler Programmieren zu erlernen wenn Sie die assemler Programmierung mit diesem
- übungsassemler einmal erlernt haben ist der Umstieg auf einen richtigen assemler aber nicht schwierig denn dort herrscht die gleiche Grundstruktur was den
- Befehlssatz angeht und auch die nenomix sind sehr ähnlich zum üben und zu feh Suche ist der übungsassembller allerdings
- unschlagbar das RAM besteht hier aus 256 Bytes die jederzeit dezimal oder hexadezimal visualisiert werden das kann man einstellen auch der aktuelle
- Registerinhalt und der wer der Flex wird jederzeit dargestellt ich stelle nun die assempler Befehle vor es dauert nur wenige Minuten
- und sie haben den kompletten Befehlssatz der assemlersprache kennengelernt und das ist übrigens typisch für assemlersprachen
- es gibt nur sehr wenige unterschiedliche Operationen mit dem mvebefehl können wir auf den Speicher zugreifen und auch Registerwerte kopieren die Reihenfolge
- 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
- 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
- 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
- schnell zugegriffen werden kann diese enthalten die Parameter und die Ergebnisse von arithmetischen und logischen Operationen die flagreister
- speichern einzelne Bits die Werte nennen wir meistens true und fals einige der Maschinenbefehle ändern Werte von fleckregistern während der Operation
- 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
- logischen Operation kennen ganz allgemein können CPUs zwar extrem schnell rechnen dafür sind ihre Rechenfähigkeiten aber auf wenige
- elementare Operationen beschränkt das gilt nicht nur für den übungsassempler sondern auch für reale CPUs wir können inkrementieren dekrementieren addieren
- subtrahieren manche CPUs können auch multiplizieren und dividieren das ist aber bereits purer Luxus bei der Maschinensprache neben den bitweisen
- 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
- 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
- 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
- dekrementieren mit dem Befehl mull5 wird der Wert von a verffacht sowohl der multiplikationsbefehl als auch der divisionsbefehl können nur mit dem
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- von zwei Nullen letztlich der Multiplikation mit 4 entspricht solange Links keine einbits rausfallen was hier der Fall war zur Realisierung von
- Schleifen brauchen wir bedingt oder unbedingte Sprünge und ein Befehl den sogenannten comparebefehl der comparebefehl vergleicht Werte und setzt
- 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
- 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
- = 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- durchlaufen und die Gesamtsumme steht schließlich im Register a auf der rechten Seite sehen Sie eine Alternative Implementierung Überschleifen hier wird
- 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
- 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
- einfach nur auf die Zellen 100 bis 108 hinweisen die 109 ist also der erste nicht erlaubte Wert der zum rechtzeitigen Verlassen der Schleife
- führt das ist aber letztlich eine Geschmacksfrage ganz generell würden wahrscheinlich viele programmiererinnen und Programmierer sagen dass assemler
- Programme nie elegant sind denn die üblichen Beispiele für gute Programmierstile werden mit Hochsprachen realisiert zum Schluss lernen wir noch
- kennen wie wir Unterprogramme realisieren und den steck nutzen können der Stackpointer ist ein Register welches ins RAM zeigt und die Position
- festlegt die der oberste Wert auf dem Stack einnimmt mit dem pushbefehl werden dann Werte auf dem Stack abgelegt und der Zeiger wird entsprechend
- 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
- 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
- Unterprogramme übergeben der Aufruf eines Unterprogramms wird nicht über den jumpbefeh vorgenommen sondern über den callbefehl dieser führt zwar ebenfalls
- 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
- 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
- führt werden der den Wert vom Stack zurückliest und einen Sprung an die Adresse ausführt so kann ein Hauptprogramm ein Unterprogramm
- 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
- zunächst wichtig zu verstehen dass unser übungsassembler über ein virtuelles Display verfügt das sind 24 Bytes die mit askizeichen beschrieben werden
- 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
- 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
- zum Schluss für die Zahl 4 noch einmal ausgegeben das Unterprogramm wird hier mit einer Sprungmarke angesteuert der assempler berechnet also die
- 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
- gleich brauchen und den Wert nicht einfach überschreiben möchten dann wird der aski Wert der Ziffer Null aufadidiert um eine Ausgabe der Ziffer
- 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
- inkrementiert um ein Schreiben von links nach rechts zu ermöglichen a wird wiederhergestellt und wir springen zurück die beiden programmfragmente
- 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
- ausgeben möchte und dieses Unterprogramm kann ich im neuen ausgabeunterprogramm auf der rechten Seite nutzen um nach jeder Ziffer entsprechend Komma und
- space auszugeben und dann zurück ins Hauptprogramm zu springen auf diese Weise kann das Unterprogramm Ausgabe kommpace auch von anderen Programmteilen
- verwendet werden ich muss es nur einmal implementieren das neue Unterprogramm verschachtelt also diese Aufrufe zum Abschluss noch ein paar
- Ü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
- 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
- assempler Programm macht es berechnet eine Funktion aber welche im Programm wird die ganzzahlige Division und Multiplikation verwendet einige
- 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
- ü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
- 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
- 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
- gelassen danach wird wieder mit 10 multipliziert sodass die Zahlen nun ein werter hat der sich um den Rest unterscheidet von ihrem bisherigen Wert
- mit der Bildung der Differenz erhalten wir schließlich diesen Rest und können ihn anschließend in a ablegen so wurde die Funktion
- implementiert in dieser Aufgabe sollen sie nun selbst eine semplerprogramm schreiben und zwar eine Schleife implementieren diese Schleife soll die
- 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
- 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
- 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
- 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
- geschrieben wird die Schleife bricht also ab wenn der Wert von 255 noch einmal inkrementiert wird dabei geschieht hier ein Überlauf sod dass wir
- 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
- 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
- und Maschinensprache vielleicht schauen sie sich dann auch ein anderes Video aus der Reihe Grundlagen der Informatik an bis dahin verabschiede ich mich auf
- wiederschauen [Musik]