Teknik inline assembly adalah teknik menuliskan kode-kode bahasa assembly diantara kode-kode bahasa pemrograman lainnya, seperti Pascal , C dan C++. Tidak semua kompilator memiliki kemampuan untuk meng-compile kode inline assembly, tetapi Borland C++ dan Turbo C/C++ memiliki kemampuan ini.
Cara menggunakan teknik inline assembly pada Borland C++ 5.02 adalah dengan menggunakan kata cadangan asm lalu diikuti kode program bahasa assembly dan diakhiri dengan tanda semicolon/titik koma (;). Berikut adalah contoh sintaks yang menggunakan kata kunci asm:
Kata kunci asm bisa juga diketikan sebagai blok pernyataan, contohnya seperti gambar di bawah ini:
Di bawah ini adalah contoh program yang sama seperti contoh01.cpp untuk mencetak huruf A di layar monitor. Perbedaannya adalah fungsi int86 digantikan dengan kode-kode inline assembly, berikut contoh programnya dan simpan dengan nama file project contoh02.ide dan file kode program contoh002.cpp
*Filenya dapat di unduh disini
Perhatikan baris 11 sampai baris 16! Instruksi mov ah, 0x09 artinya adalah instruksi tersebut di gunakan untuk menyimpan nilai 9 heksadesimal kedalam register AH. Fungsi tersebut juga berlaku untuk instruksi mov bh, 0x00 atau mov cl, 0x01. Dalam pemrograman bahasa assembly opcodemov digunakan untuk memberikan nilai kedalam suatu operand.
Selanjutnya perhatikan baris 17. Pada baris ini instruksi int VIDEO_INT bukan mendeklarasikan variabel VIDEO_INT dengan tipe data integer, tetapi untuk menjalankan interupsi yang nilainya disimpan dalam konstanta VIDEO_INT, yaitu 0x10 atau 10 heksadesimal. Dalam pemrograman bahasa assembly opcode int digunakan untuk menjalankan interupsi sesuai dengan nomor interupsinya sesudah kata kunci int.
Sekian pembahasan hari ini semoga bermanfaat yaa, sampai ketemu di pembahasan selanjutnya.....
nb : Apabila kamu belum mengerti tanyakan saja di kolom komentar..
assalamu'alaikum
BalasHapuska saya mau tanya. itu untuk "asm mov ah, = 0x9;"
itu kenapa setiap setelah asm pasti pakai mov, dan kenapa setiap pemasukkan kode harus angkanya di kalikan 0?
seprti 0x09; atau 0x5a?
tolong jawabannya yah ka. ^_^
terimakasih sebelumnya
Thanks min, lebih gampang dicerna dibandingin baca modul.
BalasHapus