Inhaltsverzeichnis:

Programmieren und testen Sie einen Computer in Maschinensprache - Gunook
Programmieren und testen Sie einen Computer in Maschinensprache - Gunook

Video: Programmieren und testen Sie einen Computer in Maschinensprache - Gunook

Video: Programmieren und testen Sie einen Computer in Maschinensprache - Gunook
Video: GDI - Assembler: Einstieg in die Computer- / Maschinensprache / MIPS 32 Architektur 2024, November
Anonim
Image
Image

In diesem Instructable zeige ich Ihnen, wie Sie ein Computerprogramm in Maschinensprache codieren und testen. Maschinensprache ist die Muttersprache von Computern. Da es aus Zeichenfolgen von 1 und 0 besteht, ist es für den Menschen nicht leicht zu verstehen. Um dies zu umgehen, codieren wir Programme zuerst in einer Hochsprache wie C++ oder Java und verwenden dann spezielle Computerprogramme, um sie in die Einsen und Nullen zu übersetzen, die Computer verstehen. Das Erlernen des Programmierens in einer höheren Sprache ist sicherlich ein Kinderspiel, aber eine kurze Einführung in die Maschinensprache kann wertvolle Einblicke in die Funktionsweise von Computern geben und die Wertschätzung dieser sehr wichtigen Technologie steigern.

Um ein Maschinensprachenprogramm zu codieren und zu testen, benötigen wir Zugang zu einem einfachen Computer, dessen Maschinensprache leicht zu verstehen ist. Personal Computer sind viel zu komplex, um überhaupt in Betracht gezogen zu werden. Die Lösung besteht darin, Logisim zu verwenden, einen Logiksimulator, der auf einem PC läuft. Mit Logisim können wir einen Computer simulieren, der unseren Bedürfnissen entspricht. Das obige Video gibt Ihnen eine Vorstellung davon, was wir mit Logisim erreichen können.

Für das Computerdesign habe ich eines aus meinem Kindle-E-Book Build Your Own Computer - From Scratch angepasst. Ich begann mit dem dort beschriebenen BYOC-Computer und kürzte ihn auf die verschiedenen grundlegenden BYOC-I (I für Instructable), die wir in diesem Instructable verwenden werden.

Die Maschinensprache von BYOC-I ist einfach und leicht verständlich. Sie benötigen keine speziellen Computer- oder Programmierkenntnisse. Alles, was erforderlich ist, ist ein neugieriger Geist und der Wunsch zu lernen

Weiterführende Literatur

Sie fragen sich vielleicht, warum wir "Maschine" verwenden, um einen Computer zu beschreiben, wenn es sich nicht um ein mechanisches Gerät handelt. Der Grund ist historisch; die ersten Rechengeräte waren mechanisch und bestanden aus Zahnrädern und Rädern. Allan Shermans Text "It was all gears going clickety-klack…" war nur ein oder zwei Jahrhunderte entfernt. Lesen Sie hier mehr über frühes Computing.

Schritt 1: Teileliste

Maschinensprachenhierarchie und -codes
Maschinensprachenhierarchie und -codes

Die Stückliste ist kurz. Es sind nur diese beiden Elemente erforderlich, die beide kostenlos heruntergeladen werden können:

  1. "Logisim-win-2.7.1.exe" - Logisim ist ein beliebter und einfach zu bedienender Logiksimulator. Laden Sie die ausführbare Logisim-Datei von hier herunter und erstellen Sie dann eine Verknüpfung an einem bequemen Ort wie Ihrem Desktop. Doppelklicken Sie auf das Logisim-Symbol, um es zu starten. Hinweis: Logisim verwendet hier das Java Runtime Package. Möglicherweise werden Sie aufgefordert, es herunterzuladen.
  2. BYOC-I-Full.cir" - Laden Sie die Logisim-Schaltungsdatei unten herunter.

