binair is iets dat niet nodig is om te weten wanneer je modern programmeren op hoog niveau doet. De 6502 kan veel bewerkingen uitvoeren (optellen, aftrekken, dingen in het geheugen verplaatsen) waarvoor je niet hoeft te begrijpen hoe binair werkt. Er zijn echter operaties die we zouden willen doen, zoals vermenigvuldigen en delen, die niet dingen zijn die de 6502 native kan doen. We moeten deze functies zelf creëren. Dit vereist enig begrip van de fijne kneepjes van binaire berekening., Niet in het minst omdat intern, de 6502 zal vertegenwoordigen alles in de vorm van binair. We zagen dit toen we bespraken hoe de processor zal proberen om alles te “vertalen” naar binaire patronen. Op een zeer minimum, vertrouwd zijn met het lezen van binaire getallen en met termen zoals bit, byte, en knabbel zal nuttig zijn om te begrijpen over het algemeen hoe de 6502 werkt. Gelukkig voor ons, binary is intuïtief en leuk.

Op dit moment is de enige praktische manier om gegevens in elektronica op te slaan in een vorm van tweestatenlogica. Iets kan “On” of “Off”, “True” of “False”zijn., In een computer een enkelvoudig binair cijfer, wordt de meest elementaire manier om informatie op te slaan een beetje genoemd. Een bit kan een 1 of een 0zijn. Gegevens in een computer worden opgeslagen in groepen van bits. In veel gevallen, zoals de 6502, is de voorkeur in een groep van acht (iets als 0001 0101). Dit wordt een byte genoemd. We kunnen ook een kleinere groep van vier bits genaamd een nibble (lol).

om numerieke gegevens adequaat weer te geven, moeten enkele gevallen worden bekeken. Ten eerste zullen we beginnen met unsigned binary., De acht bits (b) van een byte worden weergegeven als:

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

we tellen de bits van rechts naar links, indexeren van 0. Elk bit kan worden gezien als zijnde gerelateerd aan een binair getal. Het meest rechtse bit staat voor 2⁰, de volgende links is 21, dan 22, enzovoort. Het zal daarom nuttig zijn om de bevoegdheden van 2 te onthouden, die zijn:

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

om van binair naar iets te vertalen dat we herkennen moeten we alle toepasselijke bevoegdheden van 2 optellen., Als een bit is ingesteld op 1 zullen we de corresponderende macht in onze Som opnemen, zo niet zullen we het verwerpen. Dit lijkt misschien al ingewikkeld, maar het bekijken van een voorbeeld zal hopelijk helpen om het op te helderen. Als we het binaire getal 0010 0011 nemen, kunnen we zien dat de enige bits die zijn ingesteld 0, 1 en 5 zijn. We kunnen ze dan als volgt “optellen”:

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

U kunt ook proberen de andere kant op te gaan, van decimaal naar binair. We doen dit door het aantal te delen door twee meerdere keren en het volgen van de rest., De rest bit (die altijd een 1 of een 0 zal zijn) zal de bits in een byte toewijzen. Als je bijvoorbeeld 35 deelt door 2 krijg je 17 rest 1. Daarom zal bit 0 een 1 zijn. Nogmaals, deze berekening is minder vreemd dan het klinkt als je het ziet uitgevoerd. Laten we 35 (of 0010 0011) opnieuw proberen:

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

Deze methode geeft ons het resultaat0010 0011, dat is precies waarmee we begonnen!

optelling

nu we comfortabel zijn met het lezen en schrijven van binaire getallen, willen we proberen er wat wiskunde mee te doen., Toevoeging werkt “normaal”. Als je twee normale getallen toevoegt (laten we 9 en 2 Proberen)” draag ” je alles dat boven de tien gaat naar het volgende cijfer. Dus, 9 + 2 geeft je 11. In binair voer je een soortgelijk proces uit. Enkele bits volgen deze regels:

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

de (1) vertegenwoordigt een carry. Het is hetzelfde als wij zeggen 9 + 2 = (1) 1. Met behulp van wat we hebben geleerd voordat we kunnen zien dat 10 in binair is het equivalent van 2 in decimaal, precies wat we zouden verwachten van 1 + 1!,

als we 3 (0011) + 1 (0001) proberen te doen, kunnen we een ander voorbeeld zien van hoe het uitvoeren in binaire werken:

 0011
+ 0̲0̲0̲1̲
0100

We kunnen hier zien dat er iets van het 1e bit naar het 2e is uitgevoerd. Wat als we een groter getal toevoegen? Laten we 128 en 129 proberen:

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

We zijn nu ons eerste probleem tegengekomen. We weten dat het antwoord 257 zou moeten zijn, echter, kijkend naar wat er in de eerste 8 bits zit lijkt het erop dat het antwoord 1 is. Alleen met de extra carry bit wordt het ware antwoord duidelijk., Als we onze binaire getallen in 8-bits gaan opslaan, hebben we een manier nodig om dit type carry op te slaan en te volgen. De 6502 kan precies dat, phew! De 6502 heeft een set vlaggen ingebouwd, waarvan er één de Carry Flag wordt genoemd. Dit kan worden ingesteld als 1 of 0. Wanneer er een optelling gebeurt voor binaire getallen die resulteren in het antwoord groter is dan 256, wordt de Draagvlag ingesteld op 1. Dit stelt ons in staat om onze wiskunde bij te houden en geeft ons een manier om onze rekenkundige verleden 8-bit getallen uit te breiden.,

laten we een minuut nemen om na te denken over wat we zojuist hebben gezegd, omdat ik denk dat het een diepgaande implicatie heeft. Het is niet software die het bijhouden van de dragen in onze wiskunde zal houden, het is hardware. De vlag is een register in de 6502, een “werkelijke plaats”. Als ik een grote microscoop had, kon ik inzoomen en zeggen: “Hé, dat is de plek waar de carry bit is opgeslagen!”. Dit is wat ik denk is echt spannend over het leren 6502 assembly – je bent in een ruimte waar er een enorme overlap is tussen de hardware die je hebt en de code die je kunt schrijven., Dit kan echt vorm geven aan de manier waarop je denkt over coderen in dit systeem. Als ik Python op mijn Mac schrijf, heb ik weinig gevoel over hoe het ermee verbonden is — Ik schrijf mijn script, er gebeurt wat magie, dan krijg ik wat nummers terug. Als je het over assemblage hebt, kun je het idee niet uit de weg gaan dat wat je doet een sterke connectie heeft met je machine, Ik vind het veel minder abstract.

dus we kunnen ook onze positieve gehele getallen correct weergeven en als we een carry bit toevoegen, kunnen onze binaire getallen correct toevoegen. Er zijn echter twee problemen:

  • We kunnen alleen tot 255 tellen (als we slechts 8 bits gebruiken).,
  • We kunnen alleen positieve getallen vertegenwoordigen.

We moeten dit laatste probleem kunnen oplossen. Om dit te doen zullen we ondertekende Binary introduceren.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *