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.
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
Posting Komentar