Anda di halaman 1dari 5

REGISTER CPU 8086

Secara keseluruhan, CPU 8086 mempunyai 14 macam register yang dapat


diakses oleh programer, yang diklasifikasikan sebagai berikut :

Register Multiguna (GENERAL PURPOSES REGISTERS )

Terdiri atas 8 register multiguna atau general purpose , dimana register ini
dapat digunakan untuk memanipulasi data. Setiap register memiliki lebar
data 16 bit. Ke-4 register pertama disebut dengan register UMUM, terdiri
atas AX, BX, CX, dan DX. Sedangkan 4 register berikutnya disebut dengan
register INDEX dan POINTER yang terdiri atas register SP, BP, SI, dan DI.
Khusus untuk register umum, dapat digunakan 8 bit saja dari masing-masing
registernya dengan memisahkan 8 bit tinggi (HIGH) dan 8 bit rendah (LOW),
dengan rincian sebagai berikut :

- Register AX menjadi AH dan AL


- Register BX menjadi BH dan BL
- Register CX menjadi CH dan CL
- Register DX menjadi DH dan DL
Fungsi dari masing-masing register tersebut adalah :
 Register Umum (GENERAL REGISTERS)
AX – Merupakan register akumulator ( dibagi menjadi AH / AL) yang
berfungsi sebagai :
1. Membangkitkan kode mesin terpendek
2. Tempat proses aritmatika, logika dan data
3. Satu nilai harus berada didalam AL atau AX
4. Penampung hasil perkalian dan pembagian
5. Penampung proses I/O

BX – Merupakan register pengalamat dasar (base address register) (dibagi


menjadi BH / BL).

CX – Merupakan register pencacah/penghitung (dibagi menjadi CH / CL)


yang berfungsi sebagai :
1. Kode segmen iterasi yang menggunakan instruksi LOOP
2. Mengulang operasi pada string dengan perintah REP
3. Menghitung ( dalam CL) operasi bit untuk keperluan menggeser atau
berotasi

DX – Merupakan register data (dibagi menjadi DH / DL) yang berfungsi


sebagai :
1. Jika digabungkan AX (DX:AX) akan menjadi register 32 bit untuk
keperluan operasi perkalian (MUL) dan pembagian (DIV) concatenated
2. Digunakan untuk menyebutkan alamat port pada operasi IN dan OUT
Register Indeks (INDEX REGISTERS )
SI – Merupakan Register Indeks Sumber (source index register), yang
berfungsi sebagai :

1. Digunakan untuk penunjukkan alamat data


2. Digunakan sebagai sumber dalam beberapa proses instruksi STRING
3. Dijadikan alamat relatif Offset pada register DS

DI – Merupakan register index tujuan (destination index register),


berfungsi sebagai :

1. Digunakan untuk penunjukkan alamat data


2. Digunakan sebagai target dalam beberapa proses instruksi STRING
3. Dijadikan alamat relatif Offset pada register ES
Register Penunjuk (POINTER REGISTERS )
BP – Merupakan register penunjuk dasar (base pointer), berfungsi
sebagai :
1. Fungsi utamanya digunakan untuk mengakses pelewatan parameter
melalui STACK
2. Dijadikan alamat relatif Offset pada register SS
SP – Merupakan register penunjuk stack (stack pointer), berfungsi
sebagai :
1. Selalu menunjukkan posisi teratas dari sebuah STACK
2. Dijadikan alamat relatif Offset pada register SS
3. Selalu menunjuk pada word (byte pada alamat genap)
4. Saat STACK kosong akan menginisialkan SP = 0FFFEh
Register Segmen (SEGMENT REGISTERS)
Kelompok register berikutnya adalah merupakan kelompok register 16 bit
yang disebut dengan register segmen. Terdiri atas 4 macam jenis dengan
masing-masing berfungsi sebagai berikut :

CS – Register segmen yang menunjuk segmen yang berisi program saat ini.

DS – Secara umum merupakan register segmen yang menunjuk segmen


sebagai tempat dimana variabel-variabel didefinisikan.

ES – Register segmen ekstra atau bonus, kegunaan register ini bergantung


pada programer.

SS – Register segmen yang menunjuk segmen yang berisi STACK.

Meskipun hal ini memungkinkan untuk menyimpan data didalam register


segmen, namun hal ini bukanlah ide yang bagus. Segmen register memiliki
kegunaan yang sangat spesial yaitu menunjuk blok memori yang dapat
diakses.
Register segmen bekerjasama dengan register multiguna untuk mengakses
nilai memori apa saja. Sebagai contoh, jika kita menginginkan untuk
mengakses memori fisik (misal : 12345h), kita dapat memberikan DS=12350h
dan SI=0045h. Ini merupakan langkah yang dapat ditempuh untuk mengakses
sejumlah memori yang lebih banyak lagi, dibandingkan dengan
menggunakan register tunggal, yang hanya terbatas sampai dengan 16 bit
saja.
CPU membuat perhitungan dengan alamat fisik dengan mengalikan register
segment dengan 10h dan menjumlahkannya pada register multiguna (misal :
1230h*10h+45h=12345h)

12300 h
00045 h
= +
12345 h

Alamat yang dibentuk dari 2 register disebut dengan alamat efektif


(Effective Address). Secara default, register BX, SI dan DI bekerja bersama
register segmen DS, dan register BP, SP bekerja dengan register segmen SS.
Sedangkan register multiguna lainnya, tidak dapat digunakan untuk hal
tersebut. Meskipun register BX dapat membentuk alamat efektif, namun BH
dan BL tidak bisa.
Register Kegunaan Khusus (SPECIAL PURPOSE REGISTERS )
IP – Merupakan register pointer instruksi (the instruction pointer), yang
berfungsi sebagai:

1. Selalu mengarahkan pada instruksi berikutnya yang akan dijalankan.


2. Dijadikan alamat relatif Offset pada register CS

Register IP selalu bekerja sama dengan register segmen dan selalu


menunjukkan posisi instruksi saat kini yang dijalankan

Register Bendera/tanda (FLAGS REGISTER / WORD STATUS)

Register ini digunakan untuk menentukan keadaan prosesor saat ini.


Register-register ini dimodifikasi secara otomatis oleh CPU setelah operasi
matematika, mengijinkan untuk menentukan jenis hasil, dan menentukan
kondisi untuk kendali transfer pada bagian program lain. Secara umum anda
tidak dapat mengakses register ini secara langsung.

1. Carry Flag (CF) – Tanda ini akan bernilai 1 jika ada unsigned overflow.
Sebagai contoh saat anda menjumlahkan byte 255 + 1 ( hasilnya
melebihi batas 0...255). Sebaliknya akan bernilai 0.
2. Parity Flag (PF) – Tanda ini akan bernilai 1 jika terdapat jumlah ganjil
dari 1 bit , dan 0 sebaliknya.
3. Auxiliary Flag (AF) – Tanda ini akan bernilai 1 jika terdapat unsigned
overflow untuk nibble (4 bits) terendah.
4. Zero Flag (ZF) – Tanda ini akan bernilai 1jika terdapat hasil zero. Dan
sebaliknya adalah 0.
5. Sign Flag (SF) – Tanda ini akan bernilai 1 jika terdapat hasil negative.
Sebaliknya 0. ( Tanda ini akan mengencek nilai pada MSB)
6. Trap Flag (TF) – Tanda ini digunakan untuk pengecekan pada chip.
7. Interrupt enable Flag (IF) – Tanda ini akan bernilai 1 apabilai CPU
bereaksi terhadap interupsi dari devais luar.
8. Direction Flag (DF) – Tanda ini digunakan untuk beberapa proses data
berantai. Akan bernilai 0, jika prosesnya maju (forward) atau sebaliknya
0 Jika prosesnya mundur (backward).
9. Overflow Flag (OF) – Tanda ini akan bernilai 1 jika ada tanda signed
overflow. Misalkan saat anda menambahkan bytes 100 + 50 (hasilnya
adalah luar jangkauan -128 s/d 127).