Minggu, 07 Mei 2017

Memanggil Interupsi BIOS dan DOS Menggunakan Teknik Inline Assembly pada C++


Memanggil Interupsi BIOS dan DOS Menggunakan Teknik Inline Assembly

Teknik inline assembly adalah teknik menuliskan kode-kode bahasa assembly diantara kode-kode bahasa pemrograman yang lain seperti Pascal dan C/C++. Tidak semua kompilator memiliki kemampuan mengkompilasi kode inline assembly, 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 dan diikuti oleh kode program bahasa assembly serta diakhiri dengan tanda semicolon/titik koma (;). Berikut sintaks penggunaan kata kunci asm:

asm <opcode> <operand>; /* Komentar bahasa C/C++ */

Kata kunci asm bisa juga diketikan sebagai blok pernyataan, seperti berikut ini:

asm {
  <opcode> <operand>; /* Komentar Bahasa C/C++ */
  <opcode> <operand>; /* atas baris baru */
}
Berikut ini adalah program dengan tujuan yang sama seperti pada contoh project cpp001.cpp untuk mencetak huruf A di layar. Perbedaannya adalah fungsi int86 digantikan dengan kode-kode inline assembly, berikut ini adalah kode programnya yang disimpan dengan nama file project contoh contoh project cpp002.ide dan file kode program contoh project cpp002.cpp.

*anda bebas menentukan nama penyimpanan sesuka anda
#include<conio.h>
#include<dos.h>
#include<stdlib.h>

#define VIDEO_INT 0x10 // BIOS Video Interrupt

int main(void)
{
  clrscr();

  asm mov ah, 0x09;    // AH = 9 heksadesimal
  asm mov al, 0x81;     // AL = 81 heksadesimal, symbol ΓΌ
  asm mov bh, 0x00;   // BH = 0 heksadesimal, halaman layar
  asm mov bl, 0x18;   // BL = 18 heksadesimal, warna huruf
  asm mov ch, 0x00;   // CH dan CL menentukan banyak
  asm mov cl, 0x01;   // huruf yang dicetak
  asm int VIDEO_INT; // Interupsi BIOS 10h

  getch();
  return EXIT_SUCCESS;
}

Perhatikanlah baris 11 sampai dengan baris 16! Instruksi mov ah, 0x09 artinya menyimpan nilai 9 heksadesimal kedalam register AH. Demikian juga dengan instruksi mov bh, 0x00 atau mov cl, 0x01. Dalam pemrograman bahasa assembly opcode mov digunakan untuk memberikan nilai kedalam suatu operand, dalam hal ini register AH, AL, BH, BL dan sebagainya. Kemudian amati pula baris 17. Pada baris 17 instruksi int VIDEO_INT bukan berarti mendeklarasikan variabel VIDEO_INT dengan tipe data integer, melainkan menjalankan interupsi yang nilai interupsinya disimpan dalam konstanta VIDEO_INT, yaitu 0x10 atau 10 heksadesimal. Dalam pemrograman bahasa assembly opcode int digunakan untuk menjalankan interupsi sesuai dengan nomor interupsi sesudah kata kunci int.

Berikut ini adalah contoh codingan contoh project cpp002 yang sama seperti di atas:

Berikut ini adalah output atau hasil keluaran yang sudah di running:

Sekian tutotial dari saya mengenai bagaimana cara Memanggil Interupsi BIOS dan DOS Menggunakan Teknik Inline Assembly. Jika program di atas tidak mau running, coba anda periksa lagi codingan yang anda ketikan sebelumnya karena program Borland C++ ini sangat sensitive, jika salah sedikit dan tidak akan mau running. Jadi, harus teliti ya teman-teman dalam mengetikan program di Borland C++.

Related Posts

Memanggil Interupsi BIOS dan DOS Menggunakan Teknik Inline Assembly pada C++
4/ 5
Oleh

Subscribe via email

Like the post above? Please subscribe to the latest posts directly via email.