PENGERTIAN REGISTER
Dalam pemrograman dengan bahasa Assembly, mau tidak mau anda harus berhubungan dengan apa yang dinamakan sebagai Register. Lalu apakah yang dimaksudkan dengan register itu sebenarnya ?.
Register merupakan sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaannya mikroprosesor selalu menggunakan register-register sebagai perantaranya, jadi register dapat diibaratkan sebagai kaki dan tangannya mikroprosesor.
JENIS-JENIS REGISTER
Register yang digunakan oleh mikroprosesor dibagi menjadi 5 bagian dengan tugasnya yang berbeda-beda pula, yaitu :
Segmen Register
Register yang termasuk dalam kelompok ini terdiri atas register CS,DS,ES dan SS yang masing-masingnya merupakan register 16 bit. Register-register dalam kelompok ini secara umum digunakan untuk menunjukkan alamat dari suatu segmen.
Register CS (Code Segment) digunakan untuk menunjukkan tempat dari segmen yang sedang aktif, sedangkan register SS (Stack Segment) menunjukkan letak dari segmen yang digunakan oleh stack. Kedua register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya.
Register DS (Data Segment) biasanya digunakan untuk menunjukkan tempat segmen dimana data-data pada program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada program residen.
Register ES (Extra Segment), sesuai dengan namanya adalah suatu register bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya digunakan untuk menunjukkan suatu alamat di memory, misalkan alamat memory video.
Pada prosesor 80386 terdapat tambahan register segment 16 bit, yaitu FS
Pointer dan Index Register
Register yang termasuk dalam kelompok ini adalah register SP,BP,SI dan DI yang masing-masing terdiri atas 16 bit. Register- register dalam kelompok ini secara umum digunakan sebagai penunjuk atau pointer terhadap suatu lokasi di memory.
Register SP (Stack Pointer) yang berpasangan dengan register segment SS(SS:SP) digunakan untuk mununjukkan alamat dari stack, sedangkan register BP (Base Pointer)yang berpasangan dengan register SS(SS:BP) mencatat suatu alamat di memory tempat data.
Register SI (Source Index) dan register DI (Destination Index) biasanya digunakan pada operasi string dengan mengakses secara langsung pada alamat di memory yang ditunjukkan oleh kedua register ini. Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu ESP,EBP,ESI dan EDI.
General Purpose Register
General Purpose adalah register-register serbaguna, sering dimanfaatkan untuk keperlua-keperluan lain yang bukan merupakan fungsi khasnya dan untuk menampung secara sementara data-data yang akan diolah, sebelum diambil dan diproses oleh ALU (Arithmetic and Logical Unit), walaupun demikian ada juga instruksi-instruksi tertentu yang mengharuskan penggunaan register-register secara spesifik (sesuai fungsi sebenarnya), yang mempunyai 16 bit, dan dapat digunakan penuh 16 bit (1 word = 1 kata) atau 8 bit (1 byte = 1 karakter) saja.
Register yang termasuk dalam kelompok ini adalah register AX,BX,CX dan DX yang masing-masing terdiri atas 16 bit. Register- register 16 bit dari kelompok ini mempunyai suatu ciri khas, yaitu dapat dipisah menjadi 2 bagian dimana masing-masing bagian terdiri atas 8 bit, seperti pada gambar 4.1. Akhiran H menunjukkan High sedangkan akhiran L menunjukkan Low.
Secara umum register-register dalam kelompok ini dapat digunakan untuk berbagai keperluan, walaupun demikian ada pula penggunaan khusus dari masing-masing register ini yaitu :
1. Register AX, secara khusus digunakan pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan.
2. Register BX, biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segmen.
3. Register CX, digunakan secara khusus pada operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi.
4. Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit. Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu EAX, EBX, ECX dan EDX.
Index Pointer Register
Register IP berpasangan dengan CS(CS:IP) menunjukkan alamat dimemory tempat dari intruksi(perintah) selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit. Pada prosesor 80386 digunakan register EIP yang merupakan register 32 bit
Flags Register
Sesuai dengan namanya Flags(Bendera) register ini menunjukkan kondisi dari suatu keadaan< ya atau tidak >. Karena setiap keadaan dapat digunakan 1 bit saja, maka sesuai dengan jumlah bitnya, Flags register ini mampu memcatat sampai 16 keadaan. Adapun flag yang terdapat pada mikroprosesor 8088 keatas adalah :
1. OF
Jika terjadi OverFlow pada operasi aritmatika, bit ini akan bernilai 1.
2. SF
Jika digunakan bilangan bertanda bit ini akan bernilai 1.
3. ZF
Jika hasil operasi menghasilkan nol, bit ini akan bernilai 1.
4. CF
Jika terjadi borrow pada operasi pengurangan atau carry pada penjumlahan, bit ini akan bernilai 1.
1. PF
Digunakan untuk menunjukkan paritas bilangan. Bit ini akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap.
2. DF
Digunakan pada operasi string untuk menunjukkan arah proses.
3. IF
CPU akan mengabaikan interupsi yang terjadi jika bit ini 0.
4. TF
Digunakan terutama untuk Debugging, dengan operasi step by step.
5. AF
Digunakan oleh operasi BCD, seperti pada perintah AAA.
6. NT
Digunakan pada prosesor 80286 dan 80386 untuk menjaga jalannya interupsi yang terjadi secara beruntun.
7. IOPL
Flag ini terdiri atas 2 bit dan digunakan pada prosesor 80286 dan 80386 untuk mode proteksi.
Adapun susunan dari masing-masing flag didalam flags register dapat anda lihat pada gambar diatas. Pada prosesor 80286 dan 80386 keatas terdapat beberapa tambahan pada flags register, yaitu :
1. PE
Digunakan untuk mengaktifkan mode proteksi. flag ini akan bernilai 1 pada mode proteksi dan 0 pada mode real.
2. MP
Digunakan bersama flag TS untuk menangani terjadinya intruksi WAIT.
3. EM
Flag ini digunakan untuk mensimulasikan coprosesor 80287 atau 80387.
4. TS
Flag ini tersedia pada 80286 keatas.
5. ET
Flag ini digunakan untuk menentukan jenis coprosesor 80287 atau 80387.
6. RF
Register ini hanya terdapat pada prosesor 80386 keatas.
7. VF
Bila flag ini bernilai 1 pada saat mode proteksi, mikroprosesor akan memungkinkan dijalankannya aplikasi mode real pada mode proteksi. Register ini hanya terdapat pada 80386 keatas.
RTC DS12C887: Register Kontrol
DS12C887 mempunyai 14 buah register yang terdiri dari 4 Register Kontrol dan 10 Register Data. Register Data sendiri terpisah menjadi register waktu dan Register Alarm sebagaimana ditunjukkan pada gambar 1. Setelah Register-register Kontrol diinisialisasi, maka data waktu ataupun alarm dapat dibaca atau ditulisi dengan cara mengakses register-register data yang bersangkutan.
DS12C887 memiliki empat register kontrol yang bisa diakses sepanjang waktu, meskipun selama siklus pembaharuan (update cycle)
• UIP : Bit ini digunakan untuk memantau Flag Update In Progress (UIP). Jika bit ini bernilai 1, maka Update Transfer akan segera muncul, namun bila bit ini bernilai 0, maka Update transfer hanya akan muncul setelah 244 uDetik kemudian.
• DV0, DV1, DV2 : Ketiga bit ini berfungsi untuk mengatur osilator ON atau OFF, dan me-RESET hitung mundur. Kofigurasi 010 digunakan untuk mengatur osilator ON, konfigurasi 11x digunakan untuk mengatur agar perhitungan mundur ditahan.
• RS0, RS1, RS2 dan RS3 : Bit-bit ini digunakan untuk memilih 15 tingkat pembagi frekwensi yang dapat digunakan untuk membangkitkan sinyal luaran pada pin SQW atau Interupsi periodik. Tabel berikut menunjukkan berbagai macam kemungkinan frekuensi luaran SQW dan laju Interupsi Peiodik berdasar nilai-nilai RS0, RS1, RS2, dan RS3.
• SET : Apabila bit ini bernilai 0, maka register data dapat diupdate setiap detiknya, namun apabila bit ini bernilai 1, maka register data tidak dapat diupdate. Bit ini tidak akan berpengaruh terhadap kondisi RESET.
• PIE : Periodic Interrupt Enable, merupakan sebuah bit baca/tulis yang membolehkan bit PF atau Periodic Interrupt Flag pada Register C meng-nol-kan pin luaran IRQ. Jika PIE = 1, maka interupsi periodik akan dihasilkan dengan meng-nol-kan pin luaran IRQ dengan laju yang ditentukan oleh RS0 s/d RS2 (lihat penjelasan sebelumnya).
• AIE : Alarm Interrupt Enable, bit yang membuat bit Alarm Flag dapat membangkitkan kondisi LOW pada pin IRQ. Kondisi RESET akan mengubah bit ini menjadi clear atau bernilai 0.
• UIE : Update Ended Interrupt Enable, bit yang membuat bit Update End Flag (UF) dapat membangkitkan kondisi LOW pada pin IRQ. Kondisi RESET atau logika 1 pada bit SET akan membuat bit ini berubah menjadi clear (bernilai 0).
• SQWE : Apabila bit ini bernilai 1, maka gelombang kotak dengan frekwensi yang ditentukan oleh pembagi frekwensi pada RS0 s/d RS3 akan dihasilakn melalui pin SQW.
• DM : DM = 1 untuk mode binary dan DM = 0 untuk data BCD pada Register Data.
• 24/12: Apabila bit ini bernilai 1, maka waktu berjalan berdasarkan 24 jam dan sebaliknya bila bit ini bernilai 0, maka waktu berjalan berdasarkan 12 jam.
• DSE : Daylight Saving Enable, apabila bit ini bernilai 1, maka akan terjadi proses update pada saat 1:59:59 AM menjadi 3:00:00 AM pada Hari Minggu pertama bulan April dan saat 1:59:59 AM menjadi 1:00:00 AM pada Hari Minggu terakhir Bulan Oktober.
• IRQF : Interrupt Request Flag, bit ini akan bernilai 1 apabila salah satu dari bit PF, AF dan UF juga bernilai 1.
• PF : Periodic Interrupt Flag, bit ini akan bernilai 1 secara periodik (tergantung bit RS0 s/d RS3). Apabila bit PIE aktif, maka kondisi SET pada bit PF akan membangkitkan kondisi LOW pada pin IRQ. Bit ini akan bernilai 0 saat pembacaan pada Register C atau kondisi RESET.
• AF : Alarm Interrupt Flag, bit ini akan bernilai 1 saat waktu sekarang cocok dengan waktu yang diatur pada alarm. Apabila bit AIE aktif, maka kondisi SET pada bit AF akan membangkitkan kondisi LOW pada pin IRQ. Bit ini akan bernilai 0 saat pembacaan pada Register C atau kondisi RESET.
• UF: Update Ended Interrupt Flag, bit ini siklus update. Apabila bit UIE aktif maka kondisi SET pada bit ini akan membangkitkan kondisi LOW pada pin IRQ. Bit ini akan bernilai 0 (Clear) saat pembacaan pada Register C atau kondisi RESET
• VRT: Bit The Valid RAM and Time ini merupakan indikator kondisi baterai yang terhubungkan ke pin Vbat. Bit ini tidak bisa ditulisi, dan seharusnya bernilai 1 terus saat dibaca. Jika terjadi nilai 0, artinya terjadi pelemahan arus/tegangan pada baterai, dan simpanan data RTC dan RAM menjadi dipertanyakan. Bit ini tidak dipengaruhi RESET.
Tabel Peta Memori Pada IBM PC
Blok Memori Alokasi Pemakaian
F 0 0 0 0 ROM BIOS, Diagnostic, BASIC
E 0 0 0 0 ROM program
D 0 0 0 0 ROM program
C 0 0 0 0 Perluasan BIOS untuk hardisk XT
B 0 0 0 0 Monokrom Monitor
A 0 0 0 0 Monitor EGA, VGS, dll
9 0 0 0 0 Daerah kerja pemakai s/d 640 KB
8 0 0 0 0 Daerah kerja pemakai s/d 576 KB
7 0 0 0 0 Daerah kerja pemakai s/d 512 KB
6 0 0 0 0 Daerah kerja pemakai s/d 448 KB
5 0 0 0 0 Daerah kerja pemakai s/d 384 KB
4 0 0 0 0 Daerah kerja pemakai s/d 320 KB
3 0 0 0 0 Daerah kerja pemakai s/d 256 KB
2 0 0 0 0 Daerah kerja pemakai s/d 192 KB
1 0 0 0 0 Daerah kerja pemakai s/d 128 KB
0 0 0 0 0 Daerah kerja pemakai s/d 64 KB
• Blok A - F (masing-masing berkapasitas 64 Kb), dialokasikan untuk keperluan-keperluan program pengendali peralatan luar seperti monitor dan hardisk serta BIOS (Basic Input Output System).
• Blok memori A adalah lokasi-lokasi ruang memori yang mempunyai alamat dari A0000 sampai dengan AFFFF, besarnya 65636 byte. Blok ini dipergunakan untuk penempatan informasi-informasi yang akan ditayangkan ke monitor, melalui jenis-jenis monitor mutakhir seperti EGA dan VGA. Disebut sebagai ‘perluasan memori tampilan' (display memory expansion).
• Blok memori B, dianggap sebagai blok konvensional bagi pengiriman informasi ke layar monitor. Produk-produk pertama IBM PC menggunakan blok ini untuk keperluan tersebut melalui monitor monokrom.
• Blok memori C dimanfaatkan sejak keluarnya IBM XT, yaitu peningkatan unjuk kerja dari IBM PC orisinil. Pada IBM XT inilah pertama kali digunakan hardisk sebagai mass storage. Program kendali untuk hardisk XT yang pada waktu itu baru berkapasitas 10 MB, ditempatkan pada Blok C tersebut. XT sudah terdapat pemakaian hardisk, pada PC orisinil tidak. XT terdapat 8 buah slot, PC orisinil terdapat 5 buah slot.
• Blok D dan E disediakan untuk penempatan program-program tertentu yang bisa dimuat dalam ROM. Blok teratas yang merentang dari alamat F0000 sampai dengan FFFFF adalah blok yang bisa dianggap memegang peranan paling penting, karena disinilah ROM BIOS berkedudukan. ROM BIOS-lah yang pertama kali mengaktifkan sistem komputer, memeriksa integritas sistem, memanggil DOS dan selama komputer aktif juga selalu siap sedia untuk sewaktu-waktu melakukan tugas yang spesifik.
FLOATING-POINT
PENGERTIAN FLOATING-POINT
Floating-point atau disebut juga bilangan titik mengambang yaitu sebuah format bilangan yang dapat digunakan untuk merepresentasikan sebuah nilai yang sangat besar atau sangat kecil. Bilangan ini direpresentasikan menjadi dua bagian, yakni bagian mantisa dan bagian eksponen (E).
Bagian mantisa menentukan digit dalam angka tersebut, sementara eksponen menentukan nilai berapa besar pangkat pada bagian mantisa tersebut (pada posisi titik desimal).
Contoh :
bilangan 314600000 dan bilangan 0.0000451
ubah dalam bentuk bilangan floating point
= 3146E5 dan 451E-7 (artinya 3146 * 10 pangkat 5, dan 451 * 10 pangkat -7)
Kebanyakan CPU atau mikroprosesor sederhana tidak mendukung secara langsung operasi terhadap bilangan floating-point ini, karena aslinya mikroprosesor ini hanya memiliki unit aritmetika dan logika, serta unit kontrol yang beroperasi berdasarkan pada bilangan bulat (integer) saja.
Perhitungan atau kalkulasi terhadap nilai floating point pada jenis mikroprosesor sederhana dapat dilakukan dengan menggunakan perangkat lunak, sehingga operasinya sangat lambat. Untuk itulah, sebuah prosesor tambahan dibutuhkan untuk melakukan operasi terhadap jenis bilangan ini, yang disebut dengan unit titik mengambang.
Dalam bahasa pemrograman, khususnya keluarga bahasa pemrograman C, bilangan titik mengambang direpresentasikan dengan tipe data float.