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)
Video Services - installed by the BIOS or operating system; called by software programs
|
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