Starten Sie Logisim, klicken Sie auf "Datei öffnen" und laden Sie die Datei BYOC-I-Full.cir. Das obige Bild zeigt die Logisim-Arbeitsumgebung. Das BYOC-I wird durch den Unterschaltungsblock repräsentiert. Extern angeschlossen sind zwei Eingänge, Reset und Run, sowie hexadezimale Anzeigen für die Register und den Programmspeicher des BYOC-I.

Der Programmspeicher des BYOC-I ist mit einem einfachen Programm vorgeladen, das im A-Register von 1 bis 5 zählt. Gehen Sie folgendermaßen vor, um das Programm auszuführen (auszuführen).

Schritt 1 - Klicken Sie auf das Poke-Tool. Der Cursor sollte sich in den stechenden "Finger" verwandeln. Schritt 2 - Drücken Sie den Reset-Eingang zweimal, ändern Sie ihn einmal auf "1" und erneut, um ihn wieder auf "0" zu ändern. Dadurch wird das BYOC-I zurückgesetzt, um das Programm bei Adresse 0 zu starten. Schritt 3 - Drücken Sie den Run-Eingang einmal, um ihn auf "1" zu ändern. Das A-Register sollte anzeigen, dass sich der Zähler von 1 auf 5 ändert und sich dann wiederholt. Schritt 4 - Wenn das Programm nicht ausgeführt wird, drücken Sie Strg-K und es sollte starten.

Wenn Sie die Möglichkeiten von Logisim kennenlernen möchten, klicken Sie auf den Link Hilfe in der Menüleiste. Von dort aus können Sie das „Tutorial“, das „Benutzerhandbuch“und die „Bibliotheksreferenz“von Logisim erkunden. Eine ausgezeichnete Video-Einführung finden Sie hier.

Schritt 2: Maschinensprachenhierarchie und -codes

Maschinensprachenhierarchie und -codes
Maschinensprachenhierarchie und -codes

Der BYOC-I-Computer führt Aufgaben basierend auf in Maschinensprache geschriebenen Programmen aus. BYOC-I-Programme wiederum bestehen aus Befehlen, die in einer wohldefinierten Reihenfolge ausgeführt werden. Jeder Befehl besteht aus Codes fester Länge, die verschiedene Betriebskomponenten des BYOC-I darstellen. Schließlich bestehen diese Codes aus Zeichenfolgen von Einsen und Nullen, die die Maschinensprache bilden, die das BYOC-I tatsächlich ausführt.

Zur Erklärung beginnen wir mit Codes und arbeiten uns bis zur Programmebene vor. Dann codieren wir ein einfaches Programm, laden es in den Speicher des BYOC-I und führen es aus.

Codes bestehen aus einer festen Anzahl binärer (1 und 0) Ziffern oder kurz Bits. Die folgende Tabelle zeigt beispielsweise alle möglichen Codes (insgesamt 16) für einen Code mit 4 Bit Breite. Der nebenstehende Code ist das hexadezimale (Basis 16) und dezimale Äquivalent. Hexadezimal wird in Bezug auf binäre Werte verwendet, da es kompakter als binär und einfacher von binär als dezimal zu konvertieren ist. Das Präfix "0x" weist darauf hin, dass die folgende Zahl hexadezimal oder kurz "hex" ist.

Binär - Hexadezimal - Dezimal0000 0x0000 00001 0x0001 10010 0x0002 20011 0x0003 30100 0x0004 40101 0x0005 50111 0x0007 71000 0x0008 81001 0x0009 91010 0x000A 101011 0x000B 111100 0x000C 121101 0x000D 131110 0x000E 15.111 0x000E 141111

Die Breite eines Codes bestimmt, wie viele Elemente dargestellt werden können. Wie bereits erwähnt, kann der obige 4-Bit-breite Code bis zu 16 Elemente (0 bis 15) darstellen; das heißt, 2 mal 2, viermal genommen, oder 2 zur 4. Potenz gleich 16. Im Allgemeinen ist die Anzahl der darstellbaren Elemente 2 hoch n. Hier ist eine kurze Liste von n-Bit-Codekapazitäten.

n - Stückzahl1 22 43 84 165 326 647 1288 256

Die Breiten des BYOC-I-Computercodes werden so gewählt, dass sie die Anzahl der Elemente aufnehmen, die durch den Code dargestellt werden sollen. Es gibt beispielsweise vier Befehlstypen, sodass ein 2 Bit breiter Code geeignet ist. Hier sind die BYOC-I-Codes mit einer kurzen Erklärung zu jedem.

Befehlstypcode (tt) Es gibt vier Befehlstypen: (1) MVI – Verschieben eines unmittelbaren 8-Bit-Konstantenwerts in ein Speicherregister. Das Speicherregister ist ein Gerät, das Daten enthält, die für eine Berechnung verwendet werden sollen, (2) MOV – Daten von einem Register in ein anderes verschieben, (3) RRC – eine Register-zu-Register-Berechnung durchführen und (4) JMP – Jump zu einer anderen Anweisung, anstatt mit der nächsten Anweisung fortzufahren. Die angenommenen BYOC-I Instruction Type Codes lauten wie folgt:

00 MVI01 MOV10 RRC11 JMP

Registercode (dd und ss) Das BYOC-I verfügt über vier 8-Bit-Register, die Werte von 0 bis 255 speichern können. Ein 2-Bit-Code reicht aus, um die vier Register zu bezeichnen:

00 F-Register01 E-Register10 D-Register11 A-Register

Berechnungscode (ccc) Das BYOC-I unterstützt vier arithmetische/logische Operationen. Um eine zukünftige Erweiterung auf acht Berechnungen zu ermöglichen, wird ein 3-Bit-Code verwendet:

000 ADD, addieren zwei 8-Bit-Werte in bestimmten Registern und speichern das Ergebnis in einem der Register 001 SUB, subtrahieren zwei 8-Bit-Werte in bestimmten Registern und speichern das Ergebnis in einem der Register 010 - 011 Reserviert für zukünftige Verwendung100 UND, logisch UND zwei 8-Bit-Werte in bestimmten Registern und speichern das Ergebnis in einem der Register101 ODER, logisch ODER zwei 8-Bit-Werte in bestimmten Registern und speichern das Ergebnis in einem der Register 110 bis 111, Reserviert für zukünftige Verwendung

Sprungcode (j) Ein 1-Bit-Code, der anzeigt, ob der Sprung unbedingt ist (j = 1) oder von einem Berechnungsergebnis ungleich Null abhängig ist (j = 0).

Daten/Adresscode (v…v)/(a…a) 8-Bit-Daten können in bestimmten Befehlen enthalten sein, die Werte von 00000000 bis 11111111 oder 0 bis 255 dezimal darstellen. Diese Daten sind 8 Bit breit zur Speicherung in den 8-Bit-Registern von BYOC-I. Bei der Dezimalarithmetik zeigen wir keine führenden Nullen an. Bei der Computerarithmetik zeigen wir führende Nullen, aber sie haben keinen Einfluss auf den Wert. 00000101 ist numerisch gleich eine 101 oder 5 Dezimalzahl.

Empfohlene Referenzen

Binäre Notation - https://learn.sparkfun.com/tutorials/binaryHexadezimale Notation -

Weiterführende Literatur

Die Idee, Codes zu verwenden, um einen Prozess zu steuern, reicht weit zurück. Ein faszinierendes Beispiel ist der Jacquard-Webstuhl. Der automatisierte Webstuhl wurde durch eine Kette von Holzkarten gesteuert, in die Löcher gebohrt wurden, die Codes für verschiedenfarbige Garne zum Weben darstellten. Ich habe meinen ersten in Schottland gesehen, wo er zur Herstellung von bunten Tartans verwendet wurde. Lesen Sie hier mehr über Jacquard-Webstühle.

Schritt 3: Anatomie der BYOC-I-Anweisungen

