Bahasa Rakitan #4 / Register..Service..Interupsi

Bagaimana rasanya belajar bahasa rakitan sedari kemarin? apa sudah mulai muncul pusingnya karena bahasa yang sedikit agak aneh dan bilangan-bilangan yang belum tahu apa artinya plus message error yang bermunculuan saat code dicompileTASM file.asm“?ūüôā it’s OK semua itu pembelajaran, “ORANG HEBAT AKAN TERBENTUK DARI KESUKARAN, JERIH PAYAH, DAN AIR MATA”ūüėČ

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 :

 

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.

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.

Sebelum masuk ke pembahasan berikutnya, untuk lebih memahami lagi tentang register. silahkan modifikasi lagi code diatas sehingga bisa menampilkan nama anda.

Bagaimana hasil modifikasinya..? pasti berhasil donk ya...(entah berhasil muncul output yang sesuai, berhasil muncul message error, atau malah berhasil membuat kepala pusing) pokoknya yang penting berhasil dech..:-)

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

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.

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.

 

 

 

Bios Interrupt

DOS Interrupt

Sebelum mencoba dan menelaah lebih jauh dengan Interupt dan kawan kawannya, lagi-lagi kita coba bercode¬†ria. dibawah ada 2 code, silahkan dicoba and ingat resume nya ya…;-)

Satu lagi dech dicoba ya…

Bagaimana hasil dari code diatas ? silahkan disimpulkan, dan ini dia tantangannya..coba dech kolaborasikan code pertama dan ketiga ini sehingga bisa memunculkan output huruf ABCDEFGHIJKLMNO tapi…hanya pakai 1 kali INT 21H nya. oc…semoga sukses untuk kita semua…

2 Responses to “Bahasa Rakitan #4 / Register..Service..Interupsi”

  1. Semakin pusing….Tapi tetep semangat….Karena inget satu baris bait…di materi ini …?

  2. ea nih,,, benr kata temen”,,, semkin di pikir semakin mumet,,,hahha
    pi gpp lah optiomis ja,,,,,
    semga bisa mkin paham dengan tambahnya materi yang di berikan
    amin….^_^

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: