Kamis, 17 April 2014

PENGERTIAN REGISTER 
 Sebuah register adalah sebuah tempat penampungan sementara untuk data-
data yng akan diolah oleh prosesor, 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-registe tersebut 
sebagai register internal dan terdiri dari empat belas register dan 
keseluruhannya dapat dibagi dalam beberapa jenis, yaitu :
 
· Register segment
  Terdiri dari 4 register, yaitu code segment, data segment, stack segment,
  dan extra segment. Segment adalah bagian dari ruang memori yang berkapa-
  sitas 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 (subroutine, 
  prosedur, dan sebagainya) dan extra segment sebagaimana halnya data 
  segment juga dipergunakan sebagai penempatan data-data.
 
· Register data
  Register ada adalah register yang mengandung informasi yang akan, sedang 
  atau telah diolah oleh komputer. Pada 8088 register ini diwujudkan oleh 
  AX, BX, CX dan BX (sebagai general purpose register), sehubungan dengan 
  fungsinya yang selain menangani tugas-tugas khusus, juga bisa dimanfaat-
  kan untuk membantu proses-proses pengolahand data didalam internal mikro-
  prosessor.
 
· Register pointer

· Register index
  Register jenis pointer dan register index merupakan register-register 
  yang memuat alamat offset dari segment-segment tertentu, yang terdiri 
  dari stack pointer (SP) dan base pointer (BP) yang digunakan sebagai 
  pemegang nilai offset dari stack segment, sedangkan source index (SI) 
  dan destination index (DI) berisi nilai offset dari data segment. 
  Instruction pointer (IP) merupakan pemegang nilai offset dari code 
  segment dan fungsinya mirip dengan program counter (PC) pada prosesor-
  prosesor 8 bit. Hanya bedanya, program counter langsung mengalamati 
  instruksi-instruksi yang ada dimemori dengan nilainya sendiri, IP harus 
  bekerja sama dengan register CS untuk dapat membentuk pengalamatan 20 
  bit dalam format segment:offset.
 
· Register status
  Register ini mempunyai struktur yang berbeda dengan register-register 
  lainnya, yang dibentuk dari sebuah register 16 bit, yang masing-masing 
  bitnya memberikan informasi tertentu tentang keadaan -keadaan yang 
  terjadi pada prosesor, sebagai akibat proses pengolahan data. Informasi 
  yang diwakili oleh sebuah bit pada register status disebut 'flag'. 
  Hanya 9 dari keseluruhan 16 bit yang dipakai oleh register status 
  sebagai tanda kondisi-kondisi prosesor.

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.
 
Jenis-jenis general purpose register dapat dijelaskan sebagai berikut : 
 
1. AX (16 bit),  terdiri dari AH (high byte/8 bit), AL (low byte/8 bit) 
   Secara khusus sebagai Accumulator dan register serbaguna yang berfungsi 
   sebagai masukan, atau menampung hasil proses / perhitungan (add, sub, 
   mul, dan div) dan sering untuk menyimpan data sementara. Banyak instruksi 
   yang dioptimasikan unjuk kerjanya jika beroperasi pada register 
   accumulator. Pengoperasian data yang disimpan di accumulator sedikit 
   lebih cepat dibanding bila data disimpan di register lain. Pada operasi 
   pembagian, jika bilangan pembagi besarnya 16 bit, bilangan yang dibagi 
   ditampung di pasangan register DX:AX. Setelah pembagian hasil ditampung 
   di AX sedang sisa hasil bagi di DX.
   Bila bilangan pembagi besarnya 8 bit, bilangan yang dibagi ditempatkan 
   di AX. Setelah pembagian, hasil bagi ditempatkan di AL sedang sisa hasil
   bagi di AH.
   Pada operasi perkalian, accumulator menampung bilangan yang akan dikali-
   kan. Hasil perkalian ditempatkan di register AX. Pada operasi I/O ke dan
   dari port, accumulator menampung data yang akan ditransfer.
 