Anatomie der BYOC-I-Anleitung
Anatomie der BYOC-I-Anleitung

Angesichts der BYOC-I-Codes gehen wir zur nächsten Ebene, den Anweisungen. Um eine Anweisung für das BYOC-I zu erstellen, platzieren wir die Codes in einer bestimmten Reihenfolge und an bestimmten Stellen innerhalb der Anweisung. Nicht alle Codes erscheinen in allen Anweisungen, aber wenn sie es tun, belegen sie einen bestimmten Ort.

Der MVI-Befehlstyp erfordert die meisten Bits, insgesamt 12. Indem wir das Befehlswort 12 Bit lang machen, passen wir alle Befehle an. Unbenutzte (so genannte "don't care") Bits erhalten den Wert 0. Hier ist der BYOC-I Instruction Set.

  1. Move Immediate (MVI) - 00 dd vvvvvvvvFunktion: Verschiebe einen 8-Bit-Datenwert V = vvvvvvvv in das Zielregister dd. Nach der Ausführung hat das Register dd den Wert vvvvvvvv. Abkürzung: MVI R, V wobei R für A, D, E oder F steht. Beispiel: 00 10 00000101 - MVI D, 5 - Verschieben Sie den Wert 5 in das D-Register.
  2. Move Register to Register (MOV) - 01 dd ss 000000Funktion: Verschieben Sie Daten vom Quellregister ss in das Zielregister dd. Nach der Ausführung haben beide Register denselben Wert wie das Quellregister. Abkürzung: MOV Rd, Rs wobei Rd das Zielregister A, D, E oder F und Rs das Quellregister A, D, E oder F ist. Beispiel: 01 11 01 000000 - MOV A, E - Wert verschieben in Register E in Register A.
  3. Register-zu-Register-Berechnung (RRC) - 10 dd ss ccc 000Funktion: Führen Sie die angegebene Berechnung ccc mit dem Quellregister ss und dem Zielregister dd durch und speichern Sie dann das Ergebnis im Zielregister. Abkürzungen: ADD Rd, Rs (ccc=000 Rd + Rs gespeichert in Rd); SUB Rd, Rs (ccc = 001 Rd – Rs gespeichert in Rd); UND Rd, Rs (ccc = 100 Rd UND Rs gespeichert in Rd); ODER Rd, Rs (ccc=101 Rd ODER Rs gespeichert in Rd). Beispiel: 10 00 11 001 000 - SUB F, A - Subtrahiere den Wert im A-Register vom F-Register mit dem Ergebnis im F-Register.
  4. Zu anderem Befehl springen (JMP) - 11 j 0 aaaaaaaaFunktion: Ausführung zu einem anderen Befehl ändern, der sich an der Adresse aaaa aaaa(a) befindet 0 00001000 - JMP 8 - Ausführung auf Adresse ändern 8.(b) Bedingt (j=0), wenn die vorherige Berechnung ein Ergebnis ungleich Null ergab - 11 0 0 aaaaaaaaAbkürzung: JNZ L wobei L die Adresse aaaa aaaa ist. Beispiel: 11 0 0 00000100 JNZ 4 Wenn die letzte Berechnung einen Wert ungleich Null ergab, ändern Sie die Ausführung auf Adresse 4.

Befehlswortbits sind von links (höchstwertiges Bit MSB) nach rechts (niedrigstwertiges Bit LSB) von 11 bis 0 nummeriert. Die feste Reihenfolge und die Positionen der Codes sind wie folgt:

Bits - Code11-10 Befehlstyp9-8 Zielregister7-6 Quellregister5-3 Berechnung: 000 - addieren; 001 - subtrahieren; 100 - logisches UND; 101 - logisch OR7-0 Konstanter Wert v…v und a…a (0 bis 255)

