Jumat, 06 Januari 2017

rangkuman pertemuan satu

Penggunaan int86 untuk mencetak karakter menggunakan interupsi BIOS 10 heksadesimal servis 09 heksadesimal   


Berikut adalah kode programnya :









Baris 1 sampai baris 3 pada program diatas merupakan penentuan header yang akan digunakan, yaitu conio.h, dos.h dan stdlib.h. Header conio.h digunakan karena pada baris 18 kita akan menggunakan fungsi clrscr dan pada baris 20 kita akan menggunakan fungsi getch. Header dos.h digunakan karena pada baris 9 kita mendeklarasikan variabel in dan out menggunakan tipe union REGS serta pada baris 19 kita akan memanggil fungsi int86. Header stdlib.h digunakan karena pada baris 22 kita akan menggunakan nilai konstanta EXIT_SUCCESS.
Pada baris 5 kita mendeklarasikan konstanta dengan nama VIDEO_INT yang bernilai 10 heksadesimal. Konstanta ini digunakan saat memanggil fungsi video int86 untuk menjalankan interupsi 10 heksadesimal servis 9 heksadesimal. Cobalah untuk mengganti nilai pada in.h.bl dari yang semula 0x07 menjadi nilai lain, misalnya 0x0a, 0x09 atau 0x04 kemudian jalankan program. Apa yang terjadi?
Pada contoh diatas variabel yang digunakan bernama in dan out. Perhatikanlah cara memberikan nilai pada variabel in yang merupakan union REGS pada baris 11 sampai baris 16. Pada contoh diatas in.h.ah, atau in.h.al dan sebagainya berarti memberikan nilai union REGS pada struktur BYTEREGS dengan nama h dan field ah atau al yang bertipe unsigned character.
Dan berikut hasil outputnya:


Berikut ini adalah program dengan tujuan yang sama seperti pada contoh diatas untuk mencetak huruf A di layar. Perbedaannya adalah fungsi int86 digantikan dengan kode-kode inline assembly, berikut ini adalah kode programnya ;



baris 11 sampai dengan baris 16 berisi 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.

Tidak ada komentar:

Posting Komentar