Binär ist etwas, das man bei moderner High-Level-Programmierung nicht wissen muss. Der 6502 kann viele Operationen ausführen (addieren, Subtrahieren, Verschieben von Dingen im Speicher), für die Sie nicht verstehen müssen, wie binär funktioniert. Es gibt jedoch Operationen, die wir möglicherweise ausführen möchten, z. B. Multiplikation und Division, die der 6502 nicht nativ ausführen kann. Wir müssen diese Funktionen selbst erstellen. Dies erfordert ein gewisses Verständnis der Feinheiten der binären Berechnung., Nicht zuletzt, weil der 6502 intern alles in Form von Binär darstellt. Wir haben dies gesehen, als wir besprochen haben, wie der Prozessor versuchen wird, alles in binäre Muster zu „übersetzen“. Zumindest ist es nützlich, mit dem Lesen von Binärzahlen und Begriffen wie Bit, Byte und Knabbern vertraut zu sein, um allgemein zu verstehen, wie der 6502 funktioniert. Zum Glück aber für uns, binär ist intuitiv und macht Spaß.

Im Moment ist die einzige praktische Möglichkeit, Daten in der Elektronik zu speichern, die Form einer Zwei-Zustands-Logik. Etwas kann entweder „Ein“ oder „Aus“, „Wahr“ oder „Falsch“sein., In einem Computer, einer singulären Binärziffer, wird die grundlegendste Art, Informationen zu speichern, als Bit bezeichnet. Ein Bit kann entweder eine 1 oder eine 0sein. Daten in einem Computer werden in Bitgruppen gespeichert. In vielen Fällen, wie dem 6502, ist der bevorzugte Weg in einer Gruppe von acht (so etwas wie 0001 0101). Dies wird als Byte bezeichnet. Wir können auch eine kleinere Gruppierung von vier Bits haben, die als Knabbern bezeichnet wird (lol).

Um numerische Daten angemessen darzustellen, müssen einige Fälle betrachtet werden. Zunächst werden wir mit unsigned binary beginnen., Die acht Bits (b) eines Bytes werden dargestellt als:

b₇b₆b₅b₄b₃b₂b₁b₀

Wir zählen die Bits von rechts nach links und indizieren von 0. Jedes Bit kann als mit einer Binärzahl verwandt angesehen werden. Das Bit ganz rechts repräsentiert 2⁰, das nächste nach links ist 21, dann 22 und so weiter. Es wird daher nützlich sein, sich an die Potenzen von 2 zu erinnern, die sind:

2⁷ = 128
2⁶ = 64
2⁵ = 32
2⁴ = 16
2³ = 8
2² = 4
2¹ = 2
2⁰ = 1

Um von binär in etwas zu übersetzen, das wir erkennen, müssen wir alle geeigneten Potenzen von 2 summieren., Wenn ein Bit auf 1 gesetzt ist, werden wir die entsprechende Potenz in unsere Summe aufnehmen, wenn nicht, werden wir es verwerfen. Dies mag bereits kompliziert erscheinen, aber ein Blick auf ein Beispiel wird hoffentlich helfen, es aufzuklären. Wenn wir die Binärzahl 0010 0011 können wir sehen, dass die einzigen gesetzten Bits 0, 1 und 5 sind. Wir können sie dann als solche „summieren“:

 b₅ + b₁ + b₀
= 2⁵ + 2¹ + 2⁰
= 32 + 2 + 1
= 35

Sie können auch versuchen, den anderen Weg von dezimal zu binär zu gehen. Wir tun dies, indem wir die Zahl mehrmals durch zwei teilen und den Rest verfolgen., Das Restbit (das immer eine 1 oder eine 0 ist) wird den Bits in einem Byte zugeordnet. Wenn Sie beispielsweise 35 durch 2 teilen, erhalten Sie 17 durch 1. Daher ist Bit 0 eine 1. Auch diese Berechnung ist weniger seltsam, als es klingt, wenn Sie es durchgeführt sehen. Versuchen wir es erneut mit 35 (oder 0010 0011):

35 ÷ 2 = 17r1→ 1
17 ÷ 2 = 8r1 → 1
8 ÷ 2 = 4r0 → 0
4 ÷ 2 = 2r0 → 0
2 ÷ 2 = 1r0 → 0
1 ÷ 2 = 0r1 → 1
0 ÷ 2 = 0r0 → 0
0 ÷ 2 = 0r0 → 0

Diese Methode gibt uns das Ergebnis0010 0011, mit dem wir begonnen haben!

Addition

Nachdem wir nun Binärzahlen lesen und schreiben können, werden wir versuchen, mit ihnen zu rechnen., Außerdem arbeitet „normal“. Wenn Sie zwei normale Zahlen hinzufügen (versuchen wir es mit 9 und 2), „tragen“ Sie alles, was über zehn liegt, zur nächsten Ziffer. Also, 9 + 2 wird dir 11 geben. In Binary führen Sie einen ähnlichen Vorgang aus. Einzelne Bits folgen diesen Regeln:

0 + 0 = 0
1 + 0 = 1
0 + 1 = 1
1 + 1 =(1)0

Die (1) stellt einen Carry dar. Es ist das gleiche wie wir sagen 9 + 2 = (1)1. Mit dem, was wir gelernt haben, bevor wir sehen können, dass 10 binär das Äquivalent von 2 in dezimal ist, genau das, was wir von 1 + 1 erwarten würden!,

Wenn wir versuchen, 3 (0011) + 1 (0001) zu machen, können wir ein weiteres Beispiel dafür sehen, wie das Tragen von Binärdateien funktioniert:

 0011
+ 0̲0̲0̲1̲
0100

Wir können hier sehen, dass etwas vom 1.Bit zum 2. getragen wurde. Was ist, wenn wir eine größere Zahl hinzufügen? Versuchen wir 128 und 129:

 10000001
+̲1̲0̲0̲0̲0̲0̲0̲0̲
(1)00000001

Wir sind jetzt auf unser erstes Problem gestoßen. Wir wissen, dass die Antwort 257 sein sollte, aber wenn man sich ansieht, was in den ersten 8 Bits ist, sieht es so aus, als ob die Antwort 1 ist. Nur mit dem zusätzlichen Carry-Bit wird die wahre Antwort offensichtlich., Wenn wir unsere Binärzahlen in 8 Bit speichern, benötigen wir eine Möglichkeit, diese Art von Carry zu speichern und zu verfolgen. Der 6502 kann genau das, Puh! Der 6502 verfügt über eine Reihe von Flags, von denen einer als Carry Flag bezeichnet wird. Dies kann als 1 oder 0 eingestellt werden. Immer wenn eine Addition für Binärzahlen erfolgt, die dazu führen, dass die Antwort größer als 256 ist, wird das Carry-Flag auf 1 gesetzt. Dies ermöglicht es uns, den Überblick über unsere Mathematik zu halten und gibt uns eine Möglichkeit, unsere Arithmetik Vergangenheit 8-Bit-Zahlen zu erweitern.,

Nehmen wir uns jedoch eine Minute Zeit, um darüber nachzudenken, was wir gerade gesagt haben, weil ich denke, dass dies tiefgreifende Auswirkungen hat. Es ist keine Software, die den Überblick über das Tragen in unserer Mathematik behalten wird, es ist Hardware. Das Carry-Flag ist ein Register innerhalb des 6502, ein „tatsächlicher Ort“. Wenn ich ein großes Mikroskop hätte, könnte ich hineinzoomen und sagen: „Hey, das ist der Ort, an dem das Tragebit aufbewahrt wird!”. Das ist, was ich denke, ist wirklich spannend über das Lernen 6502 Montage-Sie sind in einem Raum, wo es eine große Überlappung zwischen der Hardware, die Sie haben und den Code, den Sie schreiben können., Dies kann die Art und Weise, wie Sie über das Codieren in diesem System nachdenken, wirklich prägen. Wenn ich Python auf meinem Mac schreibe, habe ich sehr wenig Ahnung, wie es sich damit verbindet — ich schreibe mein Skript, etwas Magie passiert, dann bekomme ich ein paar Zahlen zurück. Wenn Sie über die Montage sprechen, können Sie die Vorstellung nicht vermeiden, dass das, was Sie tun, eine starke Verbindung zu Ihrer Maschine hat, ich finde es viel weniger abstrakt.

So können wir auch unsere positiven Ganzzahlen korrekt darstellen und wenn wir ein Carry-Bit einschließen, können unsere Binärzahlen korrekt addieren. Es gibt jedoch zwei Probleme:

  • Wir können nur bis 255 zählen (wenn wir nur 8 Bits verwenden).,
  • Wir können nur positive Zahlen darstellen.

Wir müssen das letztere Problem lösen können. Um dies zu tun, werden wir Signierte Binärdatei einführen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.