Binary on jotain, mitä ei tarvitse tietää, kun tehdään modernia, korkean tason ohjelmointia. 6502 voi tehdä monia toimintoja (lisätä, vähentää, siirtää asioita muistiin), joihin sinun ei tarvitse ymmärtää, miten binary toimii. On kuitenkin olemassa toimintoja, joita haluaisimme tehdä, kuten kertolasku ja jakaminen, jotka eivät ole asioita, joita 6502 voi tehdä natiivisti. Meidän on luotava nämä toiminnot itse. Tämä vaatii jonkin verran ymmärrystä binäärilaskennan koukeroista., Ei vähiten siksi, että sisäisesti, 6502 edustaa kaiken muodossa binary. Näimme tämän keskustellessamme siitä, miten prosessori yrittää ”kääntää” kaiken binäärikuvioihin. Hyvin pienin, on perehtynyt käsittelyssä binary numeroita ja termejä, kuten bit, byte, ja napostella on hyödyllistä ymmärtää yleisesti, miten 6502 toimii. Onneksi meille binary on intuitiivinen ja hauska.
juuri nyt ainoa käytännöllinen tapa tallentaa tietoa elektroniikassa on kahden valtion logiikan muoto. Jokin voi olla joko ”päällä” tai ”pois”, ”tosi”tai ” väärä”., Tietokoneessa yksikössä binäärilukua, perustavinta tapaa tallentaa tietoa kutsutaan hieman. Vähän voi olla joko 1
tai 0
. Tietokoneen tiedot tallennetaan bittien ryhmiin. Monissa tapauksissa, kuten 6502, edullinen tapa on ryhmässä kahdeksan (jotain 0001 0101
). Tätä kutsutaan tavuksi. Meillä voi olla myös pienempi neljän bitin ryhmittely nimeltä näykkäisy (lol).
jotta numerotiedot olisivat riittävän hyvin edustavia, on tutkittava muutamia tapauksia. Ensinnäkin aloitamme allekirjoittamattomalla binäärillä., Kahdeksan bittiä ( b ) yhden tavun tulee olla edustettuna:
b₇b₆b₅b₄b₃b₂b₁b₀
Emme laske bitit oikealta vasemmalle, indeksointi 0. Jokainen bitti voidaan nähdä liittyvän binäärilukuun. Oikeanpuoleisin bitti edustaa 2⁰, seuraava vasemmalle on 21, sitten 22, ja niin edelleen. Se on siis hyvä muistaa, toimivalta 2, jotka ovat:
2⁷ = 128
2⁶ = 64
2⁵ = 32
2⁴ = 16
2³ = 8
2² = 4
2¹ = 2
2⁰ = 1
kääntää binary jotain ymmärrämme, että meidän täytyy tiivistää kaikki tarvittavat valtuudet 2., Jos bitti on asetettu 1
, sisällytämme vastaavan tehon summaamme, jos emme hylkää sitä. Tämä voi jo tuntua monimutkaiselta, mutta esimerkin tarkasteleminen auttaa toivottavasti asian selvittämisessä. Jos otamme binary numero 0010 0011
voimme nähdä vain bits set ovat 0, 1, ja 5. Voimme sitten ”summa” ne sellaisenaan:
b₅ + b₁ + b₀
= 2⁵ + 2¹ + 2⁰
= 32 + 2 + 1
= 35
Voit myös yrittää mennä toiseen suuntaan, desimaalin binary. Teemme tämän jakamalla luvun kahdella moninkertaisella ja jäljittämällä loput., Jäljelle jäävä bitti (joka on aina 1 tai 0) kartoittaa bitit tavussa. Esimerkiksi, jos jaat 35 2 saat 17 loput 1. Siksi bit 0 on 1. Jälleen, tämä laskelma on vähemmän outoa kuin se kuulostaa, kun näet sen suoritettu. Kokeillaan 35 (tai 0010 0011
) vielä kerran:
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
Tämä menetelmä antaa meille tulos0010 0011
, joka on juuri sitä, mitä me aloitti kanssa!
Addition
nyt kun on mukava lukea ja kirjoittaa binäärilukuja aiomme yrittää tehdä jonkin verran matematiikkaa niiden kanssa., Lisäys toimii ”normaalisti”. Kun lisäät kaksi normaalia numeroa (kokeillaan 9 ja 2) ”kuljettaa” kaiken, joka menee yli kymmenen seuraavaan numeroon. Eli 9 + 2 Antaa 11. Binäärissä suoritat samanlaisen prosessin. Yhden bits noudata näitä sääntöjä:
0 + 0 = 0
1 + 0 = 1
0 + 1 = 1
1 + 1 =(1)0
(1) edustaa kantaa. Se on sama kuin me sanomalla 9 + 2 = (1)1. Käyttämällä mitä olemme oppineet, ennen kuin voimme nähdä, että 10 binary vastaa 2 desimaalin, mitä odotamme häneltä, 1 + 1!,
Jos me yritämme tehdä 3 (0011
) + 1 (0001
) voimme nähdä toinen esimerkki siitä, miten kuljettaa binary toimii:
0011
+ 0̲0̲0̲1̲
0100
Voimme nähdä täällä jotain on tehnyt 1 vähän 2. Mitä jos lisäämme suuremman numeron? Kokeillaan 128 ja 129:
10000001
+̲1̲0̲0̲0̲0̲0̲0̲0̲
(1)00000001
olemme nyt kohdanneet ensimmäisen ongelmamme. Tiedämme vastauksen pitäisi olla 257, kuitenkin, kun tarkastellaan mitä on ensimmäisen 8 bittiä se näyttää vastaus on 1. Vain ylimääräisellä kantoraketilla oikea vastaus käy ilmi., Jos aiomme säästää binary numerot 8-bittisiä tarvitsemme tapa tallentaa ja seurata tämän tyyppinen kuljettaa. 6502 voi tehdä juuri niin. 6502: ssa on sen sisään rakennettu lippusarja, josta yhtä kutsutaan Kantolipuksi. Tämä voidaan asettaa 1 tai 0. Aina kun binääriluvuille tapahtuu lisäys, joka johtaa siihen, että vastaus on suurempi kuin 256, Kantolippu asetetaan 1. Tämä antaa meille mahdollisuuden seurata matematiikan ja antaa meille tapa laajentaa meidän aritmeettinen ohi 8-bittinen numerot.,
otetaan minuutti vaikka miettiä, mitä olemme juuri sanoneet, koska mielestäni sillä on syvällinen vaikutus. Se ei ole ohjelmisto, joka pitää kirjaa kuljettaa meidän matematiikka, se on laitteisto. Kantolippu on 6502: n sisällä oleva Rekisteri, ”varsinainen paikka”. Jos minulla olisi iso mikroskooppi, voisin zoomata ja pystyä sanomaan ” hei, tuo on paikka, jossa kantoraketti on tallennettu!”. Tämä on mielestäni todella jännittävää oppia 6502 kokoonpano-olet tilassa, jossa on valtava päällekkäisyys laitteisto sinulla on ja koodi voit kirjoittaa., Tämä voi todella muokata tapaa ajatella koodausta tässä järjestelmässä. Kun kirjoitan Python minun Mac minulla on hyvin vähän käsitystä siitä, miten se yhdistää siihen-kirjoitan käsikirjoituksen, joitakin taikoja tapahtuu, sitten saan joitakin numeroita takaisin. Kun keskustellaan kokoonpanosta, ei voi välttyä ajatukselta, että tekemisellä on vahva yhteys koneeseesi, se on mielestäni paljon vähemmän abstraktia.
Joten, voimme myös edustaa meidän positiivisia kokonaislukuja oikein ja jos me myös kuljettaa bit binary numeroita voi lisätä oikein. Ongelmia on kuitenkin kaksi:
- voimme laskea vain 255: een (jos käytämme vain 8 bittiä).,
- voimme edustaa vain positiivisia lukuja.
– Meidän täytyy pystyä ratkaisemaan jälkimmäinen kysymys. Tätä varten esittelemme allekirjoitetun binäärin.