BAHASA RAKITAN - REGISTER



Secara sederhana model computer dapat digambarkan sebagai berikut :











Keterangan:
*System bus(warna kuning) menghubungkan dengan bermacam-macam komponen computer
*CPU merupakan jantung computer, hampir seluruh perhitungan dilakukan didalam CPU
*RAM merupakan tempat dimana program di loading untuk dieksekusi

CPU
 CPU dibagi menjadi tiga bagian :

Arithmetic Logic Unit (ALU) berfungsi untuk melaksanakan operasi aritmetik, logika dan penggeseran
Control Unit berfungsi mengambil data dan intruksi serta menerjemahkan kode
Register berfungsi melakukan penyimpanan sementara di dalam CPU

Register yang digunakan oleh mikroprosesor dibagi menjadii 5 bagian dengan tugasnya yang berbeda-beda, antara lain :

1. General Purpose Register

  CPU 8086 mempunyai 8 general purpose register, dimana tiap register mempunyai namanya sendiri-sendiri:


*AX - the accumulator register (dibagi menjadi AH/AL)
*BX - the base address register (dibagi menjadi BH/BL)
*CX - the count register (dibagi menjadi CH/CL)
*DX - the data register (dibagi menjadi DH/DL)
*SI - source index register
*DI - destination index register
*BP - base pointer
*SP - stack pointer

Disamping nama-nama register,dimana seorang programmer dapat   menentukan penggunaannya untuk  setiap  general purpose  register.  Tujuan  utama  dari  register  adalah untuk menyimpan angka(variable). Ukuran register diatas adalah 16 bit. Empat(4) general purpose register (AX, BX, CX, DX) dibuat dari dua 8 bit register yang terpisah, contoh :

jika  AX=011000000111001b, maka AH=00110000b dan AL=00111001b


"H" berarti bagian high dan "L" berarti bagian low. Karena register berada dalam CPU, mereka lebih cepat dibandingkan dengan memory. 

2. Segment Register


*CS - menunjuk pada segmen yang berisi program sekarang (current program)
*DS - biasanya  menunjuk  pada  segmen  dimana  variable didefinisikan
*ES - register   segmen   extra,    tergantung    programmer mendefinisikan penggunaannya
*SS - menunjuk pada segmen yang berisi stack

Walaupun bisa menyimpan data apapun di segmen register, tapi tidak dianjurkan.Segmen register mempunyai tujuan yang sangat khusus, yaitu menunjuk blok memori yang dapat diakses. Segment register bekerjasama dengan general purpose register untuk mengakses setiap nilai memory.

Contohnya, jika kita akan mengakses memori pada physical address 12345h(hexadecimal), kita perlu mengeset DS=1230h dan SI=0045h.
Ini bagus karena dengan cara ini kita dapat mengakses lebih banyak memory daripada register tunggal yang terbatas pada nilai 16 bit. CPU membuat kalkulasi dari dari physical address dengan   mengalikan  segment   register   dengan   10h   dan menambahkan general purpose register (1230h * 10h + 45h = 12345h)

3. Pointer Register

      Pointer Register bertugas untuk menyimpan offset dari relative address.

*Register IP adalah register CS yang merupakan register terpenting untuk menunjukkan baris perintah program. Pada pertama program dijalankan register ini akan langsung menunjuk pada awal program.
*Register SP adalah register SS yang digunakan untuk operasi stack. Pada saat program pertama dijalankan register ini akan menunjuk pada byte terakhir stack.
*Register BP mempunyai fungsi yang sama dengan register BX yaitu dapat menulis dan membaca ke atau dari memori secara langsung.

Perbedaannya adalah BX menulis dan membaca dengan segment SS (Stack Segment). Register BP digunakan juga dalam komunikasi anatara bahasa komputer, seperti PASCAL dengan Assembler ataupun Turbo C dengan Assembler.

 4. Index Register
Index Register terdiri dari dua register yaitu register DI dan SI, dimana kedua register ini merupakan register yang dipakai untuk melakukan Operasi String. Kedua register ini sering digunakan untuk menulis dan membaca ke atau dari memori seperti BX dan BP.

5. Flag Register

| X | X | X | X | O | D | I |T | S | Z | X | A | X | P | X | C |
Flag Bits:
O - Overflow Flag
D - Direction Flag
I - Interrupt Flag
T - Trap Flag
S - Sign Flag
Z - Zero Flag
A - Auxiliary Carry Flag
P - Parity Flag
C - Carry Flag
X - Reserved (kosong)

Flag register ini merupakan suatu komposisi register 16 bit dengan ketentuan  seperti gambar diatas, dimana komposisi bit nya dapat mengecek apakah sesuatu berfungsi atau tidak.
  
MEMORY ACCESS 

Untuk mengakses memory kita dapat menggunakan 4 register : BX, SI, DI, BP. Register-register tersebut dapat dikombinasikan didalam simbol tanda kurung kotak [], kita bisa mendapatkan lokasi memori yang berbeda. Kombinasi ini didukung dengan mode pengalamatan (addressing modes) sebagai berikut:
d8 - merupakan penggantian nilai yang terdekat untuk 8 bit signed (contoh: 22, 55h, -1, etc...)
d16 - merupakan penggantian nilai terdekat untuk 16 bit signed (contoh: 300, 5517h, -259, etc...)

Penggantian dapat menjadi nilai yang terdekat atau offset dari variable atau keduanya. Jika ada beberapa nilai, assembler mengevaluasi semua  nilai tersebut dan mengkalkulasi sebagai nilai  terdekat tunggal. Umumnya compiler memperhatikan perbedaan antara d8 dan d16 dan men-generate kode mesin yang diperlukan. 

Contoh, diasumsikan DS=100, BX=30, SI=70. Mode pengalamatannya adalah : 

[BX + SI] + 25 yaitu dikalkulasi oleh processor 

ke physical address: 100 * 16 + 30 +70 + 25 =1725.

Defaultnya segmen register DA adalah digunakan untuk semua mode kecuali dengan register BP, untuk hal tersebut segmen register SS digunakan.

Ada cara mudah untuk mengingat semua kemungkinan tersebut dengan cara dibawah ini:




 

 

Komentar

Postingan Populer