2. BX (16 bit), terdiri dari BH (high byte.bit), AL (low byte/8 bit) 
   Secara spesifik sebagai Base juga dan register serbaguna yang merupakan 
   salah satu dari dua register base Addressing mode (penunjuk basis alamat),
   yang dapat mengambil atau menulis langsung dari/ke memory dengan segment 
   DS (Data Segment) serta dapat dipakai sebagai pointer pada suatu basis 
   data misalnya.
 
3. CX (16 bit), terdiri dari CH (high byte.bit), CL (low byte/8 bit)
   Secara spesifik sebagai Counter untuk meletakkan jumlah lompatan pada 
   LOOP yang dilakukan, misal sebagai penunjuk berapa banyak perhitungan  
   dilakukan. Berfungsi untuk menampung cacah perulangan suatu operasi 
   (loop, string, shift, dan rotate). Register ini dapat dipakai sebagai 
   penyimpan data sementara.
 
4. DX (16 bit), terdiri dari DH (high byte.bit), DL (low byte/8 bit)
   Secara spesifik sebagai Data juga sebagai register serbaguna yang 
   digunakan sebagai penampung data tertentu (karakter, pointer, 
   penentuan disk).
   4 tugas pokok register DX :
   · Mmbantu AX dalam proses perkalian dan pembagian, terutama perkalian 
     dan pembagian 16 bit
   · DX merupakan register offset dari DS
   · Menunjukkan nomor port pada operasi port
   · Dipakai sebagai penampung sementara data. Dipakai berpasangan dengan 
     register AX, operasi perkalian dan pembagian 16 bit. Pada operasi 
     I/O ke dan dari port, DX menampung port yang akan diakses.

                              AX / BX / CX / DX
 15  14  13  12  11  10  09  08  07  06  05  04  03  02  01  00
 -----------------------------------  ---------------------------------------
        AH / BH / CH / DH                      AL / BL / CL / DL 
 
Dari fungsi-fungsi register AX, BX, CX, DX dapat digolongkan sebagai register 'Data' karena kegunaan dan pemanfaatannya yang cenderung ke penampungan data, selain memiliki fungsi spesifik tetapi dapat saling tergantung.
 
SEGMENT REGISTER
1. ES (Extra Segment)
   Tidak mempunyai tugas, tetapi berguna untuk pemograman pada saat 
   melakukan operasi ke segment lain. Nilai yang dikandung oleh register 
   ini merupakan address yang berguna bagi instruksi-instruksi string. 
   Address dari sebuah segmen tambahan juga dapat disimpan di register 
   ES ini. Processor 80386 selain ES, masih memiliki 2 register extra 
   segment, yaitu FS dan GS.
 
2. CS (Code Segment)
   Yang menunjuk ke segment adalah register segment, maka CS merupakan .
   salah satu dari empat register segment. Tugasnya adalah menunjukkan 
   segment program berada. Sedangkan pasangan register ini adalah register 
   IP.
   Menampung nilai yang merupakan address awal dari suatu segmen. 
   Segmen ini berisi instruksi-instruksi dan operand-operand yang dispesi-
   fikasikan oleh program.
 
3. DS (Data Segment)
   Nilai yang ditampung oleh register ini merupakan address dari segmen 
   yang normalnya berisi data-data yang dialokasikan oleh program
 
4. SS (Stack Segment)
   Address yang berada di register ini berguna bagi instruksi-instruksi 
   yang menyimpan sementara data distack. Stack merupakan sebuah area 
   memory yang dicadangkan untuk penyimpanan data secara sementara.
   DS dan SS adalah dua register segment yang masing-masing mempunyai 
   tugas menunjukkan segment dari segment data dan segment stack.
   Pasangan dari DS adalah DX dan pasangan dari SS adalah SP.
 
 
POINTER REGISTER
Pointer register secara khusus berfungsi untuk menyimpan nilai offset 
dari relative address. Register ini terdiri dari :

