Fungsi Register dan Flag Pada Sistem Mikroprosesor

Register Mikroprosesor
Register merupakan sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaannya Mikroprosesor selalu menggunakan register-register sebagai perantaranya.
Register yang digunakan oleh Mikroprosesor dibagi menjadi beberapa bagian dengan tugasnya yang berbeda-beda.
Tabel Register Mikroprosesor
image

JENIS-JENIS REGISTER

Register yang digunakan oleh mikroprosesor dibagi menjadi 5 bagian dengan tugasnya yang berbeda-beda pula, yaitu :
1. 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<Extra Segment> dan GS<Extra Segment>.
2. 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.
3. General Purpose Register
General Purpose Register adalah register-register yang dipakai untuk keperluan-keperluan umum dalam pemrograman Assembly. Register ini dapat diamati sebagai register 32 – bit, 16 – bit ataupun 8 – bit. Berikut ini adalah register-register General Purpose tersebut beserta fungsi2 khususnya.
1.Accumulator Register
  1. a.Tempat menyimpan sementara hasil suatu operasi aritmatika atau logika (Register AX, AH, AL, EAX)
  2. b.Tempat memasukan nomor layanan interupsi, untuk keperluan pemesanan sebuah layanan interupsi (register AH)
  3. c.Tempat menyimpan bilangan yang dikalikan (Register AL, AX, EAX) dan setengah bagian terkecil dari suatu hasil perkalian (register DX-AX dan EDX-EAX)
  4. d.Tempat menyimpan setengah bagian terkecil sebuah bilangan yang akan dibagi (Register DX-AX dan EDX-EAX) dan hasil bagi suatu pembagian (Register AL, AX dan EAX)
2.    Base Register
Base Register adalah register serbaguna yang berfungsi sebagai tempat menyimpan alamat offset data yang terletak di memori (Register BL, BH, BX, EBX)
3. Counter Register
Register serbaguna yang berfungsi sebagai :
  • a.Pencacah (Counter) untuk operasi looping (Register CX dan ECX)
  • b.Pencacah untuk operasi shift dan rotate
  • c.Pencacah untuk operasi string (CX)
4.   Data Register
Register serbaguna yan berfungsi sebagai :
a.Tempat menyimpan setengah bagian terbesar hasil suatu perkalian bilangan 16 – bit (Register DX-AX) dan 32 – bit (Register EDX-EAX)
b.Tempat menyimpan setengah bagian terbesar suatu bilangan yang akan dikenai operasi pembagian (Register DX-AX dan EDX-EAX), serta sisa suatu pembagian (Register DX dan EDX)
4. 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.
5. 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 :
ð   OF <OverFlow Flag>
Jika terjadi OverFlow pada operasi aritmatika, bit ini akan bernilai 1.
ð   SF <Sign Flag>
 Jika digunakan bilangan bertanda bit ini akan bernilai 1
ð   ZF <Zero Flag>
Jika hasil operasi menghasilkan nol, bit ini akan bernilai 1.
ð   CF <Carry Flag>
Jika terjadi borrow pada operasi pengurangan atau carry pada penjumlahan, bit ini akan bernilai 1.
     0F   0E    0D    0C     0B  0A    09     08    07 06    05   04  03   02   01   00
+——-+——-+———+———+——+——-+——-+——-+——+——+——+——+——+——+——+——+
|        | NT |         IOPL |OF | DF |  IF  |  TF | SF | ZF|      | AF|      | PF |      |CF |
+——-+——-+———+———+——+——-+——-+——-+——-+—-+——+——+——+——+——+——+
Gambar Susunan Flags Register 8088

ð   PF <Parity Flag>.
Digunakan untuk menunjukkan paritas bilangan. Bit ini akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap.
ð   DF <Direction Flag>
Digunakan pada operasi string untuk menunjukkan arah proses.
ð   IF <Interrupt Enable Flag>
CPU akan mengabaikan interupsi yang terjadi jika bit ini 0.
ð   TF <Trap Flag>
Digunakan terutama untuk Debugging, dengan operasi step by step.
ð   AF <Auxiliary Flag>
 Digunakan oleh operasi BCD, seperti pada perintah AAA.
ð   NT <Nested Task>
Digunakan pada prosesor 80286 dan 80386 untuk menjaga jalannya interupsi yang terjadi secara beruntun.
ð   IOPL <I/O Protection level>
 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 :
PE <Protection Enable>
Digunakan untuk mengaktifkan mode proteksi. flag ini akan bernilai 1 pada mode proteksi dan 0 pada mode real.
  MP <Monitor Coprosesor>
Digunakan bersama flag TS untuk menangani terjadinya intruksi WAIT.
EM <Emulate Coprosesor>
Flag ini digunakan untuk mensimulasikan coprosesor 80287 atau 80387.
TS <Task Switched>
Flag ini tersedia pada 80286 keatas.
ET <Extension Type>
Flag ini digunakan untuk menentukan jenis coprosesor 80287 atau 80387.
RF <Resume Flag>
Register ini hanya terdapat pada prosesor 80386 keatas.
VF <Virtual 8086 Mode>
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.
F   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.

F   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 :
OF <OverFlow Flag>
Jika terjadi OverFlow pada operasi aritmatika, bit ini akan bernilai 1.
SF <Sign Flag>
Jika digunakan bilangan bertanda bit ini akan bernilai 1
ZF <Zero Flag>
Jika hasil operasi menghasilkan nol, bit ini akan bernilai 1.
CF <Carry Flag>
Jika terjadi borrow pada operasi pengurangan atau carry pada penjumlahan, bit ini akan bernilai 1.

    0F   0E    0D    0C     0B  0A    09     08    07 06    05   04  03   02   01   00
+——-+——-+———+———+——+——-+——-+——-+——+——+——+——+——+——+——+——+
|        | NT |         IOPL |OF | DF |  IF  |  TF | SF | ZF|      | AF|      | PF |      |CF |
+——-+——-+———+———+——+——-+——-+——-+——-+—-+——+——+——+——+——+——+

Gambar Susunan Flags Register 8088


PF <Parity Flag>.
Digunakan untuk menunjukkan paritas bilangan. Bit ini akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap.
DF <Direction Flag>
Digunakan pada operasi string untuk menunjukkan arah proses.
IF <Interrupt Enable Flag>
CPU akan mengabaikan interupsi yang terjadi jika bit ini 0.
TF <Trap Flag>
Digunakan terutama untuk Debugging, dengan operasi step by step.
AF <Auxiliary Flag>
 Digunakan oleh operasi BCD, seperti pada perintah AAA.
NT <Nested Task>
Digunakan pada prosesor 80286 dan 80386 untuk menjaga jalannya interupsi yang terjadi secara beruntun.
IOPL <I/O Protection level>
 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 :
PE <Protection Enable>
Digunakan untuk mengaktifkan mode proteksi. flag ini akan bernilai 1 pada mode proteksi dan 0 pada mode real.
MP <Monitor Coprosesor>
Digunakan bersama flag TS untuk menangani terjadinya intruksi WAIT.
EM <Emulate Coprosesor>
Flag ini digunakan untuk mensimulasikan coprosesor 80287 atau 80387.
TS <Task Switched>
Flag ini tersedia pada 80286 keatas.
ET <Extension Type>
Flag ini digunakan untuk menentukan jenis coprosesor 80287 atau 80387.
RF <Resume Flag>
Register ini hanya terdapat pada prosesor 80386 keatas.
VF <Virtual 8086 Mode>

          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.

2 komentar: