Berikut ini adalah artikel membahas tentang Memanggil Interupsi BIOS atau DOS Menggunakan Fungsi int86 pada C++ .
Borland C++, menyediakan fungsi untuk menjalankan suatu interupsi BIOS atau
DOS, yaitu fungsi int86. Nama fungsi ini dideklarasikan di file header dos.h, berikut ini sintaks dari fungsi int86 ;
int int86(int nomor, union REGS *inregs,
union REGS *outregs)
|
Keterangan ;
int nomor, nomor interupsi yang akan dijalankan. union REGS *inregs, representasi register pada mikroprosesor yang berisi nilai yang akan
digunakan untuk menjalankan interupsi.
union REGS *outregs, representasi register pada mikroprosesor setelah interupsi
dijalankan.
Pada fungsi int86, parameter nomor bertipe integer dan dikirimkan secara nilai (by value), dan
sedangkan parameter inregs dan outregs merupakan tipe data union REGS yang telah didefinisikan pada header dos.h dan dikirimkan secara acuan (by reference). Diharapkan pembaca telah memahami tipe data union dan struktur serta pengiriman parameter secara acuan atau secara nilai. Fungsi int86 mengembalikan nilai bertipe integer dari register AX setelah interupsi dijalankan. Tipe data union REGS yang didefinisikan pada file header dos.h merupakan union yang terdiri dari struktur WORDREGS dan BYTEREGS.
Berikut ini adalah deklarasi union REGS pada file header dos.h ;
union REGS {
struct WORDREGS x;
struct BYTEREGS h;
};
|
struct BYTEREGS {
unsigned char al, ah, bl, bh;
unsigned char cl, ch, dl, dh;
};
struct WORDREGS {
unsigned int ax, bx, cx, dx;
unsigned int si, di, cflag, flags;
};
|
Dari perincian diatas, dapat disimpulkan bahwa struktur BYTEREGS merepresentasikan register-register pada General Purpose Register yang berukuran 8 bit (1 byte), yaitu AL, AH, BL, BH, CL, CH, DL dan DH. Sedangkan struktur WORDREGS merepresentasikan register-register pada General Purpose Register yang berukuran 16 bit (2 byte) ditambah register SI, DI dan Flag Register. Struktur WORDREGS maupun BYTEREGS menempati lokasi memori yang sama dalam union REGS.
Berikut ini saya akan berikan contoh sederhana penggunaan int86 untuk mencetak karakter menggunakan interupsi BIOS 10 heksadesimal servis 09 heksadesimal ;
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#define VIDEO_INT 0x10 // BIOS Video Interrupt
int main(void)
{
union REGS in, out; // Deklarasi variabel
in.h.ah = 0x09; // AH = 9 heksadesimal
in.h.al = 'A'; // AL = 41 heksadesimal, huruf A
in.h.bh = 0x00; // BH = 0, halaman video
in.h.bl = 0x0E; // BL = E, warna huruf dan dasar
in.h.ch = 0x00; // CH dan CL menentukan banyak
in.h.cl = 0x01; // huruf yang akan dicetak
clrscr();
int86(VIDEO_INT, &in, &out);
getch();
return EXIT_SUCCESS;
}
|
Berikut ini adalah foto contoh Codingan yang sama dengan di atas ;
Dan ini hasil yang sudah diruning ;
Begitulah kiranya yang dapat saya ketahui kurang lebihnya saya mohon maaf,
wassallamuallaikum.wr.wb
Komentar spam dilarang
EmoticonEmoticon