1. IP (Instruction Pointer)
   Merupakan pasangan CS yang merupakan register terpenting untuk 
   menunjukkan baris perintah program. Saat pertama program dijalankan, 
   register ini akan langsung menunjuk pada awal program dan selalu berisi 
   address dari instruksi yang akan segera dieksekusi. Programmer tidak 
   dapat langsung mengakses atau mengubah nilai register IP. Pengubahan 
   hanya bisa dilangsungkan melalui instruksi-instruksi call, jump, loop 
   dan interrupt yang secara otomatis akan mengubah nilai yang ada pada 
   register IP. Kombinasi CS dan IP menunjukkan alamat Segment : Offset.
 
2. SP (Stack Pointer)
   Merupakan pasangan CS, maka SP merupakan pasangan SS yang digunakan 
   untuk operasi  stack. Berisi data yang merupakan address lokasi saat 
   kini dalam stack. Register ini teknisnya merupakan register multi fungsi 
   yang dapat dipakai sebagai tempat penyimpanan data maupun tempat 
   kalkulasi, meski sehari-hari harus dipakai hanya dalam operasi stack.
 
3. BP (Base Pointer)
   Untuk menulis dan membaca ke atau dari memory secara langsung dengan 
   segment SS (Stack Segment) dan digunakan dalam komunikasi antara bahasa 
   komputer, seperti Pascal dengan Assembler atau bahasa C dengan bahasa 
   Assembler Meski dipakai sebagai tempat penampung data sementara sering 
   dipakai pointer basis kerangka stack.
 
INDEX  REGISTER
Register yang dipakai untuk melakukan operasi string dan sering digunakan 
untuk menulis dan membaca ke atau dari memory seperti halnya BX dan BP 
(Base Pointer), yang terdiri dari register :
 
1. SI (Source Index)
   Dipakai sebagai pointer atau tempat penyimpan data. Registerini sering 
   dipakai sebagai pointer untuk menunjuk sebuah item (indexing) dalam 
   satu kesatuan data. Pada operasi string, SI dipakai untuk menunjuk ke 
   byte atau word dalam sebuah source string.
 
2. DI (Destination Index)
   Dipakai sebagai pointer atau tempat penyimpanan data. Sering dipakai 
   sebagai pointer untuk menunjuk sebuah item (indexing) dalam satu 
   kesatuan data.
   Pada operasi string, DI dipakai untuk menunjuk ke byte atau word dalam 
   sebuah destination string.
 
   Merupakan suatu komposisi register 16 bit, dimana komposisi bitnya 
   mengecek apakah sesuatu berfungsi atau tidak. Adalah register 16 bit 
   yang bit-bitnya mengontrol berbagai instruksi dan merefleksikan status 
   processor pada saat itu. Untuk real mode aktualnya ada 9 flag, untuk 
   80286 protected mode ada 11 flag, dan untuk 80386 ada 13 flag.
   Contohnya, Interrupt Flag mengecek apakah pada saat operasi Interrupt 
   sedang aktif atau tidak, bila tidak aktif Interrupt tidak akan dijalankan.
   Carry Flag mengecek apakah pada saat operasi terjadi kesalahan atau 
   tidak, Sign Flag menunjukkan apakah suatu bilangan bertanda atau tidak 
   dan sebagainya.
 
  Komposisi 16 bit (flag bits) 
 
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
    OF DF IF TF SF ZF  AF  PF  CF
               
 
           Tabel Register Status (Flag)
 
Nama Flag   Fungsi           RESET(0)    Arti             SET   (1) Arti
CF     Carry Flag             NC         No Carry            CV    Carry
PF     Parity Flag            PO         Parity Odd          PE    Parity Even
AF     Auxiliary Carry Flag   NA         No Aux. Carry       AC    Aux. Carry
ZF     Zero Flag              NZ         Non Zero            ZR    Zero
SF     Sign Flag              PL         Plus                NG    Negative
OF     Overflow Flag          NV         No Overflow         OV    Overflow
IF     Interrupt Flag         DI         Disable Interupt    EI   Enable Interupt
DF     Direction Flag         UP         Upward              DN    Downward
 
 
· Carry Flag (CF) akan 'set' (menjadi logika '1', tinggi), apabila terjadi 
'bawaan' (carry) atau 'pinjaman' (borrow) dalam suatu hasil proses 
perhitungan (arithmetic) pada Most Significant Bit (MSB, bit paling 
berbobot). Jika hal-hal itu tidak terjadi maka CF akan 'reset' (logika 
'0', rendah). Kalau dalam suatu instruksi, terjadi hasil yang menunjukkan 
bahwa sistem pengecekan paritas adalah 'paritas genap' (even parity), maka 
PF akan 'set'. Bila yang terjadi 'paritas ganjil' (odd parity), PF akan 
'reset'.

· Auxiliary Carry Flag dipakai untuk menunjukkan hasil perhitungan pada 
byte rendah dari suatu bilangan binary 16 bit. Jika terjadi 'bawaan' atau 
'pinjaman' dari nibble bawah (low nibble) ke nibble atas (high nibble), .
AF akan 'set', sebaliknya AF akan di 'reset'. Zero Flag akan 'set' kalau 
dalam suatu proses perhitungan di hasilkan nilai nol. Bila hasilnya bukan 
nol, ZF akan 'reset'.

· SF atau 'Sign Flag' adalah bit yang akan mendeteksi suatu bilangan
sebagai bilangan positif atau bilangan negatif. Hal ini dilakukan dengan 
melihat MSB dari bilangan tersebut. Apabila MSB menunjukkan nilai '1' 
(set), maka bilangan itu adalah negatif, jika '0' (reset), bilangan 
positif.

· OF adalah 'Overflow Flag', berguna untuk menunjukkan bahwa telah terjadi 
'overflow' yaitu jumlah bit sebagai hasil suatu proses perhitungan telah 
melampaui batas yang diperkenankan. Mikroprosesor 8088 mempunyai kemampuan 
untuk bekerja dalam mode 'langkah tunggal' (single-step), yaitu semua 
instruksi dilaksanakan dengan cara satu demi satu. Mode ini dimungkinkan 
dengan jalan membuat TF (Trap Flag) masuk ke logika '1' atau 'set'. Bagi 
seorang programmer, mode ini akan sangat berguna dalam pekerjaan 'debugging'.

· Interrupt Flag (IF) untuk mendeteksi adanya permintaan interupsi dari 
peralatan-peralatan luar. Bila flag ini ada dalam keadaan set, maka 
pendeteksian interupsi oleh 8088 akan aktif, akan tetapi jika IF dalam 
keadaan reset, semua permintaan interupsi yang "maskable" (tidak mutlak) 
akan diacuhkan.

· DF adalah 'Direction Flag', berguna menentukan arah dari operasi-operasi 
'string' (untaian string), yaitu bila DF di 'set', maka operasi string akan 
mengurutkan alamat dari atas ke bawah, akan tetapi, bila flag ini di-
'reset', pengalamatan diurutkan dari alamat rendah ke alamat tinggi.

Flag Register
    Register Flag adalah register 16 bit, fungsi register ini untuk mencatat tanda yang berkaitan dengan operasi
    khusus tentang kerja mikroprosessor, yaitu:
    - Overflow Flag (OF)
    - Direction Flag (DF)
    - Interrupt Flag (IF)
    - Trap Flag (TF)
    Sedangkan tanda yang berkaitan dengan kerja mikroprosessor akibat operasi aritmatika dan logika yaitu:
    - Sign Flag (SF)
    - Zero Flag (ZF)
    - Auxiliarry Carry Flag (AF)
    - Paritiy Flag (PF)
    - Carry Flag (CF)