1 BIT: 0
Jedan bit je najmanji deo podatka koji postoji. Bit je ili jedan (1) ili nula (0).
1 NIBBLE(nibl): 0000
4 Bita
Nibl je cetiri bita ili pola bajta. Primetite da ima maksmalnu vrednost koje je 15 (1111 = 15). To je osnova za heksadecimalni sistem (sa osnovom 16) koji se koristi zato sto je lak za razumevanje. Heksadecimalni brojevi se krecu od 1 do F (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) i naglasavaju se tako sto se posle cifara pise "h": Fh = 15 decimalno. Heksadecimalni brojevi koji pocinju sa karakterom u prefiksu imaju nulu (0).
1 BYTE(bajt): 00000000
2 Nibla
8 Bita
Bajt ima 8 bita ili 2 nibla. Njegova maksimalna vrednost je FFh (255 decimalno). Zato sto se bajt sastoji od 2 nibla heksadecimalna reprezentacija su dve heksadecimalne cifre: 3Dh. Registri su takodje velicine jednog bajta, ali o tome cemo da pricamo kasnije.
1 WORD(rec): 0000000000000000
2 Bajta
4 Nibla
16 Bita
Rec predstavlja dva bajta koja se tretiraju zajedno. Rec ima maksimalnu vrednost
FFFFh (65536 decimalno). Sobzirom da se rec sastoji od 4 nibla, predstavlja se
pomocu 4 heksadecimalne cifre.To je takodje i velicina 16-bitnog registra.
Registri
Registri su mesto u CPU-u u koje mogu da se smeste brojevi i gde moze njima da se manipulise. Postoje tri velicine registara 8-bitni, 16-bitni i na 386 i visim procesorina 32-bitni. Postoje cetiri vrste registara: registri opste namene, segmentni registri, indeks registri i stek registri. Tim redom cemo ih i opisati.
Ako je u AX smesten broj 24689,
to bi u registru izgledalo:
AH | AL |
01100000 | 01110001 |
AH je 96 a u AL mora da je 113. Ako dodate 1 na 24689 (24690) AL ce biti 114 a AH se nece promeniti. Registri SI, DI, SP i BP se mogu koristiti kao registri opste namene ali imaju i specificnu svrhu. Takoje, oni ne mogu da se podele na dva dela.
IP je indeks registar ali moze se njime ne moze manipulisati direktno jer cuva adresu sledece instrukcije.
OFFSET = SEGMENT * 16
SEGMENT = OFFSET / 16 (najniza cetiri bita su izgubljena)
Jedan registar sadrzi segment a drugi registar offset. Ako ih "spojimo" dobijamo 20-bitnu adresu
SEGMENT | 0010010000010000____ |
OFFSET | ____0100100000100010 |
20-bit Address | 00101000100100100010 |
DS sadrzi segment a SI sadrzi offset. Kako su oni po 16 bita adresa se preklapa. Eto kako se DS:SI koristi da bi se napravila 20-bitna adresa. Standardano predstavljanje za segment/offset par je: SEGMENT:OFFSET
Segment registri su: CS, DS, ES, SS. Na 386+ postoje i FS i GS.
Offset registri su: BX, DI, SI, BP, SP, IP. Na 386+ bilo koji registar
opste namene (ne segment registar) se moze koristiti kao offset registar.
(Osim IP, kome ne moze da se pristupa direktno).
Stek
Sobzirom da imamo samo 6 registara koji se koriste za skoro sve
operacije sigurno se pitas kako da to prebrodis. Prosto je.
Postoji nesto sto se zove stek, sto je u stvari oblast memorije
u koju mozes da smestas i iz koje mozes da citas vrednosti i
time sebi stvoris prostor za vise operanada za manipulaciju.
Ova oblast memorije je kao diskovi na stapu, onaj koji je stavljen poslednji, skida se prvi sa stapa.To se zove Last In First Out (LIFO).
Ako se nova vrednost stavi na stek, stek raste na dole. Kao sto se vidi stek pocinje na visim adresama i raste na dole. Mora da se pazi koliko se podataka stavlja na stek da se ne bi prepunio (overflow).