REGISTER
REGISTER General purpose register (register serbaguna) Register adalah sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Register-register yang terdapat pada mikroprosesor, antara lain : General purpose register (register serbaguna) Pointer register (register pointer) Index register (register indeks) Segment register (register segmen) Flag register (register status)
REGISTER-REGISTER PADA 8086 AH AL BH BL CH CL DH DL SP BP IP DI SI FLAGS CS DS ES SS FS GS accumulator General purpose register base Catatan: Pada prosesor 80386-80486 terdapat tambahan register 32 bit yaitu : EAX, EBX, ECX dan EDX counter data stack pointer base pointer Pointer register instruction pointer destination index Index register source index Flags Register code segment data segment extra segment Segment register stack segment hanya ada pada prosesor 32 bit
General purpose register pada 8086 Accumulator Register AX AH AL Base Register BX BH BL Counter Register CX CH CL Data Register DX DH DL
GENERAL PURPOSE REGISTER General purpose register adalah register yang dipakai untuk keperluan-keperluan umum pemograman. General purpose register terdiri dari : register 32 bit (EAX, EBX, ECX, EDX), register 16 bit (AX, BX, CX, DX) dan register 8 bit (AH, AL, BH, BL, CH, CL, DH, DL) Accumulator Register Accumulator register atau register AX (16 bit), dapat dipisah menjadi register AH (8 bit) dan AL (8 bit). Accumulator register adalah tempat berlangsungnya sebagian besar operasi aritmatika dan logika.
GENERAL PURPOSE REGISTER FUNGSI DARI REGISTER ACCUMULATOR : Tempat penyimpanan sementara hasil suatu operasi aritmatika atau logika (register AL, AH, AX dan EAX) Tempat memasukkan nomor layanan interupsi untuk keperluan pemesanan sebuah layanan interupsi (register AH) Tempat menyimpan bilangan yang dikalikan (register AL, AX, EAX) dan setengah bagian terkecil (least significant part) dari hasil suatu perkalian (register DX-AX dan EDX-EAX) Tempat menyimpan setengah bagian terkecil (least significant part) sebuah bilangan yang akan dibagi (register DX-AX dan EDX-EAX) dan hasil bagi dari suatu pembagian (register AL, AX, EAX)
Base Register Base register atau register BX (16 bit) dapat dipisah menjadi register BH (8 bit) dan register BL (8 bit). Base register adalah register serbaguna yang berfungsi sebagai tempat menyimpan alamat offset data yang terletak di memori (register BL, BH, BX, dan EBX). Selain itu, base register juga dapat dioperasikan untuk aritmatika dan logika. Counter Register Counter register atau register CX (16 bit) dapat dipisah menjadi register CH (8 bit) dan register CL (8 bit). Counter register memiliki sifat khusus sebagai penghitung terhadap perintah LOOP dan perintah block transfer yang termasuk operasi string. Fungsi dari counter register, antara lain : Pencacah utama untuk operasi loop/kalang (register CX dan ECX) Pencacah untuk operasi shift dan rotate (register CL) Pencacah (counter) untuk operasi string (CX)
Data Register Data register berfungsi sebagai : Data register atau register DX (16 bit) dapat dipisah menjadi register DH (8 bit) dan register DL (8 bit). Data register memiliki sifat khusus sebagai pencatat address port, baik address port 8 bit maupun address port 16 bit. Data register berfungsi sebagai : Tempat menyimpan setengah bagian terbesar (most significant part) hasil suatu perkalian bilangan 16 bit (register DX-AX) dan 32 bit (register EDX-EAX) Tempat menyimpan setengah bagian terbesar (most significant part) suatu bilangan yang akan dikenai operasi pembagian (register DX-AX dan EDX-EAX), serta sisa suatu pembagian (register DX dan EDX)
POINTER REGISTER Pointer register sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori. Penunjukkan alamat ini biasanya dibutuhkan saat operasi perpindahan data (dari atau ke memori), operasi stack (PUSH dan POP), dan penunjukkan alamat suatu instruksi yang akan dieksekusi. Selain itu, pointer register juga dapat berfungsi sebagai sebuah general purpose register. Pointer register terdiri dari : SP (16 bit), BP (16 bit) dan IP (16 bit). Stack Pointer Register Berpasangan dengan register SS, ditulis “SS:SP”. Berfungsi untuk : Menunjukkan alamat stack memory pada operasi PUSH dan POP Menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur (CALL) dan mengarahkan kembali Control Unit ketika prosedur yang dipanggil telah selesai dieksekusi (RET).
POINTER REGISTER Base Pointer Register Berpasangan dengan register ES, ditulis “ES:BP”. Base pointer register berfungsi untuk menunjukkan alamat sebuah data di suatu lokasi memori. Instruction Pointer Register (IP) Berpasangan dengan register CS, ditulis “CS:IP”, berfungsi untuk menunjukkan alamat instruksi berikutnya.
INDEX REGISTER Source Index Destination Index Index register lebih sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori pada operasi-operasi string. Secara khusus, index register dipakai untuk menunjuk alamat suatu data berindeks di dalam memori. Index register juga dapat digunakan sebagai general purpose register. Index register terdiri dari : SI (16 bit) dan DI (16 bit) Source Index Biasanya digunakan pada operasi string untuk mengakses alamat suatu data di dalam memori secara langsung. Destination Index Sama seperti source index, digunakan pada operasi string untuk mengakses alamat suatu data di dalam memori secara langsung.
SEGMENT REGISTER Code Segment Register Data Segment Register Segment register (bersama dengan register-register tertentu) membentuk alamat memori bagi suatu data. Segmen register terdiri dari : code segment register (CS), data segment register (DS), extra segment register (ES) dan stack segment register (SS) yang semuanya adalah register 16 bit. Code Segment Register Code segment register berpasangan dengan register IP berfungsi untuk menunjukkan alamat instruksi berikutnya. Data Segment Register Data segment register berpasangan dengan register-register lainnya berfungsi untuk menunjukkan alamat data pada operasi pemindahan data.
Extra Segment Register Extra segment register merupakan register segment tambahan yang digunakan pada operasi-operasi string. Stack Segment Register Berpasangan dengan register SP, stack segment register berfungsi untuk : Menunjukkan alamat stack memory pada operasi PUSH dan POP Menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur (CALL) dan mengarahkan kembali ke program utama (RET)
FLAG REGISTER Flag register berfungsi untuk menunjukkan status (keadaan) sesaat dari mikroprosesor. Gambar Flag Register 8086
Keterangan Flag Register Jenis flag Keterangan Carry Bernilai 1 apabila terjadi peminjaman pada proses pengurangan atau carry pada proses penjumlahan Parity Bernilai 1 jika jumlah bit 1 genap dan bernilai 0 jika jumlah bit 1 ganjil Auxiliary Bernilai 1 jika terjadi peminjaman terhadap most significant part Zero Bernilai 1 jika hasilnya adalah nol, dan bernilai 0 jika hasilnya bukan nol Sign Bernilai 1 jika hasilnya merupakan bilangan negatif Trace Bernilai 1 jika program didebug per langkah Interrupt Bernilai 1 jika interrupt dijalankan Direction Bernilai 1 jika arahnya menurun, bernilai 0 jika arahnya menaik Overflow Bernilai 1 jika MSB bernilai 1