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