SELAMAT DATANG DI AFIF BLOG

Subscribe:

Sabtu, 15 September 2012

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


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.



 

Dibawah ini adalah contoh dari code bahasa rakitan :

 
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.


TUGAS







A F I F


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.
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…



0 komentar:

Posting Komentar

SEMUA WAKTU ADALAH WAKTU YANG BAIK UNTUK MELAKUKAN HAL YANG BAIK

follow me