Rabu, 22 Juni 2011

Satuan Bit dan Byte

BIT - merupakan satuan data terkecil. Terdiri dari 1 atau 0. Biasa disebut dengan “Binary”.
BYTE – terdiri dari 8 bit. Memiliki nilai maksimal 225 (0-225). Biasa disebut sebagai “base 16 system” sedangkan binary disebut “base 2 system”.
WORD – merupakan 2 byte atau 16 bit. Word memiliki nilai maksimal 0FFFFh atau 65535d.
DOUBLE WORD – terdiri dari 2 word atau 32 bit. Nilai maksimal = 0FFFFFFFF atau 4294967295d.
KILOBYTE – 1000 bytes?? Bukan. 1 kilobyte tidak sama dengan 1000 bytes. 1 kilobyte sama dengan 1024 (32 * 32) bytes.
MEGABYTE – 1 Megabyte tidak sama dengan 1000000 bytes, tetapi 1024 * 1024 atau 1048578 bytes.
II. Register
Register adalah tempat khusus pada komputer, dimana kita bisa melakukan penyimpanan data. Kita bisa melihat register sebagai sebuah “kotak”, dimana di dalamnya kita bisa menyimpan sesuatu seperti : nama, nomor, kalimat. Kita bisa melihat register sebagai tempat penyimpanan.
Saat ini, kebanyakan komputer menggunakan 9 register 32bit. Yaitu :
EAX: Extended Accumulator Register
EBX: Extended Base Register
ECX: Extended Counter Register
EDX: Extended Data Register
ESI: Extended Source Index
EDI: Extended Destination Index
EBP: Extended Base Pointer
ESP: Extended Stack Pointer
EIP: Extended Instruction Pointer
Umumnya, ukuran register adalah 32 bit (4 bytes). Bisa menampung data dari 0 – 0FFFFFFFF. Pada awal, kebanyakan register mempunyai fungsi utama yang memiliki nama yang berarti, seperti ECX = Counter, tetapi saat ini kita bisa menggunakan register apapun yang kita sukai sebagai counter. Fungsi EAX, EBX, ECX, EDX, ESI, dan EDI akan dijelaskan saat saya menjelaskan fungsi tertentu yang digunakan pada register tersebut.

EBP : EBP paling banyak berhubungan dengan stack dan stack frames.
ESP : ESP menunjuk ke stack dari proses yang sedang terjadi. Stack adalah tempat dimana data disimpan, dan akan digunakan nantinya (untuk lebih detail, kita pelajari dahulu proses pop/push)
EIP : EIP selalu menunjuk kepada instruksi berikutnya yang akan dieksekusi.
Ada 1 hal penting yang perlu kita ketahui tentang register : walaupun besarnya 32bit, tapi beberapa bagian (16bit bahkan 8bit) tidak bisa diakses secara langsung. Yang memungkinkan yaitu :
32bit Register 16bit Register 8bit Register
EAX AX AH/AL
EBX BX BH/BL
ECX CX CH/CL
EDX DX DH/DL
ESI SI —–
EDI DI —–
EBP BP —–
ESP SP —–
EIP IP —–
Sebuah register terlihat seperti berikut :
|—————————— EAX: 32bit (=1 DWORD =4BYTES) ————————-|
|——- AX: 16bit (=1 WORD =2 BYTES) —-|
|- AH:8bit (=1 BYTE)-|- AL:8bit (=1 BYTE)-|
Jadi EAX adalah nama dari register 32 bit, AX adalah “Low Word” (16 bit) dari EAX dan AL/AH (8 bit) adalah nama dari “Low Part” dan “High Part” dari AX. Btw, 4 bytes adalah 1 DWORD dan 2 bytes adalah WORD. Masih ingat kan :D ?
Pengelompokkan berdasarkan ukuran
1. Byte-size-register : Seperti namanya, register ini memiliki ukuran tepat 1 byte. Hal ini tidak berarti 32 bit diisi semuanya dengan data. Register yang kosong diisi dengan 0. Berikut adalah register-register byte-size, semuanya berukuran 1 byte atau 8 bit.

* AL dan AH
* BL dan BH
* CL dan CH
* DL dan DH

2. Word-size-register : berukuran 1 word (= 2 bytes = 16 bit). Sebuah register word-size terdiri dari 2 register byte-size. Kita bisa mengelompokkannya berdasarkan tujuan yaitu :
a. Umum

* AX (word-size) = AH + AL -> “+” bukan berarti menjumlahkan. AH dan AL bersifat independent., tapi mereka bersama berada pada AX. Hal ini berarti jika kita mengubah AL atau AH, secara otomatis kita juga mengubah AX. :)
* AX -> accumulator, sering digunakan untuk operasi matematika
* BX -> base , digunakan sebagai konjungsi pada stack
* CX -> counter
* DX -> data , kebanyakan digunakan sebagai reminder pada operasi matematika disimpan
* DI -> Destination Index , sebagai contoh sebuah string dicopykan pada DI
* SI -> Source Index, sebagai contoh sebuah string dicopykan dari SI

b. Index

* BP -> Base Pointer, menunjuk pada posisi tertentu pada stack
* SP -> Stack Pointer, menunjuk pada posisi tertentu pada stack

c. Segment

* CS -> Code Segment, instruksi aplikasi yang dieksekusi
* DS -> Data Segment, data yang dibutuhkan
* ES -> Extra Segment

d. Spesial

* IP -> Instruction Pointer , menunjuk ke instruksi berikutnya

3. DoubleWord-size-register
2 words = 4 bytes = 32 bits. EAX, EBX, ECX, EDX, EDI, …
Jadi kalau ada huruf “E” di depan 16bit, itu berarti 32 bit. Jadi AX = 16 bits, dan EAX adalah versi 32bit.
Sumber : Woodmann

Tidak ada komentar:

Posting Komentar