Register dan Flags di emu8086

Apa itu register?

Register adalah sebuah memori yang terdapat dalam prosesor yang berfungsi untuk menyimpan data, alamat, atau instruksi yang akan dieksekusi dengan kecepatan akses yang sangat tinggi.

Jenis-jenis register

Register yang terdapat didalam prosesor tidak hanya satu dikarenakan beberapa prosesor memiliki tugas yang spesifik berikut register yang terdapat dalam intel 8086.

Segment Register

Register yang termasuk dalam kelompok ini adalah CS, DS, SS, dan ES masing-masing memiliki kapasistas 16 bit (*intel 8086) dan memiliki fungsi tersendiri.
  • CS (Code Segment) digunakan untuk menunjukan tempat dari segmen yang sedang aktif.
  • DS (Data Segment) digunakan untuk segmen dimana program disimpan.
  • SS (Stack Segment) digunakan untuk menunjukan letak segmen yang digunakan sebagai stack.
  • ES (Extra Segment) sebagai tambahan segment dan tidak mempunyai fungsi khusus. 

Pointer dan Index Register

Register yang temasuk dalam kelompok ini adalah SP, BP, SI, dan DI yang mempunyai kapasitas 16 bit juga (*intel 8086). Secara umum register-register ini digunakan sebagai penjunjuk ke suatu tempat di memori.
  • SP (Stack Pointer) digunakan untuk menunjukan alamat dari stack.
  • BP (Base Pointer) digunakan untuk mencatat alamat di memori tempat menyimpan data.
  • SI (Source Index) dan DI (Destination Index) digunakan dalam operasi string dengan mengakses memori yang ditunjuk oleh kedua register ini.

General Purpose Register

Register-register inilah yang akan sering digunakan pada awal pembelajaran, terdiri dari AX, BX, CX, DX (*intel 8086) dengan kapasitas masing-masing 16 bit dan terdiri dari 2 register 8 bit H dan L (High dan Low).

Meskipun dikatakan 'General purpose' tetapi register ini juga mempunyai fungsi spesifik:
  • AX, digunakan pada operasi matematika dan sebagai akumulator
  • BX, digunakan untuk menunjukan alamat offset suatu segmen
  • CX, digunakan sebagai counter pada looping
  • DX, digunakan untuk menampung sisa bagi pembagian 16 bit.

Index Pointer Register

Register IP berpasangan CS (CS:IP) menunjukan alamat memori dari perintah yang akan dieksekusi selanjutnya. Ukuran dari IP tergantung dari prosesornya bisa 16 atau 32, untuk 8086 ukurannya 16 bit.

Flags Register

Register ini berfungsi untuk menunjukan ya atau tidaknya suatu keadaan. Setiap flag mewakili satu bit. Cara kerjanya sama seperti hakim garis pada sepakbola yang akan mengangkat bendera jika terjadi foul atau off-side, flags akan bernilai 1 jika kondisinya ya dan 0 jika kondisinya tidak. Untuk flags selengkapnya bisa dilihat di bawah.

Flags 1
Flags 2