Der Befehlssatz ist in der obigen Abbildung zusammengefasst. Beachten Sie das strukturierte und geordnete Erscheinungsbild der Codes in jeder Anweisung. Das Ergebnis ist ein einfacheres Design für das BYOC-I und es macht Anweisungen für den Menschen leichter verständlich.

Schritt 4: Codieren einer Computeranweisung

Codieren einer Computeranweisung
Codieren einer Computeranweisung

Bevor wir zur Programmebene übergehen, konstruieren wir einige Beispielbefehle unter Verwendung des obigen BYOC-I-Befehlssatzes.

1. Verschieben Sie den Wert 1 in Register A. BYOC-I-Register können Werte von 0 bis 255 speichern. In diesem Fall hat Register A nach der Ausführung des Befehls den Wert 1 (00000001 binär).

Abkürzung: MVI A, 1 Erforderliche Codes: Typ MVI - 00; Zielregister A - 11; Wert - 00000001Anweisungswort: 00 11 00000001

2. Verschieben Sie den Inhalt von Register A in Register D. Nach der Ausführung haben beide Register den ursprünglichen Wert in Register A.

Abkürzung: MOV D, A (Denken Sie daran, dass das Ziel an erster Stelle und die Quelle an zweiter Stelle in der Liste steht) Erforderliche Codes: Typ MOV - 01; Zielregister D - 10; Quellregister A - 11Anweisungswort: 01 10 11 000000

3. Addieren Sie den Inhalt von Register D zu Register A und speichern Sie ihn in Register A. Nach der Ausführung ist der Wert von Register A die Summe des ursprünglichen Wertes von Register A und Register D.

Abkürzung: ADD A, D (Ergebnis wird im Zielregister gespeichert) Erforderliche Codes: Typ RRC - 10; Zielregister A - 11; Quellenregister D - 10; Berechnung Addieren - 000Anweisungswort: 10 11 10 000 000 (ccc ist die erste 000 - add)

4. Springen Sie auf ungleich Null zu Adresse 3. Wenn das Ergebnis der letzten Berechnung ungleich Null war, wechselt die Ausführung zum Befehl an der angegebenen Adresse. Bei Null wird die Ausführung bei der folgenden Anweisung fortgesetzt.

Abkürzung: JNZ 3 Erforderliche Codes: Typ JMP - 11; Sprungtyp - 0; Adresse - 00000003Anweisungswort: 11 0 0 00000003 (Sprungtyp ist die erste 0)

5. Unbedingt auf Adresse 0 springen. Nach der Ausführung wechselt die Ausführung zum Befehl an der angegebenen Adresse.

Abkürzung: JMP 0 Erforderlicher Code: Typ JMP - 11; Sprungtyp - 1; Adresse - 00000000Befehlswort; 11 1 0 00000000

Während maschinelles Codieren etwas mühsam ist, können Sie sehen, dass es nicht unmöglich schwierig ist. Wenn Sie wirklich maschinenkodieren würden, würden Sie ein Computerprogramm namens Assembler verwenden, um die Abkürzung (die als Assemblercode bezeichnet wird) in Maschinencode zu übersetzen.

Schritt 5: Anatomie eines Computerprogramms

Anatomie eines Computerprogramms
Anatomie eines Computerprogramms

Ein Computerprogramm ist eine Liste von Anweisungen, die der Computer beginnend am Anfang der Liste ausführt und die Liste bis zum Ende abwärts fortsetzt. Befehle wie JNZ und JMP können ändern, welcher Befehl als nächstes ausgeführt wird. Jeder Befehl in der Liste belegt eine einzelne Adresse im Speicher des Computers, beginnend bei 0. Der BYOC-I-Speicher kann eine Liste von 256 Befehlen aufnehmen, mehr als genug für unsere Zwecke.

Computerprogramme sind so konzipiert, dass sie eine bestimmte Aufgabe ausführen. Für unser Programm wählen wir eine einfache Aufgabe aus, die von 1 bis 5 zählt. Offensichtlich gibt es keine "Zähl"-Anweisung, daher besteht der erste Schritt darin, die Aufgabe in Schritte zu unterteilen, die von den BYOC-Is sehr bearbeitet werden können begrenzter Befehlssatz.

Schritt 1 Verschiebe 1 in Register ASchritt 2 Verschiebe Register A in Register DSchritt 3 Addiere Register D zu Register A und speichere das Ergebnis in Register ASchritt 4 Verschiebe 5 in Register ESchritt 5 Subtrahiere Register A von Register E und speichere das Ergebnis in Register ESchritt 6 Wenn das Subtraktionsergebnis nicht Null war, gehen Sie zurück zu Schritt 4 und zählen Sie weiter Schritt 7 Wenn das Subtraktionsergebnis Null war, gehen Sie zurück und beginnen Sie von vorne

Der nächste Schritt besteht darin, diese Schritte in BYOC-I-Anweisungen zu übersetzen. BYOC-I-Programme beginnen bei Adresse 0 und nummerieren fortlaufend. Sprungzieladressen werden zuletzt hinzugefügt, nachdem alle Anweisungen vorhanden sind.

Adresse:Anweisung - Abkürzung;Beschreibung0:00 11 00000001 - MVI A, 1;Bewege 1 in Register A1:01 10 11 000000 - MOV D, A;Bewege Register A in Register D2:10 11 10 000 000 - ADD A, D;Addiere Register D zu Register A und speichere das Ergebnis in Register A3:00 01 00 00000101 - MVI E, 5;Verschiebe 5 Register E4:10 01 11 001 000 - SUB E, A;Subtrahiere Register A von Register E und speichere die Ergebnis in Register E5:11 0 0 00000010 - JNZ 2;Wenn das Subtraktionsergebnis nicht Null war, gehe zurück zu Adresse 3 und zähle weiter6:11 1 0 00000000 - JMP 0;Wenn das Subtraktionsergebnis Null war, gehe zurück und beginne von vorne

Bevor das Programm in den Speicher übertragen wird, muss der binäre Befehlscode zur Verwendung mit dem Logisim Hex Editor in hexadezimal geändert werden. Teilen Sie zunächst den Befehl in drei Gruppen zu je 4 Bits auf. Übersetzen Sie dann die Gruppen mithilfe der Tabelle in Schritt 2 in hexadezimal. Es werden nur die letzten drei hexadezimalen Ziffern (unten fett gedruckt) verwendet.

Adresse - Befehl Binär - Befehl Binär Split - Befehl (Hex)0 001100000001 0011 0000 0001 - 0x03011 011011000000 0110 1100 0000 - 0x06C02 101110000000 1011 1000 0000 - 0x0B803 000100000101 0001 0000 0101 - 0x01054 100111001000 1001 1100 1000 - 0x100000 111000000010 1110 0000 0000 - 0x0E00

Es ist an der Zeit, das Programm zum Testen in den Speicher des BYOC-I zu übertragen.

Schritt 6: Übertragen des Programms in den Speicher und Testen

Übertragen des Programms in den Speicher und Testen
Übertragen des Programms in den Speicher und Testen
Übertragen des Programms in den Speicher und Testen
Übertragen des Programms in den Speicher und Testen

Betrachtet man die Logisim-"Hauptschaltung", so ist der gezeigte BYOC-I-Block das Symbol für die eigentliche Computerschaltung mit der Bezeichnung "BYOC-I" im Explorer-Fenster. So geben Sie ein Programm in den BYOC-I-Speicher ein:

  1. Klicken Sie mit der rechten Maustaste auf den BYOC-I-Block (genannt "Teilschaltung") und wählen Sie (mit der Maus darüber fahren und mit der linken Maustaste klicken) "BYOC-I anzeigen".
  2. Die BYOC-I-Schaltung wird im Arbeitsbereich angezeigt. Klicken Sie mit der rechten Maustaste auf das Symbol "Programmspeicher" und wählen Sie "Inhalt bearbeiten…".
  3. Geben Sie im Logisim Hex Editor den Hexadezimalcode (nur fett) wie oben gezeigt ein.

