binarul este ceva ce nu este necesar să știți atunci când faceți programare modernă, la nivel înalt. 6502 poate face multe operații (adăugați, scădeți, mutați lucrurile în memorie) pentru care nu va trebui să înțelegeți cum funcționează binarul. Cu toate acestea, există operațiuni pe care am putea dori să le facem, cum ar fi înmulțirea și împărțirea, care nu sunt lucruri pe care 6502 le poate face nativ. Trebuie să creăm noi înșine aceste funcții. Acest lucru va necesita o anumită înțelegere a complexității calculului binar., Nu în ultimul rând pentru că pe plan intern, 6502 va reprezenta totul sub formă de binar. Am văzut acest lucru când am discutat despre modul în care procesorul va încerca să „traducă” totul până la modele binare. Cel puțin, familiarizarea cu citirea numerelor binare și cu termeni precum bit, octet și nibble va fi utilă pentru a înțelege în general modul în care funcționează 6502. Din fericire, deși pentru noi, binar este intuitiv și distractiv.în prezent, singura modalitate practică de a stoca date în electronică este sub forma unei logici cu două stări. Ceva poate fi „pornit” sau „oprit”, „adevărat”sau ” fals”., Într-un computer o cifră binar singular, modul cel mai de bază pentru a stoca informații este numit un pic. Un bit poate fi fie un 1 sau un 0. Datele dintr-un computer sunt stocate în grupuri de biți. În multe cazuri, cum ar fi 6502, modul preferat este într-un grup de opt (ceva de genul 0001 0101). Aceasta se numește octet. Putem avea, de asemenea, o grupare mai mică de patru biți numită nibble (lol).

pentru a reprezenta în mod adecvat datele numerice, trebuie analizate câteva cazuri. În primul rând, vom începe cu binar nesemnat., Cei opt biți (b ) ai unui octet vor fi reprezentați ca:

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

numărăm biții de la dreapta la stânga, indexând de la 0. Fiecare bit poate fi văzut ca fiind legate de un număr binar. Bitul din dreapta reprezintă 2⁰, Următorul din stânga este 21, apoi 22 și așa mai departe. Prin urmare, va fi util să ne amintim puterile lui 2, care sunt:

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

pentru a traduce de la binar la ceva pe care îl recunoaștem, va trebui să însumăm toate puterile corespunzătoare ale lui 2., Dacă un bit este setat la 1 vom include puterea corespunzătoare în suma noastră, dacă nu o vom arunca. Acest lucru poate părea deja complicat, dar uita la un exemplu va ajuta, sperăm, clar-l. Dacă luăm numărul binar 0010 0011 putem vedea că singurele biți setate sunt 0, 1 și 5. Putem apoi să le „însumăm”ca atare:

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

puteți încerca, de asemenea, să mergeți invers, de la zecimal la binar. Facem acest lucru împărțind numărul de două ori de mai multe ori și urmărind restul., Bitul REST (care va fi întotdeauna un 1 sau un 0) va mapa la biți într-un octet. De exemplu, dacă împărțiți 35 de 2 veți obține 17 restul 1. Prin urmare, bitul 0 va fi un 1. Din nou, acest calcul este mai puțin ciudat decât pare atunci când îl vedeți efectuat. Să încercăm 35 (sau 0010 0011) din nou:

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

Această metodă ne dă rezultatul0010 0011, care este exact ceea ce am început!

Plus

acum, că suntem confortabil de citire și scriere numere binare vom dori să încerce să facă unele matematica cu ei., Adăugarea funcționează”în mod normal”. Când adăugați două numere normale (să încercăm 9 și 2), „transportați” tot ceea ce depășește zece la următoarea cifră. Deci, 9 + 2 vă va da 11. În binar, efectuați un proces similar. Biții unici respectă aceste reguli:

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

(1) reprezintă o purtare. Este la fel ca noi spunând 9 + 2 = (1)1. Folosind ceea ce am învățat înainte de a putea vedea că 10 în binar este echivalentul a 2 în zecimal, exact ceea ce ne-am aștepta de la 1 + 1!,

Dacă încercăm să facem 3 (0011) + 1 (0001) putem vedea un alt exemplu de modul în care transportă în binar lucrări:

 0011
+ 0̲0̲0̲1̲
0100

putem vedea aici ceva s-a efectuat de la data de 1 mai la 2 mai. Ce se întâmplă dacă adăugăm un număr mai mare? Să încercăm 128 și 129:

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

am întâlnit acum prima noastră problemă. Știm că răspunsul ar trebui să fie 257, cu toate acestea, uitându-ne la ceea ce este în primii 8 biți, se pare că răspunsul este 1. Numai cu bitul suplimentar de transport, răspunsul adevărat devine evident., Dacă vom salva numerele noastre binare în biți 8, vom avea nevoie de o modalitate de a stoca și urmări acest tip de transport. 6502 poate face exact asta, phew! 6502 are un set de steaguri construite în el, dintre care unul se numește steagul de transport. Acest lucru poate fi setat ca 1 sau 0. Ori de câte ori se întâmplă o adăugare pentru numere binare care au ca rezultat răspunsul fiind mai mare decât 256, steagul de transport este setat la 1. Acest lucru ne permite să urmărim matematica noastră și ne oferă o modalitate de a extinde aritmetica noastră trecut numere de 8 biți.,

să ne gândim un minut la ceea ce tocmai am spus, deoarece cred că are o implicație profundă. Nu este un software care va ține evidența transportului în matematica noastră, este hardware. Steagul de transport este un registru în interiorul 6502, un „loc real”. Dacă aș avea un microscop Mare, aș putea mări și să pot spune ” hei, acesta este locul în care este stocat bitul de transport!”. Asta este ceea ce cred că este foarte interesant despre învățare 6502 asamblare — ești într-un spațiu unde există o mare suprapunere între hardware ai si codul sunt în măsură să scrie., Acest lucru poate modela într-adevăr modul în care vă gândiți la codificare în acest sistem. Când scriu Python pe Mac — ul meu, am foarte puțin sens despre cum se conectează la el-îmi scriu scenariul, se întâmplă ceva magie, apoi primesc niște numere înapoi. Când discutați despre asamblare, nu puteți evita ideea că ceea ce faceți are o legătură puternică cu mașina dvs., mi se pare mult mai puțin abstract.deci, putem reprezenta, de asemenea, numere întregi noastre pozitive în mod corect și dacă vom include un pic transporta numerele noastre binare pot adăuga corect. Cu toate acestea, există două probleme:

  • putem conta doar până la 255 (dacă folosim doar 8 biți).,
  • putem reprezenta doar numere pozitive.

trebuie să putem rezolva ultima problemă. Pentru a face acest lucru, vom introduce binar semnat.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *