Tabela 16 brojnog sistema. Heksadecimalna abeceda. §13. Heksadecimalni sistem brojeva sa tradicionalnim alfabetom

Da biste pisali programe na asembleru, morate razumjeti heksadecimalni sistem brojeva. Nema ništa komplikovano u tome. U našim životima koristimo decimalni sistem. Siguran sam da ga svi znate, pa ću pokušati da objasnim heksadecimalni sistem povlačeći analogiju sa decimalnim.

Dakle, u decimalnom sistemu, ako dodamo nulu desno od bilo kojeg broja, onda će se ovaj broj povećati za 10 puta. Na primjer: 1 x 10 = 10; 10 x 10 = 100; 100 x 10 = 1000 itd. U ovom sistemu koristimo brojeve od 0 do 9, tj. deset različitih cifara (zapravo, zato se i zove decimalni).

Možemo imati osnovni sistem sa dva broja, ili je to binarni brojevni sistem gde umesto 10 cifara imate samo dve cifre. Svako sjedište, umjesto da bude sila od deset, sastojat će se od dva. Sada možete zamisliti da možemo nastaviti da širimo ovo. Možemo ići tri, četiri, pet, šest, sedam, osam, devet, ili čak možemo ići više. Kao što možete zamisliti, umjesto da ima samo 10 cifara, imat će Koji su to brojevi? Kao što ćemo vidjeti, umjesto da mjesto bude stepen dvojke ili stepen desetice, postojaće potencije koje možemo vidjeti, možemo ponovo koristiti postojećih 10 cifara iz decimalnog brojevnog sistema.

U heksadecimalnom sistemu koristimo, odnosno, šesnaest "cifara". Riječ "brojevi" sam posebno napisao pod navodnicima, jer koristi više od brojeva. A kako je zaista? Objašnjavam: od 0 do 9 računamo na isti način kao u decimali, ali onda će biti ovako: A, B, C, D, E, F. Broj F, koliko god bio težak izračunajte, to će biti jednako 15 in decimalni sistem(vidi tabelu 1).

Možemo ponovo koristiti nulu, jedan, dva, tri, četiri, pet, šest, sedam, osam, devet, ali tada nam treba još šest cifara. Konvencija je korištenje prvih šest slova. ne brojevi, ali zapamtite da su to samo nasumični crvi na komadu papira. Oni su samo proizvoljni simboli koje smo narasli da komuniciramo sa stvarima. Odrasli ste da povezujete ovaj simbol upravo ovdje sa osmom stvari, riječju osam s kojom se povezujete kada vidite mnogo objekata. To doslovno znači da ako imate 10 stvari, onda biste rekli: "Imam stvari tamo."

Decimalni broj

Heksadecimalni broj

Tabela 1. Decimalni i heksadecimalni sistemi.

Dakle, ako bilo kojem broju u heksadecimalnom sistemu dodamo nulu desno, onda će se ovaj broj povećati za16 jednom.

Umjesto da kažete „Imam 15“, možete reći „Imam stvari tamo“. Kako sad ovo pomaže? Pa, da vidimo možemo li isti broj 231 ili 231 predstaviti u decimali. Šta je sedam? Koja su značenja ovih mjesta? Ovo prvo mjesto predstavlja 16 za nultu snagu ili još uvijek predstavlja mjesto. Dakle, šta ovo mjesto predstavlja ovdje? Pa, u bazi 10, bilo je 10 prije prve snage. U dvije baze to su bile dvije za prvu snagu. Bukvalno je, u redu, dozvolite mi da napišem riječ, bukvalno je šezdeset.

To je ono što ovaj broj predstavlja. Pa, to je isto kao 14 puta 14 puta 16. To bi ovdje bilo 14 šesnaest, 14 puta 16 je 224 plus sedam. Pa, 224 plus 7 će vam dati nadu, možete to cijeniti. Možete predstavljati istu količinu u bilo kojoj od ovih razni sistemi obračun. U bilo kojem broju koji možete predstaviti decimalno, taj broj možete predstaviti i u binarnom, ili heksadecimalnom, ili bazi tri, ili bazi 60, ili bazi 31, šta god da radite.

Primjer 1: 1 x 16 = 10; 10 x 16 = 100; 100 x 16 = 1000 itd.

Jeste li uspjeli razlikovati heksadecimalno od decimalnog u primjeru 1? A iz ovog reda: 10, 12, 45, 64, 12, 8, 19? Može biti heksadecimalni ili decimalni. Kako bi se izbjegla zabuna, a kompjuter bi mogao nedvosmisleno razlikovati jedan broj od drugog, u Assembleru je uobičajeno da se nakon heksadecimalnog broja stavi znak h ili H ( H je skraćenica za engleski. heksadecimalni (heksadecimalno). Ukratko, ponekad se naziva jednostavno hex ) . I nakon decimale, ne stavljajte ništa. Jer brojevi od 0 do 9 u oba sistema imaju isto značenje, tada su brojevi zapisani kao 5 i 5h isti.

Možda ste primijetili obrazac. Što više znakova imamo, tako da u bazi 16, imate 16 znakova, potrebno je manje vrijednosti mjesta da bismo predstavili isti iznos. Jedan način razmišljanja o tome je da svako od mjesta sadrži više informacija. Iako je ovo samo jedan od dva karaktera ovdje. Ovo je jedan od deset likova. Što više znakova imate, više brojeva možete stati na svako mjesto, potrebno je manje mjesta za predstavljanje određene količine. To je samo zanimljiva stvar za gledati.

Ali nadam se da ćete izaći iz igre kao što ste uradili sa bazom 16 kao što sam ja uradio i zaista je od pomoći. Ovo se zapravo koristi ako gledate većinu web stranica. Ako zaista želite da radite nešto zabavno, dozvolite mi da vam dam još jedno. Opet, ovo nije baš specijalizovano. Brojevni sistem koji koristimo u svakodnevnom životu naziva se decimalni ili sistem i koristi 10 znakova od 0 do 9 za predstavljanje vrijednosti.

To. Primjer 1 (vidi gore) bilo bi ispravnije napisati na sljedeći način: 1 x 16 = 10h; 10h x 16 = 100h; 100h x 16 = 1000h. Ili ovako: 1h x 10h = 10h; 10h x 10h = 100h; 100h x 10h = 1000h.

Zašto je potreban heksadecimalni sistem, razmotrićemo u narednim brojevima. I unutra ovog trenutka za naš primjer programa, o kojem će biti riječi u nastavku, moramo znati o postojanju heksadecimalnih brojeva.

Gdje se i zašto koristi heksadecimalna?

Većina kodova grešaka i drugih vrijednosti koje se interno koriste u računaru su u heksadecimalnom formatu. Da, binarno je mnogo jednostavnije u nekim aspektima, ali nam je i mnogo lakše čitati heksadecimalne vrijednosti nego binarne. Brojanje u heksadecimalu je lako ako zapamtite da svaki skup brojeva čini 16 znakova.

Kako ručno pretvoriti heksadecimalne vrijednosti

U decimalnom formatu, svi znamo da računamo ovako. Međutim, heksadecimalno brojimo svih 16 brojeva. Evo nekoliko primjera nekih složenih hex "prijelaza" koji bi vam mogli biti korisni. Dodavanje heksadecimalnih vrijednosti je vrlo jednostavno i zapravo radi vrlo slično brojanju brojeva u decimalnom obliku.

Pa hajde da sumiramo. Heksadecimalni brojevni sistem se sastoji od 10 cifara (od 0 do 9) i 6 slova latinice (A, B, C, D, E, F). Ako dodamo nulu desno od bilo kojeg broja u heksadecimalnom sistemu, onda će se ovaj broj povećati za16 jednom. Veoma je važno razumjeti ovu temu., pošto ćemo ga stalno koristiti prilikom pisanja programa.

Većina nas to može učiniti u svojoj glavi – evo jednog načina da to pogledate, koji je od pomoći. Kada se unesu tri broja, na primer 123, znamo da moramo da pogledamo sva tri mesta da bismo razumeli šta oni zaista znače. Oduzmite prva dva i još 3. 2 se množi sa 10 jer je to druga znamenka u broju, baš kao u prvom primjeru. Opet, uzmite 1 od tih 123 i ostaje vam 23, što je 20. Treći broj s desne strane uzima se 10 puta, dva puta.

Evo još dva načina da to pogledate. Isto važi i ako je broj u hiljadama, kao što je 1. Prvo morate konvertovati heksadecimalne cifre u decimale, a zatim jednostavno sabrati brojeve, baš kao u dva gornja primera. Sljedeći broj s njegove lijeve strane mora se pomnožiti sa 16, koji, kao i drugi broj od 123 iznad, treba pomnožiti sa 10 da bi se dobio broj.

Sada malo o tome kako ću graditi primjere u asembleru. Nije baš zgodno predstavljati ih u HTML formatu, pa će prvo biti sam programski kod sa numerisanim redovima, a odmah nakon njega objašnjenja i napomene.

Manje-više ovako:

linije Programski kod
(1) mov ah,9

Objašnjenja:

Konačno, treći broj s desne strane treba pomnožiti sa 16, dvaput kao decimalu, treba pomnožiti sa 10, dva puta kada ima tri cifre. Iako je dobro znati kako se to radi ručno, svakako je mnogo lakše raditi sa heksadecimalnim vrijednostima pomoću kalkulatora ili konvertera.

Postoji mnogo online hex pretvarača koji su zaista jednostavni za korištenje i samo su neki. Jedan primjer bi bio dodavanje heksadecimalnih i binarnih vrijednosti zajedno, a zatim pregled rezultata u decimalnom formatu. Budući da se decimalni broj odnosi na broj 10, a mi imamo deset prstiju i deset prstiju, obično volimo da koristimo brojeve u grupama desetica ugrađenih u naš brojevni sistem.

U redu (1) radimo nešto, au redu (15) radimo nešto.

Ogroman zahtjev: NEMOJTE kopirati programe sa stranice u međuspremnik, a zatim ih zalijepiti u Notepad (ili bilo gdje drugdje)! Upišite ih ručno u uređivač teksta. Ako postoji štampač, izaberite program, odštampajte odabrani fragment, a zatim prenesite u uređivač sa papira. Sve primjere morate ukucati sami! Ovo će ubrzati pamćenje operatora.

Svaki od ovih brojeva možemo raščlaniti na višestruke stepene od 10. Ako više volite eksponente, poznate i kao stepene, tu ste. Ne morate čak ni da brinete o frakcijama. Heksadecimalni Nažalost, računari nemaju 10 prstiju i 10 prstiju. U stvari, nemaju uopšte! Ljudi koji prave ove mašine odlučili su da je preteško napraviti kompjuter koji se može računati baš kao čovek. Dakle, umjesto toga, računari koriste binarni kod, koji možemo napisati u skraćenom obliku - heksadecimalnom.

Heksadecimalni, koji se često naziva heksadecimalni, je metoda grupisanja brojeva na stepen 16 umjesto stepena. Možemo imenovati heksadecimalnu bazu. Najveća znamenka u decimalnom obliku. Na primjer, da bih predstavio devetnaest, moram staviti broj jedan i broj devet jedan pored drugog: Dakle, decimalni brojevi koriste cifre od 0 do 9, za ukupno deset različitih cifara. Ali heksadecimalni brojevi zahtijevaju više od deset cifara. Moraju odgovarati 16 jednocifrenih tipova brojeva.

I dalje. Mala i VELIKA slova se ne razlikuju u Assembleru. Unosi poput:

Asembler se percipira jednako. Možete, naravno, natjerati asemblera da pravi razliku između malih i VELIKIH znakova, ali to za sada nećemo raditi. Radi čitljivosti programa, najbolje je naredbe kucati malim slovima, a imena potprograma i oznaka započeti velikim slovima. Ali ovako će nekome odgovarati.

Za rješavanje ovog problema, heksadecimalni brojevi imaju nekoliko slova abecede koriste se kao numeričke cifre. Heksadecimalni brojevi. Heksadecimalni zapis U drugim priručnicima, tekstualnim datotekama i programima obično ćete pronaći nekoliko tipova zapisa koji razlikuju heksadecimalne brojeve od decimalni brojevi.

Da biste bili sigurni da neko drugi zna da govorite o heksadecimalnim brojevima, a ne o decimalnim brojevima, možete koristiti gornja tri zapisa. Ova oznaka je jedan od najčešćih oblika. Svi brojevi se smatraju heksadecimalnim osim ako nije drugačije naznačeno.

Dakle, pređimo na naš prvi program:

(1) CSEG segment

(2) org 100h

(4) Početak:

(6) mov ah,9

(7) mov dx,offset poruka

(8) int 21h

(10) u 20h

(11)

(12) Poruka db "Hello, world!$"

(13) CSEG se završava

(14) endBegin

Da bismo objasnili sve operatore ovog primjera, trebat će nam nekoliko epizoda. Stoga ćemo jednostavno izostaviti opis nekih naredbi u ovoj fazi. Samo pomisli da bi tako trebalo biti. U bliskoj budućnosti ćemo detaljno razmotriti ove operatere. Dakle, linije sa brojevima (1), (2) i (13) jednostavno ignorišete.

U prethodnom članku pogledali smo binarni i decimalni sistem. Danas imamo posla sa sistemom trećeg prioriteta. Ovaj ili onaj lingvista vjerovatno već zna: osnova za ovaj sistem plaćanja je 16. A ako već malo radimo sa dvostrukim i decimalnim sistemom, učenje trećeg sistema ne bi trebalo biti previše teško.

Kada bismo imali samo dvije cifre, 0 i 1 u binarnom obliku, heksadecimalni ima 16 cifara. Ali u tom trenutku ćemo brojeve uzeti samo kao brojeve, kako se broj "12" razlikuje od dva broja 1 i 2? Eliminišite ovdje, kreirajte slova. Dakle, svaka cifra je zaista jasno prepoznatljiva i jedinstvena. Inače, platni sistem se ponaša kako je poznato. Samo je pravopis nešto posebno.

Redovi (3), (5), (9) i (11) ostaju prazni. Ovo je urađeno radi jasnoće. Asembler će ih jednostavno izostaviti.

Sada pređimo na ostale operatere. Od reda (4) počinje programski kod. Ovo je oznaka koja govori asembleru da pokrene kod. Red (14) sadrži izjave end Begin ( Počni engleski Start; kraj kraj). Ovo je kraj programa. Općenito, umjesto riječi Počni moglo se koristiti nešto drugo. Na primjer, Početak:. U ovom slučaju, morali bismo završiti program Kraj Početak (14).

Binarni i decimalni brojevi mogu se relativno lako razlikovati. Ako su prisutni samo 0 i 1, broj u odgovarajućem kontekstu je prilično pouzdano zapisan u binarnom obliku. U heksadecimalnim i decimalnim vrijednostima opasnost je još zbunjujuća jer su ne samo 2 već i 10 cifara identične. Dosta teorije, opet počinjemo s primjerom.

Pretvaranje decimalnih brojeva u heksadecimalne brojeve je takođe brzo. Sada kombinujemo tri sistema i gledamo kako se ovi sistemi koriste u računarima. Počnimo s najmanjom jedinicom: bitom. Jedan bit je najmanja količina podataka koju računar može obraditi. Ovo je broj, odnosno 0 ili Od nekoliko bitova, sada sve ostale strukture.

Linije (6) (8) prikazuju poruku Hello, world!. Ovdje moramo ukratko govoriti o registrima procesora (detaljnije ćemo razmotriti ovu temu u sljedećem broju).

Registar procesora je namjenska memorija za pohranjivanje broja.

Na primjer:

Ako želimo da saberemo dva broja, onda u matematici pišemo ovako:

Bajt se može koristiti za predstavljanje brojeva od -255 do 255. Da bismo vam omogućili razlikovanje između pozitivnih i negativnih, samo 7 bitova se može koristiti kao cifre. Međutim, u nekim slučajevima ovo pravilo se može zanemariti u korist eksponencijalno rastućeg raspona vrijednosti.

Uvod u heksadecimalni sistem

Heksadecimalni brojevi: konverzija, pravopis. I na kraju, kao i uvijek, rezultati. Ovdje ih treba predstaviti korak po korak. Ove heksadecimalne vrijednosti uvijek počinju s rombom #. Iza njega slijede 3 para od 2 heksadecimalna znaka. 3 para predstavljaju vrijednosti boja u redoslijedu crveno-zeleno-plavo, prvi za crvenu, posljednji za plavu. Kao što ime govori, heksadecimalni je sistem brojeva zasnovan na 16. Dakle, za svaki znak je dostupno 16 karaktera.

A, B i C oni su neka vrsta registara (ako govorimo o kompjuteru) u koje se mogu pohraniti neki podaci. A=5 se može čitati kao: Dodijelite A broj 5 .

Da biste dodijelili vrijednost registru, postoji operator mov u Assembleru (od engleskog move load). Red (6) treba da se čita ovako: Učitavanje u registar AHbroj 9 (drugim riječima, dodjeljujemo AHbroj 9). U nastavku ćemo razmotriti zašto je to potrebno.

Postoje 2 cifre za svaku pojedinačnu vrijednost boje, šesnaest je isto kao i normalna decimalna: ako je maksimum dostignut u jednoj tački, tačka do tačke se povećava za 1. Kada je boja specificirana kao heksadecimalna vrijednost, što je veća vrijednost, boja postaje svjetlija.

Primjer korištenja boje kao heksadecimalne vrijednosti. U ovom slučaju, decimalne vrijednosti mogu se navesti od 0 do 255, odvojene zarezom. Redoslijed je identičan redoslijedu heksadecimalne notacije, a vrijedi i sljedeće: što je vrijednost veća, to je boja svjetlija, 255 je maksimum. Kao alternativa, moguće je i podatke o procentima, ali to je vrlo rijetko.

U liniji (7) učitavamo u registar DX adresa poruke koja će biti objavljena (u ovom primjeru to će biti stringZdravo, svijete!$).

Prekidi će biti detaljno obrađeni u budućim izdanjima. Evo reći ću nekoliko riječi.

Prekini MS-DOS je vrsta potprograma (dio MS DOS), koji se trajno nalazi u memoriji i može se pozvati u bilo kojem trenutku iz bilo kojeg programa.

Razmotrite gore navedeno na primjeru (istaknite bilješke malim slovima):

Program za sabiranje dva broja

HomePrograms

A=5 u varijablu A unosimo vrijednost 5

B=8 na vrijednost varijable B 8

Dodavanje potprograma

sada je C 13

A=10 isti, samo različiti brojevi

B=25

Dodavanje potprograma

sada C ima 35

Kraj programa

Subrutine Addition

C=A+B

ReturnFrom Subrutine vraćamo se na mjesto odakle smo zvali

Kraj potprograma

U ovom primjeru smo dva puta pozvali potprogram Dodatak, koji je dodao dva broja koja su mu proslijeđena u varijablama A i B . Rezultat se stavlja u varijablu C. Kada se podprogram pozove, računar pamti odakle je pozvan, a onda kada potprogram završi, računar se vraća na mesto odakle je pozvan. To. Možete pozivati ​​potprograme neograničen broj puta s bilo kojeg mjesta.

Kada izvršavamo liniju (8) asemblerskog programa, pozivamo potprogram (u ovom slučaju nazvan prekid) koji ispisuje liniju na ekran. Da bismo to učinili, mi, zapravo, stavljamo potrebne vrijednosti u registre. Sav potreban rad (izlaz linije, kretanje kursora) obavlja potprogram. Ovaj red se može čitati ovako: nazivamo dvadeset prvi prekid ( int sa engleskog. prekinuti prekid). Imajte na umu da iza broja 21 stoji slovo h . Ovo je, kao što već znamo, heksadecimalni broj (33 u decimali). Naravno, ništa nas ne sprečava da liniju zamijenimo int 21h do int 33. Program će raditi ispravno. Samo što je u Assembleru uobičajeno da se broj prekida označava heksadecimalno.

U redu (10) mi, pogađate, prekidamo poziv 20 h . Da biste pozvali ovaj prekid, ne morate specificirati nikakve vrijednosti u registrima. Obavlja samo jedan zadatak: izlazak iz programa (izlazak u DOS). Kao rezultat prekida od 20h, program će se vratiti tamo gdje je pokrenut (učitan, pozvan). Na primjer, u Norton Commander ili DOS Navigator.

Red (12) sadrži poruku koju treba ispisati. Prva riječ ( poruka poruka) naziv poruke. To može biti bilo šta (npr. nered ili niz, itd.). O obratite pažnju na red (7), u koji učitavamo u registar DX našu adresu poruke.

Možemo kreirati drugu liniju, koju ćemo nazvati nered2. Zatim, počevši od reda (9), unesite sljedeće naredbe:

(10) mov dx,offset Mess2

(13) Poruka db "Hello, world!$"

(14) Mess2 db "To sam ja! $"

i ponovo sastavite naš program. Nadam se da pogađate šta će se dogoditi

Obratite pažnju na poslednji znak u redovima Poruka i Mess2 - $. Pokazuje na kraj linije. Ako ga uklonimo, onda 21 h prekid će nastaviti sa izlazom sve dok se ne naiđe na karakter negdje u memoriji $. Na ekranu ćemo vidjeti smeće .

Ako imate debugger, možete vidjeti kako će naš program raditi.

Svrha ovog izdanja nije bila razumijevanje detaljno sa svakim operaterom. Ovo je nemoguće, jer još uvek nemate dovoljno znanja. Vjerujem da ćete nakon 3-4 izdanja razumjeti princip i strukturu programa u Assembleru. Možda ste mislili da je asemblerski jezik izuzetno komplikovan, ali vjerujte mi, na prvi pogled.

Rice. 13.1.

Heksadecimalni brojevni sistem je prvi za nas, čija abeceda uključuje brojeve koji se ne poklapaju uvek u pravopisu sa decimalnim – ima samo još šest cifara. Međutim, abecedu ovog sistema, u opštem slučaju, prikladno je smatrati tradicionalnim (vidi § 2), što znači da sadrži brojeve prikazane na sl. 13.1. Sa pojavom "novih" brojeva (u odnosu na uobičajeni decimalni sistem), za njih se koriste nazivi koji su još uvijek neprihvatljivi. Na primjer, ne bismo mogli reći prije "broj deset", ili "broj četrnaest" (podsjetimo da je ipak broj jedan znak - vidi § 23 "Uvod u računarstvo"). Sada je to ne samo sasvim prihvatljivo, već se na drugačiji način ovi "novi" brojevi mogu nazvati samo onako kako je to uobičajeno u jezicima koji koriste latinično pismo.

Dakle, A je deset, B je jedanaest, C je dvanaest, D je trinaest, E je četrnaest, i konačno F je petnaest.

Rice. 13.2.

Klasični heksadecimalni sistem je pozicioni. Drugim riječima, u odnosu na brojeve izgrađene prema njegovim pravilima, ima smisla govoriti o njihovim ciframa. Cifre heksadecimalnih brojeva nazivaju se na sljedeći način: cifra jedinica, cifra šesnaest, dvjesto pedeset šest itd. Kao što vidimo, grade se prema nazivu broja koji nastaje podizanjem osnovice (osnova ) brojevnog sistema na sledeći stepen - broj 16. Nazivi nekih cifara celog i razlomka heksadecimalnog broja vidljivi su sa sl. 13.2.

Ponekad heksadecimalni broj ne sadrži decimalni indeks koji označava bazu. Umjesto toga, može se naznačiti latinično slovo "H", koje se nalazi na kraju broja i pokazuje da je broj napisan u heksadecimalnom obliku. Ova notacija se često koristi u stručnoj literaturi o informatici. Treba to imati na umu H je zamjena indeksa, a ne cifra! Što, međutim, izgleda sasvim prirodno ako pogledate abecedu brojevnog sistema.

    • Slovo "H" je skraćenica engleska riječ heksadimalni, što znači heksadecimalni (broj). Druga često korištena skraćenica za ovu riječ je "hex", što znači istu stvar (na primjer, koristi se u standardnoj aplikaciji operativni sistem Windows "Kalkulator", o tome možete pročitati u §1 "Standardne aplikacije operativnog sistema Windows" / "Program" Kalkulator ").

Heksadecimalni sistem brojeva sa jednom cifrom opisuje sadržaj grickalice. Bilo koji dvocifreni heksadecimalni broj prikladno predstavlja sadržaj jednog bajta. Iz tog razloga, brojevni sistem koji se proučava ima široku primjenu u informatičkim i inženjerskim disciplinama, uz učešće kojih se razvija digitalna tehnologija.

Biti blisko povezan sa binarni sistem broj (kao, zapravo, oktalni sistem), omogućava da jedan znak opiše trenutnu vrijednost svojstva objekta ako je broj mogućih vrijednosti ovog svojstva 16, ili trenutne vrijednosti logičkih svojstava objekta, ako je broj ovih svojstava 4 i one su međusobno kombinovane.