Sie sind nun bereit, das Programm auszuführen. Kehren Sie zum Hauptstromkreis zurück, indem Sie im Explorer-Fenster auf "BYOC-I" doppelklicken. Die Eingänge Run und Reset sollten zum Starten "0" sein. Ändern Sie mit dem Poke-Tool zuerst Reset auf "1" und dann wieder auf "0". Dies macht die Startadresse 0x0000 und bereitet die BYOC-I-Schaltung für die Ausführung vor. Setzen Sie nun den Run-Eingang auf "1" und das Programm wird ausgeführt. (Hinweis: Sie müssen in erster Linie einmal Strg-K antippen, um die Logisim-Uhr zu starten. Dies ist eine Funktion, mit der Sie die Logisim-Uhr stoppen und ein Programm durchlaufen können, indem Sie wiederholt Strg-T drücken. Versuchen Sie es einmal!)

Die Logisim-Uhr ist für einen breiten Frequenzbereich einstellbar. Im heruntergeladenen Zustand beträgt sie 8 Hz (8 Zyklen pro Sekunde). Der BYOC-I-Computer ist so konzipiert, dass jeder Befehl vier Taktzyklen benötigt, um abgeschlossen zu werden. Um die BYOC-I-Geschwindigkeit zu berechnen, teilen Sie die Taktfrequenz durch 4. Bei 8 Hz beträgt die Geschwindigkeit 2 Befehle pro Sekunde. Sie können die Uhr ändern, indem Sie in der Symbolleiste auf "Simulieren" klicken und "Tick-Frequenz" auswählen. Der mögliche Bereich ist 0,25 Hz bis 4100 Hz. Die langsame Geschwindigkeit bei 8 Hz wurde gewählt, damit Sie die Zählung im A-Register beobachten können.

Die maximale Geschwindigkeit der BYOC-I-Simulation (~1000 Anweisungen pro Sekunde) ist im Vergleich zu modernen Computern sehr langsam. Die in meinem Buch beschriebene Hardwareversion des BYOC-Computers führt mit mehr als 12 Millionen Anweisungen pro Sekunde aus!

Ich hoffe, dieses Instructable hat die Maschinensprachenprogrammierung entmystifiziert und Ihnen einen Einblick in die Funktionsweise von Computern auf ihrer grundlegendsten Ebene gegeben. Um Ihr Verständnis zu festigen, versuchen Sie, die beiden folgenden Programme zu codieren.

  1. Schreiben Sie ein Programm, das bei 5 beginnt und bis 0 herunterzählt. (ANS. Count5to0.txt unten)
  2. Beginnen Sie mit 2, zählen Sie bis 3, bis die Zahl 7 überschreitet. Sie könnten ein wenig Kopfrechnen, überprüfen Sie, ob 8 dort landen würde, und starten Sie dann neu. Schreiben Sie Ihr Programm auf eine allgemeinere Weise, die wirklich testet, ob die Anzahl eine bestimmte Zahl "überschreitet". Hinweis: Untersuchen Sie, was passiert, wenn ein Subtrahieren einen negativen Wert ergibt, zum Beispiel 8 - 9= -1. Experimentieren Sie dann mit dem logischen UND, um zu testen, ob das MSB in einer 8-Bit-Zahl "1" ist. (ANS. ExceedsCount.txt)

Können Sie sich andere herausfordernde Probleme für den BYOC-I-Computer vorstellen? Was kann es angesichts seiner Einschränkungen noch tun? Teilen Sie mir Ihre Erfahrungen unter [email protected] mit. Wenn Sie an der Codierung von Mikroprozessoren interessiert sind, besuchen Sie meine Website www.whippleway.com. Dort trage ich Maschinencodierung zu modernen Prozessoren wie der ATMEL Mega-Serie, die in Arduinos verwendet wird.

Empfohlen: