binær er noget, der ikke er nødvendigt at vide, når man laver moderne programmering på højt niveau. 6502 kan udføre mange operationer (tilføje, trække fra, flytte ting i hukommelsen), som du ikke behøver at forstå, hvordan binær fungerer. Der er dog operationer, vi måske gerne vil gøre, såsom multiplikation og opdeling, som ikke er ting, som 6502 kan gøre naturligt. Vi er nødt til at skabe disse funktioner selv. Dette vil kræve en vis forståelse af de komplicerede binære beregninger., Ikke mindst fordi internt vil 6502 repræsentere alt i form af binær. Vi så dette, da vi diskuterede, hvordan processoren vil forsøge at “oversætte” alt ned til binære mønstre. I det mindste vil det være nyttigt at forstå generelt, hvordan 6502 fungerer, at være bekendt med at læse binære tal og med udtryk som bit, byte og nibble. Heldigvis selv for os, binary er intuitiv og sjov.

fra lige nu er den eneste praktiske måde at gemme data i elektronik i en form for tostatslogik. Noget kan enten være “On” eller “Off”, “True”eller ” False”., I en computer et entydigt binært ciffer kaldes den mest grundlæggende måde at gemme information på en smule. En smule kan enten være en 1 eller en 0. Data i en computer gemmes i grupper af bits. I mange tilfælde, såsom 6502, er den foretrukne måde i en gruppe på otte (noget som 0001 0101). Dette kaldes en byte. Vi kan også have en mindre gruppering af fire bits kaldet en nibble (lol).

for at repræsentere numeriske data tilstrækkeligt skal der ses på nogle få tilfælde. For det første vil vi begynde med usigneret binær., De otte bits (b) af en byte vil blive repræsenteret som:

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

Vi tæller bitene fra højre til venstre, indeksering fra 0. Hver bit kan ses som værende relateret til et binært tal. Den yderste højre bit repræsenterer 2⁰, den næste til venstre er 21, derefter 22 og så videre. Det vil derfor være nyttigt at huske potenser af 2, som er:

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

for At oversætte fra binær til noget, vi erkende, at vi bliver nødt til at opsummere alle de fornødne kompetencer af 2., Hvis en bit er indstillet til 1, inkluderer vi den tilsvarende effekt i vores sum, hvis ikke kasserer vi den. Dette kan allerede virke kompliceret, men at se på et eksempel vil forhåbentlig hjælpe med at rydde op. Hvis vi tager det binære tal 0010 0011, kan vi se, at de eneste bits sæt er 0, 1 og 5. Vi kan derefter “opsummere” dem som sådan:

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

Du kan også prøve at gå den anden vej, fra decimal til binær. Vi gør dette ved at dividere tallet med to flere gange og spore resten., Resten bit (som altid vil være en 1 eller en 0) vil kortlægge til bits i en byte. For eksempel, hvis du deler 35 med 2 får du 17 resten 1. Derfor vil bit 0 være en 1. Igen er denne beregning mindre mærkelig, end den lyder, når du ser den udført. Lad os prøve 35 (eller 0010 0011) igen:

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

Denne metode giver os resultatet0010 0011, som er præcis, hvad vi i gang med!

tilføjelse

nu hvor vi er komfortable med at læse og skrive binære tal, vil vi gerne prøve at lave noget matematik med dem., Tilføjelse fungerer “normalt”. Når du tilføjer to normale tal (lad os prøve 9 og 2), “bærer” du alt, hvad der går over ti til det næste ciffer. Så 9 + 2 vil give dig 11. I binær udfører du en lignende proces. Enkelte bits følger disse regler:

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

(1) repræsenterer en carry. Det er det samme som os at sige 9 + 2 = (1)1. Ved hjælp af det, vi har lært, før vi kan se, at 10 i binær svarer til 2 i decimal, præcis hvad vi ville forvente af 1 + 1!,

Hvis vi prøver at gøre 3 (0011) + 1 (0001), kan vi se et eksempel på, hvordan bærer i binære værker:

 0011
+ 0̲0̲0̲1̲
0100

Vi kan her se, at noget er foretaget fra den 1. bit til 2nd. Hvad hvis vi tilføjer et større antal? Lad os prøve 128 og 129:

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

Vi har nu stødt på vores første problem. Vi ved, at svaret skal være 257, men når man ser på, hvad der er i de første 8 bits, ser det ud til, at svaret er 1. Kun med den ekstra bærebit bliver det sande svar tydeligt., Hvis vi skal gemme vores binære tal i 8-bit, har vi brug for en måde at gemme og spore denne type bære. 6502 kan gøre præcis det, Phe!! 6502 har et sæt flag bygget i det, hvoraf den ene kaldes Carry Flag. Dette kan indstilles som 1 eller 0. Når en tilføjelse sker for binære tal, der resulterer i svaret er større end 256 Carry Flag er sat til 1. Dette giver os mulighed for at holde styr på vores matematik og giver os en måde at udvide vores aritmetiske fortid 8-bit tal.,

lad os dog tage et minut at tænke over, hvad vi lige har sagt, fordi jeg synes, det har en dyb implikation. Det er ikke soft .are, der vil holde styr på carry i vores matematik, det er Hard .are. Carry flag er et register inde i 6502, en “faktisk sted”. Hvis jeg havde et stort mikroskop, kunne jeg zoome ind og kunne sige “hej, det er det sted, hvor bærebiten er gemt!”. Dette er, hvad jeg synes er virkelig spændende ved at lære 6502-samling-du befinder dig i et rum, hvor der er en enorm overlapning mellem den Hard .are, du har, og den kode, du er i stand til at skrive., Dette kan virkelig forme den måde, du tænker på kodning i dette system. Når jeg skriver Python på min Mac, har jeg meget lidt fornemmelse af, hvordan det forbinder det — jeg skriver mit script, der sker noget magi, så får jeg nogle numre tilbage. Når du diskuterer samling, kan du ikke undgå tanken om, at det, du laver, har en stærk forbindelse til din maskine, jeg finder det meget mindre abstrakt.

så vi kan også repræsentere vores positive heltal korrekt, og hvis vi inkluderer en bærebit, kan vores binære tal tilføje korrekt. Der er dog to problemer:

  • Vi kan kun tælle op til 255 (hvis vi kun bruger 8 bit).,
  • Vi kan kun repræsentere positive tal.

Vi skal kunne løse sidstnævnte problem. For at gøre dette vil vi indføre underskrevet binær.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *