Sistemul de numere și dispozitivul de memorie.
A doua zi
Deoarece computerul este practic are doar 0 și 1, în primele stadii de dezvoltare de asamblare (poate un an), vom avea nevoie doar numere întregi, nu numai foarte mult timp, puteți lucra numai cu numere naturale, pentru care vor fi discutate.
Numai întreg și numai pozitiv.
Poate că ați trecut acest subiect la școală și unul dintre voi chiar își amintește ceva, dar trebuie să începeți de aici.
Vom fi interesati de sistemele cu 3 numere - dec, bin, hex.
Zecimal - Zecimal (Dec sau litera "d")
Sistemul arab este numit zecimal deoarece folosește 10 caractere.
Toate valorile sunt reprezentate de aceste simboluri. Tu chiar știi cum să folosești sistemul zecimal, de vreme ce noi toți am crescut și fiecare minut este luat în considerare.
Ține minte, băiete! În spațiu nu există niciun top, nu există fund - toate sunt convenții. Și faptul că aveți zece degete pe mâini este doar o excepție. Frații binari au doar două degete, ei râd de tine - un ciudat de zece-toed :). Ei au dreptul la asta, sunt mai mulți și sunt mai în vârstă. Cu binarele trebuie să fie prieteni, altfel nava va fi distrusă pe calea către prima stație.
Sistemul binar este binar (bin sau litera "b")
Nu este greu de ghicit că sistemul binar are doar două simboluri 0 și 1.
Un computer este un dispozitiv foarte simplu, există numai întrerupătoare în el - biți (on = 1, off = 0).
Conceptul de Bit cel mai probabil derivat din cuvintele engleze Bi nary - binary și Digit - cifra. Dar, deoarece biții sunt oh-oh-foarte mult, biții sunt construiți în octeți.
Bitul poate fi 0 sau 1.
Un octet este de 8 biți și poate avea valori de la 0000 0000 - zero, până la 1111 1111 - 255 în sistemul zecimal (spații pentru citire). Se pare că octetul are 256 valori (întotdeauna considerat împreună cu zero).
Pentru a traduce de la cifre zecimale la biți (adică la cifre binare) și invers, puteți utiliza calculatorul Windows (în modul inginerie). Practica până acum. Nu este nevoie să învățați toată masa în inima, ați întâlnit - este deja bine. )
De ce credeți că am alocat 2,4,8,16?
Așa-i, sunt cifre "rotunde". În sistemul zecimal, acestea nu sunt cu siguranță rotunde, dar în binar este de 10,100,1000,10000. Prin urmare, sistemul zecimal pentru computere nu este foarte potrivit. În schimb, este folosit.
Sistemul numerelor hexazecimale - Hexadecimal (Hex sau litera "h")
Are maximum 16 caractere. Pentru a nu gîndi la noi simboluri, literele hexate folosesc litere latine.
Am egalat toate hex-caracterele la valorile zecimale.
În acest sistem de numere, zero se adaugă la dreapta atunci când se înmulțește cu 16 (zecimal).
Noul zăvor de la stânga al numărului nu contează, la fel ca în matematică.
Cu toate acestea, dacă numărul începe cu o literă (A-F), atunci când introduceți programe, este necesar zero din stânga. În caz contrar, cum compilatorul determină că numărul a început? Și pentru a nu confunda numerele în diferite sisteme și pentru a scrie în scurt timp, ei scriu:
d - valori zecimale
h - Valori hexazecimale
b - valori binare
Convenabil, nu? Și asta?
Incomod. Prin urmare, faceți întotdeauna toate calculele într-un sistem!
Eu nu traduc niciodată de la hex la dec și să mă bin în mintea mea sau pe o bucată de hârtie, pentru asta există un calculator. Și sunt familiar cu această confuzie înainte de noile figuri. Dar nu mă aștept la nimic clar. Pur și simplu ar trebui să știți că numărul sistemului hex bin exista. După o lună de practică, te vei obișnui cu sistemul hexazecimal ca al tău. Dar binarul va fi folosit numai în termen de patru octeți. Pe ecranul monitorului, ocazional trebuie să văd biții ca "01011010", deși adesea sunt foarte puțini.
Acum, din nou, despre octet.
Într-un octet, se potrivesc exact două cifre ale sistemului hexagonal! Acesta este modul în care vom vedea octeții. Amintiți-vă experimentul nostru zero:
Acum înțelegeți ce am vrut să spun spunând: "90 aici sunt 144". Ar fi mai corect să spunem 90h = 144d.
Dacă aveți nevoie să citiți informații, de exemplu, de la bitul 900, atunci trebuie să ne referim la 112-octeți și să ne uităm la numărul 4 în el.
Desigur, în computer fizic, biții nu sunt separați de spații. Tot RAM, de exemplu, este un flux continuu de switch-uri :).
Dar atunci când sunt redate, biții sunt de obicei împărțiți în:
Bytes - 8 biți, două cifre hexazecimale sau
tetrads - 4 biți, câte o hexă cifră.
Fiți atenți la înregistrare. Numărăm biții de la dreapta la stânga și neapărat de la zero - acesta este standardul pentru manuale și documentație. În plus, numerotarea de la zero are un înțeles matematic (biții trebuie să fie realizați!).
Deși nu vom vedea aceste informații în practică. În loc de biți vor exista hexabiți peste tot, după cum urmează:
Da, iartă-mă pentru acest fel de libertate.
Jung, după masa de prânz vă voi învăța să scrieți programe practice pentru echipamentul auxiliar de la bord. Sunteți, desigur, goi ca primul pas și nu am înțeles nimic pentru ziua de azi, dar nu am timp să rassusolivat, am așteptat mult timp.
Primul program util
Ce avem în manual? Nu aveți nevoie de asta încă. Acest lucru eu nu știu încă. Sunt prea multe informații. Nu, poate, voi continua, așa cum a sugerat Oleg Kalashnikov. Poate cea mai bună abordare pentru iubitorii de practică.
Experimentul 01 (prax01.com)
Încă mă refer la faptul că utilizați WinXP și exemplul ar trebui să funcționeze.
Creați un fișier cu extensia "com" (rechemare în FAR'e - Shift + F4). Când numiți fișierul, introduceți în el orice literă sau număr, bine, să zicem "1". Salvați fișierul (în FAR'e - Esc).
Nu, nu este un program, acest fișier nu trebuie executat. Deschide-l în Hiew'e.
Acum vedeți 1, dacă apăsați "F4" (Mod), atunci, la acel moment, veți vedea un octet în formă hexagonală. F4 va afișa din nou codul dezasamblării. Dacă fișierul este unul, atunci codul arată astfel:
Spre deosebire de comanda nop, pe care ați văzut-o deja, majoritatea echipelor utilizează elemente pentru acțiune.
Subiectul, cu (sau peste) la care se efectuează acțiunea, este operandul.
Operanzii asamblare pentru procesoarele compatibile Intel sunt de obicei separate prin virgule. Adică, în unele sisteme sau în alte limbi de programare, ei scriu:
AX xor 44
sau ar putea exista o astfel de formă de scriere:
44,55 XOR AX
Dar în asamblorul x86 este acceptat să scrie așa:
Din toate acestea, lucrul cel mai important acum este asimilarea faptului că nu mai sunt operanzi decât trei (de obicei numai 2), sunt separați prin virgule și urmează numele echipei. Să scriem programul real în asamblare.
În Hiew'e (când vedeți codul de dezasamblare al fișierului nostru) apăsați F3 și apoi Enter. Acum puteți introduce programul în asamblare (simbolul "1" din fișier ar trebui șters). Fiecare instrucțiune este introdusă de Enter și se transformă într-un șir, dacă nu există o eroare evidentă. Spațiile sunt necesare doar pentru confort, deci nu contează cât de multe dintre ele. Scrieți așa cum doriți, cu majuscule sau litere mari, dar numai în limba engleză. )
Aici este codul programului, trebuie să fie tastat:
Când se termină totul, apăsați o dată ESC pentru a opri asamblarea și F9 pentru a salva fișierul.
Acesta a fost tot codul programului, care ar trebui să emită un șir pe ecran! Răcoros, nu? Doar nu există suficientă linie în sine.
Adăugați după orice scribbles (pur și simplu nu ștergeți nimic) orice șir de text și, la sfârșit, puneți un semn $.
Aceasta ar putea arata cam asa:
Scorpionii vor fi diferiți, dar este cam așa. Salvați programul. Deschide-o din nou în Hiew'e.
Rulați programul (puteți de la Explorer). Dacă te-a salutat calculatorul - și eu te felicit! Deci, aveți șansa să-l învățați să facă lucruri mai complicate.
Veți vedea o fereastră de aplicație DOS cu textul:
Bună ziua!
Apăsarea oricărei taste va ieși din program.
"$" nu este afișat. Interesant: Este un caracter condiționat la sfârșitul liniei?
Da, dar în ferestre vom folosi zero octeți (00h) pentru același scop.
Aici, sa dovedit deja un program complet pentru DOS, care va funcționa în Windows.
Corect și a se vedea următoarele "de ce":
De ce moare?
De ce ah?
De ce 9?
Și oricum, ce fel de rutină de întrerupere este int 16, int 21, int 20.
Ultima întrebare ma făcut, de asemenea, foarte tristă când am întâlnit acest exemplu. M-am așteptat să obțin programul pe un asamblator pur, dar a trebuit să folosesc câteva funcții obscure pe care nu le-am scris.
De fapt, afișarea unei linii pe ecran fără o funcție DOS specială nu este deloc dificilă. Folosim această metodă deoarece este cea mai asemănătoare cu cea a programării în Win. Aici ar fi mai precis și mai rapid afișarea pe ecran fără o subrutină specială a funcțiilor DOS.
Dar DOS este în trecut și Win32 ne așteaptă.
Cel mai important, nu vă faceți griji, dacă dintr-o dată nu înțelegeți ce este aici, credeți-mă, în câteva lecții veți înțelege pe deplin acest program.
Vom căuta răspunsul la întrebarea "De ce ah" mâine, deoarece acest "motiv" este cel mai important în toate asamblorii. Serios!