Binære er noe som ikke er nødvendig å vite når du gjør moderne, høy-nivå programmering. Den 6502 kan gjøre mange operasjoner (legge til, trekke fra, flytte ting i minnet) som du ikke trenger å forstå hvordan binære fungerer. Det er imidlertid operasjonene som vi kanskje har lyst til å gjøre, for eksempel multiplikasjon og dele, som ikke ting 6502 kan gjøre problemfritt. Vi trenger for å lage disse funksjonene selv. Dette vil kreve en viss forståelse av vanskelighetene med binære beregning., Ikke minst fordi internt, 6502 vil representere alt i form av binære. Så vi dette når vi diskutert hvordan prosessoren vil prøve å «oversette» alt ned til binære mønstre. På en aller minste, bli kjent med lese-binære tall, og med vilkår som bit, byte, og bite vil være nyttig for å forstå generelt hvordan 6502 opererer. Heldigvis selv for oss, binære er intuitivt og morsomt.

akkurat nå, den eneste praktiske måten å lagre data i elektronikk er i en form for to-state logic. Noe kan enten være «På» eller «Av», «True» eller «False»., I en datamaskin en enestående binære siffer, den mest grunnleggende måten å lagre informasjon kalles en bit. Et bit kan enten være en 1 eller 0. Data i en datamaskin er lagret i grupper av bits. I mange tilfeller, slik som 6502, foretrukket måte er i en gruppe av åtte (noe som 0001 0101). Dette kalles en byte. Vi kan også ha en mindre gruppering av fire biter som kalles en bite (lol).

Til tilstrekkelig representerer numeriske data noen tilfeller behov for å bli sett på. For det første, vi vil begynne med usignerte binære., De åtte biter ( b ) av en byte vil bli representert som:

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

Vi telle biter fra høyre til venstre, indeksering fra 0. Hver bit kan bli sett på som å være knyttet til et binært tall. Lengst til høyre bit representerer 2⁰, det neste til venstre er 21 og 22, og så videre. Det vil derfor være nyttig å huske på potenser av 2, som er:

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

for Å oversette fra binære til noe vi gjenkjenner vi trenger for å oppsummere alle nødvendige fullmakter 2., Hvis en bit er satt til 1 vi vil omfatte tilsvarende kraft i vårt sum, hvis ikke vil vi forkaste det. Dette kan allerede virke komplisert, men ser på et eksempel vil forhåpentligvis bidra til å fjerne det opp. Hvis vi tar den binære tall 0010 0011 vi kan se det eneste biter sett er 0, 1 og 5. Vi kan da «sum» dem slik:

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

Du kan også prøve å gå den andre veien, fra desimal til binær. Dette gjør vi ved å dele antall av to flere ganger og sporing av resten., Resten-biters (som vil alltid være 1 eller 0), vil kartet til biter i en byte. For eksempel, hvis du deler 35 av 2 du får 17 resten 1. Derfor, bit 0 vil være en 1. Igjen, denne beregningen er mindre merkelig enn det høres ut når du ser det utført. La oss prøve 35 (eller 0010 0011) igjen:

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 metoden gir oss resultatet0010 0011, som er nøyaktig hva vi i gang med!

Tillegg

Nå som vi er komfortable med å lese og skrive binære tall vi kommer til å ønske å prøve å gjøre noe matte med dem., Tillegg fungerer «normalt». Når du legger til to normale tall (la oss prøve 9 og 2) du kan «bære» alt som går over ti til neste siffer. Så, 9 + 2 vil gi deg 11. I binære, kan du utføre en lignende prosess. Enkelt biter følge disse reglene:

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

(1) representerer en bære. Det er det samme som oss og sa: 9 + 2 = (1)1. Ved å bruke det vi har lært før vi kan se at 10 i binære tilsvarer 2 i desimal, akkurat hva vi ville forvente fra 1 + 1!,

Hvis vi forsøker å gjøre 3 (0011) + 1 (0001) vi kan se et eksempel på hvordan du bærer i binære fungerer:

 0011
+ 0̲0̲0̲1̲
0100

Vi kan se her er det noe som har gjennomført fra 1. bit til 2.. Hva hvis vi legger til et større antall? La oss prøve 128 og 129:

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

Vi har nå støtt vårt første problem. Vi vet svaret bør være 257, men å se på hva som ligger i de første 8 biter det ser ut som om svaret er 1. Bare med den ekstra bære bit gjør det riktige svaret bli klart., Hvis vi skal være redde vår binære tall i 8-bits-vi trenger en måte å lagre og spore denne type bære. Den 6502 kan gjøre akkurat det, puh! Den 6502 har et sett med flagg bygget i det som er kalt Bære Flagget. Dette kan være angitt som 1 eller 0. Når et tillegg skjer for binære tall som resulterer i at svaret blir større enn 256 den Bære Flagget er satt til 1. Dette gjør det mulig for oss å holde styr på våre matematikk og gir oss en måte å utvide vår aritmetiske siste 8-biters tall.,

La oss ta et minutt om å tenke på hva vi nettopp har sagt, fordi jeg tror det har en dyp virkning. Det er ikke programvare som vil holde styr på den bærer i vår matematikk, det er hardware. Det bære flagget er et register deg i 6502, en «faktisk». Hvis jeg hadde et stort mikroskop jeg kunne zoome inn og være i stand til å si «hei, det er stedet hvor bære bit er lagret!». Dette er det jeg synes er virkelig spennende om læring 6502 montering — du er i et område hvor det er et stort overlapp mellom maskinvaren du har, og koden som du er i stand til å skrive., Dette kan virkelig med på å forme måten du tenker på koding i dette systemet. Når jeg skriver Python på Mac-maskinen min har jeg veldig liten følelse av hvordan det kobles til det — jeg skrive min skript, noe magisk som skjer, så jeg får noen tall tilbake. Når du diskutere sammenstilling du kan ikke unngå tanken om at hva du gjør har en sterk forbindelse til maskinen din, jeg synes det er mye mindre abstrakt.

Så, vi kan også representere våre positive heltall riktig, og hvis vi inkluderer en bære bit våre binære tall kan legge til på riktig måte. Det er imidlertid to problemer:

  • kan Vi bare telle opp til 255 (hvis vi bare bruker 8 bits).,
  • Vi kan bare representere positive tall.

Vi trenger å være i stand til å løse det sistnevnte problemet. For å gjøre dette vil vi introdusere Signert Binære.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *