Halaman

Rabu, 07 November 2012

Register

Register 

    Register merupakan alat penyimpanan kecil yang mempunyai kecepatan akses cukup tinggi, yang digunakan untuk menyimpan data dan/atau instruksi yang sedang diproses, dan dibentuk oleh 16 titik elektronis di dalam chip mikroprosessor itu sendiri. Dengan adanya tempat-tempat penampungan data sementara ini, proses pengolahan akan bisa dilakukan secara jauh lebih cepat dibandingkan apabila data-data tersebut harus diambil langsung dari lokasi-lokasi memori.

    Register yang dibahas di sini adalah register-register yang terdapat pada mikroporsesor keluarga Intel dari 80386-80486, yang mana terdiri dari : general purpose register (register serbaguna), pointer register (register pointer), index register (register indeks), segment register (register segmen), dan flag register (register status). Register-register tersebut semuanya menggunakan register 32-bit, kecuali register segmen yang hanya memiliki lebar 16-bit. Selain sebagai register 32-bit, register lain (selain register segmen) dapat digunakan sebagai register 16-bit, dan khusus untuk register serbaguna dapat digunakan untuk register 8-bit.

    Pada masa mikroprosesor 16-bit, semua registernya adalah 16-bit, kecuali register serbaguna yang dapat berfungsi sebagai register 16-bit dan 8-bit. Sedangkan pada masa mikroprosesor 8-bit register-registernya adalah register 8-bit, kecuali register status yang lebarnya 16-bit.

Berikut adalah penjelasan dari masing-masing register di atas.
1. General Purpose Register
General purpose register adalah register yang dipakai untuk keperluan-keperluan umum pemrograman. Setiap register ini dapat dialamati sebagai register 32-bit, register 16-bit, dan register 8-bit.
Berikut adalah register serbaguna serta fungsi-fungsi khususnya.
a) Accumulator Register
Accumulator register merupakan register serbaguna yang berfungsi sebagai:
a. tempat penyimpanan sementara hasil suatu operasi aritmatika atau logika;
b. tempat memasukkan nomor layanan interupsi, untuk keperluan pemesanan sebuah layanan interupsi;
c. tempat menyimpan bilangan yang dikalikan dan setengah bagian terkecil dari suatu perkalian; dan
d. tempat menyimpan setengah bagian terkecil sebuah bilangan yang akan dibagi dan hasil bagi suatu pembagian.

b) Base Register
Base register adalah register serbaguna yang berfungsi sebagai tempat menyimpan alamat offset data yang terletak di memori.

c) Counter Register
Counter register adalah register serbaguna yang berfungsi sebagai:
a. pencacah untuk operasi loop;
b. pencacah untuk operasi shift dan rotate; dan
c. pencacah untuk operasi string.

d) Data Register
Data register merupakan register serbaguna yang berfungsi sebagai:
a. tempat menyimpan setengah bagian terbesar hasil suatu perkalian bilangan 16-bit dan 32-bit;
b. tempat menyimpan setengah bagian terbesar suatu bilangan yang akan dikenai operasi pembagian, serta sisa suatu pembagian.

2. Pointer Register
Pointer register ini sebenarnya dapat berfungsi sebagai register serbaguna, akan tetapi register ini lebih sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori. Penunjukan alamat ini biasanya dibutuhkan pada saat operasi perpindahan data dari atau ke memori, operasi stack, dan penunjukan alamat suatu instruksi yang akan dieksekusi.

Berikut ini adalah register-register yang termasuk dalam kategori pointer register beserta fungsi-fungsi khususnya.
a) Stack Pointer Register (SP dan ESP)
Berpasangan dengan register SS, ditulis sebagai “SS:SP”, stack pointer register berfungsi untuk:
a. menunjukkan alamat stack memori pada operasi PUSH dan POP.
b. menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur dan mengarahkan kembali control unit ketika prosedur yang dipanggil telah selesai dieksekusi.

b) Base Pointer Register (BP)
Berpasangan dengan register SS, ditulis sebagai “SS:BP”, base pointer register berfungsi untuk menunjukkan alamat sebuah data di suatu lokasi memori.

c) Instruction Pointer Register (IP)
Berpasangan dengan register CS, ditulis sebagai “CS:IP”, yang berfungsi untuk menunjukkan alamat instruksi berikutnya.

3. Index Register
Sama halnya dengan Pointer Register, Index Register ini dapat digunakan sebagai sebuah register serbaguna, akan tetapi lebih sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori pada operasi-operasi string.

Berikut adalah register-register yang termasuk dalam kategori index register.
a) Source Index (SI)
Source Index Register biasanya digunakan pada operasi string untuk mengakses alamat suatu data di dalam memori secara langsung.

b) Destination Index (DI)
Fungsi dari Destination Index Register juga sama seperti Source Index Register, yakni digunakan pada operasi string untuk mengakses alamat suatu data di dalam memori secara langsung.

4. Segment Register
Terdiri dari 4 register, yaitu code segment, data segment, stack segment, dan extra segment. Segment adalah bagian dari ruang memori yang berkapasitas 64 kilobyte (65536 byte) dan digunakan secara spesifik untuk menempatkan jenis-jenis data tertentu. Misalnya code segment digunakan oleh program dan instruksi-instruksi (code), data segment dialokasikan untuk data-data, stack segment dipakai untuk menyediakan ruang untuk stack, yang berfungsi untuk penyimpanan data dan alamat sementara pada saat program utama sedang mengerjakan program percabangan, dan extra segment sebagaimana halnya data segment juga dipergunakan sebagai penempatan data-data.

Berikut adalah register-register yang termasuk kategori Segment Register yaitu:
1. Code Segment (CS)
Berfungsi untuk menunjukkan alamat instruksi berikutnya.
2. Data Segment (DS)
Berfungsi untuk menunjukkan alamat data operasi pemindahan data
3. Extra Segment (ES)
Merupakan register segment tambahan yang digunakan pada operasi-operasi string.
4. Stack Segment (SS)
a. Menunjukan alamat stack memori pada operasi push dan pop
b. Menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur dan mengarahkan kembali eksekusi ke program utama.
5. FS dan GS Register
Merupakan register segmen tambahan pada 80836-80486 sehingga segmen memori yang dapat diakses oleh program menjadi lebih besar.
6. Flag Register
Flag Register berfungsi untuk menunjukkan status sesaat dari mikroprosesor. Bit-bit pada flag register akan mengalami perubahan, tergantung proses yang baru saja berlangsung. Bit-bit tersebut adalah sebagai berikut:
1. C (carry): mengindikasikan ada/tidaknya bawaan (carry) setelah operasi pengurangan. C = 1 berarti ada bawaan, C = 0 berarti tidak ada bawaan. Bit C berfungsi mengidentifikasi kesalahan (error) pada beberapa program dan prosedur (procedure).
2. P (parity): mengindikasikan jumlah bit dalam suatu data. P = 0 berarti paritasnya ganjil, P = 1 berarti paritasnya genap. Paritas dapat digunakan untuk pengecekan kesalahan pengiriman data.
3. A (auxiliary carry): mengindikasikan ada/tidaknya bawaan (carry) pada bit ke-3 dan ke-4 setelah operasi pengurangan. A=1 berarti ada bawaan, A=0 berarti tidak ada bawaan. Bit A ini relatif jarang digunakan dalam pemrograman.
4. Z (zero) : mengindikasikan apakah hasil suatu operasi aritmatika atau logika bernilai nol atau bukan. Bila Z = 1 berarti hasilnya nol dan Z = 0 berarti hasilnya bukan nol. Bit Z ini hampir sama dengan bit C, yakni berfungsi untuk mengidentifikasi kesalahan dalam suatu program.
5. S (sign) : mengindikasikan apakah hasil suatu operasi aritmatika atau logika positif atau negatif. Bila S = 1 berarti hasil negatif dan S = 0 berarti hasilnya positif.
6. T (trap) : bila di set 1, dimungkinkan melakukan debugging (penelusuran kesalahan).
7. I (interrupt) : mengendalikan operasi interupsi perangkat keras. Bila I = 1 berarti pin INTR enable (bisa digunakan), bila I = 0 berarti INTR disable (tidak bisa digunakan). Untuk mengendalikannya dapat dilakukan dengan instruksi STI (mengeset I=1) dan CLI (mereset I=0).
8. D (direction) : mengendalikan arah pencacahan (increment atau decrement) DI dan SI pada operasi string. Bila D = 1 arah pencacahan adalah turun (decrement), bila D = 0 pencacahan naik (increment). Untuk mengendalikannya bisa dengan instruksi STD (mengeset D=1) dan CLD (mereset D=0).
9. O (overflow) : mengindikasikan apakah hasil operasi penjumlahan atau pengurangan melampaui kapasitas mesin atau tidak.
10. IOPL (input-output privilege level) : digunakan untuk operasi protected mode untuk memilih tingkat keistimewaan (privilege level) piranti masuk-keluaran.
11. NT (nested task) : mengindikasikan apakah operasi yang sedang dilakukan digandeng (nested) dengan operasi lain pada operasi protected mode.
12. RF (resume) : digunakan saat debugging untuk mengendalikan kelanjutan eksekusi.
13. VF (virtual mode) : memilih operasi virtual mode pada operasi protected mode.
14. AC (alignment check) : untuk mengecek apakah suatu data word atau doubleword dialamati ke memori yang bukan data word atau bukan doubleword.

0 komentar:

Posting Komentar