Register Cpu 8086

6

Click here to load reader

description

Register-register yang biasa digunakan dari mikroprosesor 8086

Transcript of Register Cpu 8086

Page 1: Register Cpu 8086

REGISTER CPU 8086 

Secara keseluruhan, CPU 8086 mempunyai 14 macam register yang dapat diakses oleh programer, yang diklasifikasikan sebagai berikut :

A. 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

Page 2: Register Cpu 8086

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 terpendek2. Tempat proses aritmatika, logika dan data3. Satu nilai harus berada didalam AL atau AX4. Penampung hasil perkalian dan pembagian5. 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 LOOP2. Mengulang operasi pada string dengan perintah REP3. 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 data2. Digunakan sebagai sumber dalam beberapa proses instruksi

STRING3. 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

STRING3. Dijadikan alamat relatif Offset pada register ES

Register Penunjuk (POINTER REGISTERS ) BP – Merupakan register penunjuk dasar (base pointer), berfungsi sebagai :

Page 3: Register Cpu 8086

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 STACK2. Dijadikan alamat relatif Offset pada register SS3. Selalu menunjuk pada word (byte pada alamat genap)4. Saat STACK kosong akan menginisialkan SP = 0FFFEh

B. 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)

Page 4: Register Cpu 8086

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.

C. 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

D. 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.

Page 5: Register Cpu 8086

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).