C++ Lanjutan

Register & Interupsi pada Mikroprosessor

Bagi anda yang berkutat dengan komputer dan isi-sinya mungkin sering mendengar istilah register dan mikroprosessor. Berikut saya mencoba memberikan penjelasan istilah tersebut dari beberapa sumber :

Mikroprosessor atau biasa dikenal dengan sebutan CPU adalah proses perhitungan dan pengolahan data (unit pengolah utama). Mikroprosessor ini terbuat dari “chip” atau sering disebut Integrated Circuit (IC).

Unit ini terdiri dari sebuah kalkulator dan unit pengontrol (CU).

Unit kalkulator dari mikroprosesor terdiri dari register atau daftar (sebuah memori sementara yang   cepat dan kecil), ALU, register status (menunjukkan keadaan sesaat dari perhitungan) dan sebuah pengkode.

Jenis-jenis register antara lain :

Register

Terdiri dari

Fungsi

General Purpose Register

AX

16 Bit

(2 Byte)

AH

(A High)

Akumulator : berhubungan dengan operasi khusus seperti

aritmatika, IN, OUT, shift, logika dan operasi binary decimal.

AL

(A High)

BX

16 Bit

BH

Base : berfungsi pada operasi rotate, aritmatika,

shift dan logika. Register BX juga dapat digunakan untuk mereferensikan alamat memori.

BL

CX

16 Bit

CH

Counter : khusus digunakan untuk operasi perulangan (loop) dan pencacah (counter)

CL

DX

16 Bit

DH

Data : digunakan pada operasi perkalian (MUL)

dan menyimpan sebagian hasil perkalian 32 bit atau menyimpan nilai sisa dari operasi

pembagian (DIV). Register DX juga digunakan pada operasi input/output suatu port.

DL

Pointer dan Index Register

SP (Stack Pointer) berpasangan dg

BP (Base Pointer)

 

menunjukan alamat stack saat terjadi operasi PUSH (menyimpan nilai ke dalam stack) dan POP (membaca nilai di dalam stack).

 

Register SI (Source Index) dan

 DI (Destination Index)

 

digunakan pada saat operasi string jika kita membuat program dalam bahasa assembly murni.

 

Register IP (Instruction Pointer)

Berpasangan dg

Register CS (Code Segment)

 

 

(IP) : berfungsi menunjukan alamat suatu instruksi program dalam memori saat program dijalankan

 

(CS) : yang menyimpan semua kode program dalam bentuk binari saat program dijalankan dan dimuat dalam memori

Segment Register

CS (Code Segment)

CS:IP  berfungsi menyimpan alamat instruksi

DS (Data Segment)

 

DS:DX yang menyimpan alamat data

 

SS (Stack Segment)

 

menyimpan alamat memori stack

 

ES (Extra Segment)

 

menyimpan alamat segment tambahan

 

Flag Register

CF

Carry Fag

menandakan jika suatu instruksi ADD menghasilkan nilai carry, atau suatu instruksi SUB menghasilkan nilai borrow

PF

Parity Flag

menandakan jika suatu instruksi menghasilkan nilai genap atau ganjil.

Register ini akan bernilai 1 jika bilangan yang dihasilkan bernilai genap.

AF

Auxiliary Carry Flag

digunakan untuk operasi desimal berkode binari (BCD), seperti pada operasi AAA (ASCII Adjust for Addition).

OF

Overflow Flag

menandakan jika suatu operasi aritmatika mengalami overflow

(melebihi jangkauan nilai yang telah ditentukan atau hasil operasi aritmatika melebihi

ukuran register).

SF

Sign Flag

digunakan pada operasi aritmatika yang menggunakan bilangan bertanda (bilangan positif atau bilangan negatif).

ZF

Zero Flag

menandakan jika suatu operasi aritmatika  menghasilkan nilai nol.

DF

Direction Flag

digunakan pada operasi string yang menunjukan arah proses.

IF

Interrupt Enable Flag

menandakan jika CPU akan memproses interupsi jika bernilai

1 atau mengabaikan interupsi jika bernilai nol.

TF

Trap Flag

digunakan saat debugging, dengan mode single step.

NT

Nested Task

digunakan untuk memantau jalannya interupsi yang terjadi secara

beruntun.

IOPL

I/O ProtectiOn Level

flag ini digunakan jika program berjalan pada mode terproteksi (protected mode).

PE

Protection Enable

flag ini digunakan untuk mengaktifkan mode terproteksi.

MP

Monitor Coprocessor

digunakan untuk memantau kerja coprocessor dan menangani terjadinya instruksi WAIT.

EM

Emulate Coprocessor

digunakan jika prosesor akan mengemulasikan kerja coprocessor.

ET

Extention Type

digunakan untuk menentukan jenis coprocessor (80287 atau 80387).

VF

Virtual 8086 Mode

digunakan jika ingin menjalankan aplikasi real mode pada protected mode.

  

Interupsi adalah permintaan kepada mikroprosesor untuk melakukan tugas tertentu, ketika terjadi interupsi maka mikroprosesor menghentikan dahulu instruksi yang sedang dikerjakan dan menjalankan tugas yang diminta sesuai dengan interupsi yang diberikan.

dua jenis interupsi, yaitu

interupsi BIOS (Basic Input Output System) ditanam pada chip ROM BIOS oleh pabrik komputer

interupsi DOS (Disk Operating System) : hanya dapat digunakan jika komputer menjalankan sistem operasi DOS atau Microsoft Windows.

setelah nomor interupsi selalu diakhiri oleh huruf h. yang artinya interupsi yang digunakan diberikan dalam bentuk bilangan heksadesimal

Berikut Daftar Interupsi BIOS 10h beserta service-nya (Interupt yang biasa dipakai)

10h

Video Services - installed by the BIOS or operating system; called by software programs

AH

Description

00h

Set Video Mode (Mengubah mode video)

01h

Set Cursor Shape (Mengub ukuran kursor pada mode text

02h

Set Cursor Position (Meletakkan kursor  pd posisi tertentu

03h

Get Cursor Position And Shape (Memperoleh informasi posisi kursor & ukurannya)

04h

Get Light Pen Position

05h

Set Display Page (Merubah halaman tampilan aktif)

06h

Clear/Scroll Screen Up (Menggulung jendela ke atas)

07h

Clear/Scroll Screen Down  (Menggulung jendela ke bawah)

08h

Read Character and Attribute at Cursor (Membaca  karakter & atribut pd posisi kursor)

09h

Write Character and Attribute at Cursor (Mencetak karakter & atribut pd posisi kursor)

0Ah

Write Character at Cursor (Mencetak karakter pd posisi kursor)

0Bh

Set Border Color

0Eh

Write Character in TTY Mode (Output karakter sederhana)

0Fh

Get Video Mode (Mendapatkan mode video aktif)

13h

Write String (Mencetak string ke layar)

 

 

untuk mendapatkan daftar interrupt yang lainnya mungkin anda bisa cari di google atau dibahas pada dipertemuan berikutnya.

Untuk setiap pemakaian service, semua ada ketentuannya. 

Contoh : Interrupt 10h service 09 berfungsi untuk mencetak karakter & atribut pd posisi kursor

untuk register AH  diberi nilai 09 hexa

untuk register AL  diberi nilai kode ASCII karakter, bisa berupa desimal ataupun hexa

untuk register BH  nomor halaman

untuk register BL atribut karakter (background & foreground)

untuk register CX berisi jumlah pengulangan pencetakan karakter

Materi