Pemrograman Bahasa Rakitan (Assembly) " Register..Service..Interupsi" VOL 3


mempelajari bahasa rakitan memang memerlukan perjuangan yang lumayan menguras pikiran, namun ketika memetik hasilnya akan sangat luar biasa sebab bisa diterapkan ke banyak bidang dan banyak kemanfaatan dalam kehidupan.
Kita lihat lagi code kemarin…






Dari code diatas, sebetulnya beberapa baris ada kemiripan instruksi seperti MOV AH,02H dan MOV DL,65 kemudian INT 21H dan INT 20H. karena ada kemiripan, maka kita bagi saja jadi 2 struktur seperti ini :









1.  Perintah untuk memindahkan sebuah nilai yang berada di sumber menuju ke tujuan atau bahasa lainnya mengisikan nilai ke tujuan dari sumber. MOV AH,02H tujuannya berada di sebelum koma sedangkan sumbernya berada di setelah koma. untuk lengkapnya nanti di postingan tentang kamus bahasa rakitan.


2. Bagian ini contoh dari salah satu Register. koq salah satu? ya..karena register akan ada beberapa yang fungsi sudah ditentukan masing-masingnya. Apa sich REGISTER itu ? Komputer mempunyai memori yang letaknya berada di luar prosesor dan dalam prosesor. nah..register sendiri adalah memori yang letaknya berada di dalam prosesor.
Perbedaan register dengan memori lainnya yang berada di luar prosesor adalah dari segi kapasitas dan kecepatannya, kalau memori diluar prosesor kapasitasnya bisa mencapai Mega bahkan Giga dengan kecepatan akses yang rendah. namun reigster sebaliknya, ia mempunya kapasitas yang kecil hanya dalam satuan bit saja dengan kecepatan yang sangat tinggi.
JENIS REGISTER
1. Segment Register
2. Pointer dan Index Register
3. Flags Register
4. General Purpose Register
SEGMENT REGISTER
Register ini digunakan untuk menunjukan alamat dari suatu segment. beberapa register ini adalah CS, DS, ES dan ES yang masing-masing berukuran 16 bit.
POINTER dan INDEX REGISTER
Register ini digunakan sebagai petunjuk atau pointer terhadap suatu lokasi memory. beberapa register ini adalah SP, BP,SI,DI yang masing-masing berukuran 16 bit.
FLAGS REGISTER
Register ini akan digunakan sebagai tempat penyimpanan tanda. seperti namanya, FLAGS register ini akan menyimpan data yang berupa keadaan 1 atau 0, ya atau tidak.
OF (Overflow Flag) = jika terjadi overflow pada operasi aritmatika, register ini akan bernilai 1.
SF (Sign Flag) = register ini akan bernilai 1 jika digunakan bilangan bertanda.
ZF (Zero Flag) = register ini akan bernilai 1 jika operasi bernilai nol.
CF (Carry Flag) = akan bernilai 1 jika terjadi carry pada operasi penjumlahan dan borrow pada operasi pengurangan.


GENERAL PURPOSE REGISTER (GPR)
Beberapa register yang masuk kedalam kategori GPR yaitu AX, BX, CX, DX yang masing-masing berukuran 16 bit. register ini bisa dipisah jadi 2 kondisi High (akhiran H) dan kondisi Low (akhiran L) seperti berikut :
Register ini bernama Accumulator Register. beberapa fungsi dari register ini :
AH, Tempat menyimpan nomor service (untuk memesan layanan interupsi)
AL, AX, EAX (Extra AX) tempat menyimpan bilangan pada operasi aritmatika

Register ini bernama Base Register. fungsi register ini tempat menyimpan alamat offset data yang treletak pada memori selain itu juga dapat digunakan sebagai operasi aritmatika dan logika.

Nama dari register ini adalah Counter Register. fungsi dari register ini adalah
CX, ECX Sebagai pencacah pada operasi perulangan (loop)
CL sebagai pencacah untuk operasi shift dan rotate
CX sebagi pencacah operasi shift pada operasi string

Data Register, fungsinya sebagai berikut :
Tempat penyimpanan setengah bagian terbesar hasil dari perkalian bilangan 16bit (DX-AX) dan 32bit (EDX-EAX)
Tempat penyimpanan setengah bagian terbesar  suatu bilangan yang akan dikenai operasi pembagian (DX-AX dan EDX-EAX), serta suatu pembagian (DX dan EDX)
DL Tempat penyimpanan data hexadesimal (kode ASCII) yang akan dicetak ke layar monitor.
Register-register diatas sangatlah berpengaruh pada sebuah proses, karena tidak semua register dapat menampung apa yang akan kita simpan. kita harus tepat dalam memilih register yang akan digunakan untuk penyimpanan atau penunjukan alamat memori.


3. Bagian tiga ini akan erat kaitannya dengan bagian 4 dan 5, mengapa? karena bagian ini merupakan nomor service yang akan berpasangan dengan interupsi.



4. Instruksi ini singkatan dari Interupt. pemberian instruksi ini yang dilengkapi dengan nomor interupsi (bagian 5) akan menjadikan trigger kepada prosesor untuk melakukan sebuah action. Bila terjadi interupsi, maka komputer akan menghantikan sementara apa yang sedang dikerjakannya dan melakukan apa yang diminta lewat interupsi. Program yang melayani suatu interupsi dinamakan Interupt Handler.


5. Dibagian inilah penentuan apa dan kapan prosesor harus melakukan sesuatu. setelah perintah INT dilanjutkan dengan Vector Interupt yaitu nomor dari Interupt Handler.  Alamat dari masing-masing interupt handler tercatat di memori dalam bentuk array yang besar elemennya masing-masing 4 byte.
Interupt berjumlah 256 buah, dibagi menjadi 2 macam, yaitu :
Interupt 00h – 1Fh (0 – 31) : interupt ini adalah interupt BIOS. interupt yang standar untuk semua komputer baik dengan OS DOS atau bukan.
Interupt 20h-FFh (32-255) : ini adalah Interupt DOS. hanya ada pada komputer yang ber OS DOS.


Comments