Anda di halaman 1dari 17

SISTEM KERJA

MIKROPROSESOR x86

Percobaan I
Tujuan Percobaan
1. Mempelajari hubungan bahasa tingkat rendah dengan arsitektur mikroprosesor. 2. Memahami konsep pemograman modular dan pengolahan data dalam memori 3. Memecahkan masalah kompeks dalam manipulasi data di dalam mikroprosesor dan memori.

Teori Dasar
CPU (Central Processing Unit) sesuai dengan namanya merupakan otak pada sebuah komputer. Semua kalkulasi, pengambilan keputusan, dan pemindahan data dilakukan disini. CPU memiliki tempat penyimpanan yang disebut register. Dalam sebuah CPU juga terdapat ALU (Arithmetic and Logic Unit) yang digunakan untuk melakukan operasi operasi penjumlahan, pengurangan, inversi, OR, AND, dan XOR. Proses yang dilakukan CPU secara umum adalah sebagai berikut, mengambil data dari register, kemudian diproses, dan selanjutnya dikembalikan lagi ke register.

Keluarga 80x86
Pada keluarga 80x86, mikroprosesor 8086 merupakan mikroprosesor generasi pertama yang diperkenalkan pada tahun 1978. Generasi ini berkembang hingga saat ini (Pentium II di tahun 1997). Banyak sekali perbedaan perbedaan yang terjadi pada proses metamorfosa keluarga mikroprosesor ini. Tetapi perubahan yang terjadi tetap selalu menjaga kompatibilitas mikroprosesor sebelumnya. Sehingga antara generasi pertama hingga generasi saat ini masih memiliki kesamaan karakteristik yang mendasar, kesamaan tersebut hanya terjadi bila mikroprosesor melakukan operrasi operasi 16-bit. Berikut adalah kesamaan yang dimiliki oleh keluarga 80x86 : General Purpose Register CPU memiliki 4 buah general purpose register yang selalu ditandai dengan akhiran X, yaitu AX (Accumulator), BX (Base), CX (Count), dan DX (Data) dengan ukuran masing-masing sebesar 16-bit. Register ini dapat dipisah menjadi dua bagian di mana masing-masing bagian terdiri atas 8-bit. Bagian pertama disebut dengan H

Modul I - x86

(High) dan bagian yang lain sebagai L (Low). Register 8-bit ini dapat menyimpan bilangan bulat posistif atara 0 sampai 127 dan bilangan bulat antara 128 sampai +127. Register digunakan sebagai referensi awal untuk lokasi alamat pada RAM
15 7 AX BX CX DX 0 Multiply, devide, IO, dan fast arithmetic Pointer to base address (data segment) Count for loops, repeats, shifts, dan rotates Multiply, devide, dan IO

Accumulator Base Count Data

AH BH CH DH

AL BL CL DL

Gambar 1 General-Purpose Registers untuk mikroprosesor keluarga 80x86

disebabkan transfer data antara RAM dengan CPU membutuhkan waktu yang cukup lama. Pada mikroprosesor 80386 ke atas akan mendapat tambahan register EAX (Extended Accumulator), EBX (Extended Base), ECX (Extended Count), dan EDX (Extended Data). Index Register CPU juga memiliki 2 buah index register yang selalu ditandai dengan akhiran I, yaitu SI (Source Index) dan DI (Destination Index). Register ini dapat digunakan untuk penyimpanan, tetapi tidak dapat mengakses 1 byte pada satu waktu yang bersamaan, sehingga membuat register ini kurang fleksibel. Tetapi SI dan DI memiliki kekhususan dalam menangani operasi string.

Source Index Destination Index

Source string dan index pointer

SI
Destination string dan index pointer

DI

Gambar 2 Index Registers untuk mikroprosesor keluarga 80x86.

Pada mikroprosesor 80386 ke atas akan mendapat tambahan register ESI (Extended Source Index) dan EDI (Extended Destination Index). Pointer Register Di dalam CPU mengenal 3 buah pointer register yang juga selalu ditandai dengan akhiran P, yaitu IP, SP, dan BP. Pada mikroprosesor 80386 ke atas akan

Modul I - x86

mendapat tambahan register EIP (Extended Instruction Pointer), ESP (Extended Stack Pointer), dan EBP (Extended Base Pointer). IP (Instruction Pointer) Register menunjukan alamat di memori tempat dari intruksi selanjutnya akan dieksekusi. Ketika eksekusi selesai, IP bertambah ke instruksi berikutnya. Instruksi Jump, nilai IP berubah mengikuti arah Jump. Sedangkan untuk instruksi Call, nilai IP akan berubah kembali setelah dikembalikan dari stack. SP (Stack Pointer) Stack menggunakan aturan sistem penyimpanan secara LIFO (Last In First Out). Stack digunakan untuk menyimpan penunjukan alamat yang akan terpakai kemudian, dan penunjukan alamat tersebut dapat dikeluarkan dari stack pada saat akan digunakan. SP berpasangan dengan segment register SS (SS:SP).

Base Pointer Stack Pointer Instruction Pointer

Pointer to base address (stack segment) BP Pointer top of stack SP IP

Gambar 3 Pointer Registers untuk mikroprosesor keluarga 80x86

BP (Base Pointer) BP digunakan sebagai pencatat suatu alamat di memori tempat data. BP ini berpasangan dengan segment register SS (SS:BP). Segmented Addressing dan Segment Register Segmented Addressing adalah sebuah mekanisme internal yang mengijinkan mikroprosesor untuk melakukan pengalamatan sebesar 1 Mbyte pada memori utama 1. Dengan mekanisme ini mikroprosesor dapat mengakses memori utama dengan cara mengkombinasikan 2 buah alamat 16-bit. Dua buah alamat tersebut dapat di representasikan di dalam program sebagai berikut : segmen:offset Pada 16-bit alamat pertama, merupakan alamat segmen. Sedangkan alamat berikutnya adalah alamat offset. Kerja yang dilakukan alamat segmen yaitu memilih 64K area memori, dan alamat offset bekerja sebagai pemilih byte di dalam sebuah area. Berikut akan dijelaskan mengenai cara kerjanya:

Modul I - x86

10

1. Alamat segmen akan digeser oleh mikroprosesor sebanyak 4-bit ke kiri, sehingga akan menghasilkan alamat 20-bit dengan akhiran 0. Operasi ini sama dengan efek pada perkalian 16. 2. Mikroprosesor akan menambahkan alamat 20-bit ini dengan alamat offset 16bit. Dimana alamat offset tidak mengalami pergeseran. 3. Mikroprosesor menggunakan hasil dari alamat 20-bit ini yang disebut dengan alamat fisik / physical Address yang digunakan untuk mengakses lokasi alamat yang sebenarnya pada ukuran 1 Mbyte. Gambar 4 merupakan ilustrasi proses Segmented Addressing. Sebenarnya mikroprosesor keluarga 80x86 hanya dapat menangani pengalamatan 64K pada satu waktu (karena ukuran register yang dipergunakan hanya sebesar 16-bit). Dengan penggunaan mekanisme ini, mikroprosesor keluarga 80x86 mampu untuk menjangkau seluruh alamat sebesar 1 Mbyte.
15 0 15 0

16-bit segment register

Segment register shifted left 4 bits


15 0

16-bit offset
19 0

20-bit physical address Gambar 4 Mengilustrasikan bagaimana mikroprosesor keluarga 80x86 menghitung alamat fisik

Ada 4 buah segment register yang selalu ditandai dengan akhiran S, yaitu CS, DS, SS, dan ES. Sedangkan pada mikroprosesor 80386 ke atas terdapat tambahan register segmen 16-bit, yaitu FS (Extra Segment) dan GS (Extra Segment). CS (Code Segment) CS (Code Segment) selalu digunakan oleh mikroprosesor untuk menunjukan tempat dari segmen alamat yang instruksi berikutnya akan diproses oleh IP (Instruction Pointer). IP merupakan alamat offset. CS:IP merepresentasikan instruksi berikutnya pada jangkauan alamat memori penuh.

Lihat percobaan III

Modul I - x86

11

DS (Data Segment) Register DS (Data Segment) biasanya digunakan untuk menunjukan tempat segmen di mana data-data program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada program residen.

Code Segment Data Segment Stack Segment Extra Segment

CS DS SS ES

Gambar 5 Segment Register untuk mikroprosesor keluarga 80x86

SS (Stack Segment) Ketika mikroprosesor mengakses data pada stack, proses tersebut menggunakan SS (Stack Segment). SS:SP selalu menunjuk pada suatu alamat di memori yang merupakan posisi dari stack. ES (Extra Segment) Register ES (Extra Segment), sesuai dengan namanya adalah suatu register bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya digunakan untuk menunjukan suatu alamat di memori yang berada diluar daerah standar. ES sangat berperan di dalam instruksi string. Dengan cara ini, register DI selalu relatif ke alamat segmen ES. Flag Register Register ini berisikan flag yang merupakan laporan status dari CPU 2. Adapun flag yang digunakan pada mikroprosesor 8086 keatas adalah :
O D I T S Z OverFlow Direction Interrupt Enable Trap Sign Zero Flag akan mencatat jika hasil yang didapat terlalu besar untuk ditempatkan didalam register Digunakan pada operasi string untuk menunjukan arah proses CPU akan mengabaikan interupsi jika flag ini disable Digunakan untuk proses instrusi secara bertahap Flag akan mencatat jika hasil kalkulasi bernilai negatif. Flag akan mencatat jika hasil kalkulasi bernilai 0.

Lihat percobaan III

Modul I - x86

12

Auxiliary Carry

Flag akan mencatat jika operasi menghasilkan carry atau borrow pada 4-bit bagian rendah. Flag ini digunakan pada operasi BCD. Flag akan mencatat jika bilangan yang dihasilkan adalah bilangan genap Jika terjadi carry atau borrow pada operasi aritmatika maka akan dicatat oleh flag.

P C

Parity Carry

Tabel 1 Susunan flag yang digunakan pada mikroprosesor 8086 ke atas 3.

NT 15

IOPL

C 0

7 Gambar 6 Model flag untuk mikroprosesor keluarga 80x86

Sedangkan flag lain yang berlaku pada keluarga 80x86 ini adalah :
NT IOPL Nested Task * IO Protection Level
*

Flag yang berfungsi untuk menjaga jalannya interupsi yang terjadi secara berurutan Flag ini terdiri atas 2 bit digunakan untuk mode proteksi Flag akan mencatat jika mode proteksi digunakan dan sebaliknya akan berada pada mode real Digunakan bersama flag trap untuk menangani terjadinya instruksi WAIT Flag ini digunakan untuk prosesor matematik x87 mengemulasikan

PE

Protection Enable *

MP EM TS ET RF

Monitor Coprosessor * Emulate Coprosessor Task Switched * Extention Type * Resume Flag
** *

Flag ini dapat dijumpai pada mikroprosesor 80286 ke atas Flag ini digunakan untuk menentukan jenis prosesor matematik 80287 atau 80387 Flag ini dapat dijumpai pada mikroprosesor 80386 ke atas Flag akan mencatat jika mode proteksi digunakan, sehingga memungkinkan menggunakan mode real pada saat mode proteksi digunakan.

VF

Virtual 8086 mode

**

Tabel 2 Susunan flag tambahan yang dapat digunakan pada mikroprosesor 80286 dan 80386

Penamaan flag ini digunakan oleh Microsoft, sedangkan Intel menambahkannya dengan akhiran F pada tiap susunan. * Terdapat pada mikroprosesor 80286 ke atas ** Terdapat pada mikroprosesor 80386 ke atas Modul I - x86

13

Tugas
1. Amati dan pahami format penulisan setiap instruksi dan kegunaan dari setiap instruksi yang digunakan. 2. Buka PROG2A.ASM, pelajari program tersebut. 3. Buka Command Prompt dengan mengetik CMD pada menu Run di start menu. Pindah ke direktori tempat file percobaan berada. Ketik tasm PROG2A.ASM. Ubah file object menjadi .exe dangan perintah tlink PROG2A.OBJ. Debug program yang sudah jadi untuk melihat cara kerjanya. Jalankan program langkah demi langkah, perhatikan perubahan isi register dan flag yang bersangkutan. 4. Kerjakan borang yang telah disediakan.

Modul I - x86

14

Percobaan II
Tujuan Percobaan
1. Mempelajari instruksi instruksi dasar pada pemograman bahasa tingkat rendah. 2. Memahami penerapan algoritma / flow chart pada bahasa tingkat rendah. 3. Membuat dan menganalisa program sederhana maupun kompleks dengan

menggunakan bahasa tingkat rendah.

Teori Dasar Instruksi instruksi dalam bahasa mesin dilambangkan dengan pola 1 dan 0. Tetapi bila dalam menulis suatu program menggunakan pola pola ini tentu akan menyulitkan bagi penggunanya. Untuk memudahkan maka digunakan simbol simbol nama untuk mewakili pola 1 dan 0 tersebut. Simbol nama ini disebut dengan mnemonic. Sedangkan kumpulan dari mnemonic ini dan aturan aturannya yang membentuk suatu bahasa pemrograman, sering disebut dengan pemrograman tingkat rendah atau Assembly. Program yang ditulis dalam bahasa tingkat rendah dapat langsung diterjemahkan ke bahasa mesin melalui suatu program khusus yang disebut dengan Assembler. Format umum penulisan tiap baris pada pemrograman tingkat rendah adalah sebagai berikut : [label :] Mnemonic [operand1] [,operand2] [;comment]

Pada bagian mnemonic ada assembler command yang tidak akan di eksekusi oleh mikroprosesor, yang disebut Assembler Directives. Assembler directives hanya merupakan instruksi bagi program tingkat rendah. Contohnya yang sering digunakan ialah ORG, EQU, END, DB, DW, DS. Jenis jenis instruksi dasar pada bahasa pemrograman tingkat rendah : Instruksi Pengalamatan dan Pemindahan Data Direct Adressing Direct addressing adalah suatu pengalamatan data, di mana data tersebut terdapat di dalam alamat yang terdapat dalam instruksi. Contohnya instruksi ADD 20, menyebabkan CPU untuk menambahkan isi dari Akumulator dengan data di dalam address 20 ( [A] = [A] + [20] ). Perhatikan bahwa alamat 20 tidak

Modul I - x86

15

harus berisi 20 juga. Direct addressing dapat menjangkau alamat yang ada di memori pada setiap saat. Indirect Addressing
Memori Program
ADD 20

Memori Data
19 20 21 5 7 3

Akumulator +
5

Gambar 1 Ilustrasi penggunaan direct addressing. Memori Program


ADD @20

Memori Data
6 7 8 .. 19 20 21 15 75 3814 5 7 3

Akumulator +
5

Gambar 2 Ilustrasi penggunaan indirect addressing.


Indirect Adressing adalah suatu pengalamatan data, di mana data yang diinginkan ada di dalam alamat yang terdapat dalam isi dari alamat yang terdapat pada instruksi. Contohnya instruksi ADD @20, menyebabkan CPU untuk menambahkan isi akumulator dengan isi dari alamat yang terdapat di alamat 20 ( [A] = [A] + [[20]] ). Indirect addressing dapat menjangkau alamat yang lebih luas dari pada direct addressing.

Immediate Addressing Immediate addressing adalah suatu pengalamatan data, di mana data yang diinginkan terdapat pada instruksi. Contohnya ADD #20, menyebabkan CPU untuk menambahkan isi akumulator dengan 20 ( [A] = [A] + 20 ). Pengalamatan jenis ini bersifat statis.
Memori Program
ADD @20

Akumulator +
5

Gambar 3 Ilustrasi penggunaan immediate addressing.

Indexed Addressing
Indexed addressing adalah suatu pengalamatan data, di mana data yang diinginkan ada di dalam alamat yang merupakan jumlah dari Base Address yang terdapat pada instruksi dengan isi dari Index Register yang merupakan index-nya. Contohnya LOAD 20,X ( X adalah Index Register; misal [X] = 5 ), akan menyebabkan CPU untuk menyalin ke akumulator data dari alamat 25, yang merupakan hasil dari penjumlahan 20 dengan isi dari Index Register. ( [A] = [20 + [X]] ). Pengalamatan jenis ini sangat berguna untuk menangani sekumpulan data / array.

Modul I - x86

16

Memori Program
LOAD 20,X

Index Register
3

Akumulator Memori Data


22 23 24 4 9 16

Gambar 4 Ilustrasi penggunaan indexed addressing.

Stack Operation

Stack operation adalah suatu penyalinan data antara stack dengan register. Contohnya perintah PUSH menyalin data dari register ke dalam stack. Stack adalah LIFO memori (Last In First Out). Pada stack, kita hanya dapat menambahkan data pada tumpukan yang paling atas dan mengambil data dari tumpukan yang teratas. Sehingga data yang terakhir dimasukkan akan dikeluarkan pertama kali 4. Instruksi Manipulasi Data Pada umumnya instruksi manipulasi data merubah isi dari status flag 5. Beberapa flag yang sering digunakan adalah carry, zero, parity, sign dan auxiliary carry. Carry flag berguna untuk menunjukkan apakah suatu operasi penjumlahan / pengurangan menghasilkan carry / borrow. Zero flag untuk menunjukkan apakah hasil dari suatu operasi nol atau bukan. Parity flag menunjukkan banyaknya bit 1 dari hasil operasi ganjil atau genap. Sign flag untuk menunjukkan apakah MSB dari hasil operasi bernilai 1 atau bukan. Auxiliary carry flag menunjukkan apakah ada carry out yang dihasilkan dari bit ke-3.

4 5

Lihat percobaan II Lihat percobaan II dan percobaan III

Modul I - x86

17

Instruksi Aritmatika Instruksi aritmatika berguna untuk memanipulasi data secara aritmatika. Instruksi yang termasuk dalam jenis ini adalah instruksi penjumlahan, pengurangan.
A=A+M

ADD
ADD dengan CARRY A = A + M + CARRY A=AM A=AM M=M+1 M=M1 A=AxM A=A/M

SUBTRACT
SUBTRACT dengan CARRY

INCREMENT
DECREMENT MULTIPLY DIVIDE

Tabel 3 Operasi Aritmatika

Instruksi Logika Instruksi yang termasuk dalam jenis ini antara lain adalah instruksi AND, OR, XRA dan complemen.
AND OR EXCLUSIVE OR COMPLEMENT Tabel 4 Operasi Logika A=A M A=A+M A= A M M=

Shift Operations Berguna untuk menggeser data yang ada (baik ke kiri maupun ke kanan) dan meng-clear-kan posisi yang kosong.
Carry
C b7 b0 b6 b0 b7 b0

Data
b7 b6 0 b7 b7 b6 b0 b6 b5 b7 b5 b0 b5 b7 b5 b4 b6 b4 b6 b4 b6 b4 b3 b5 b3 b5 b3 b5 b3 b2 b4 b2 b4 b2 b4 b2 b1 b3 b1 b3 b1 b3 b1 b0 b2 b0 b2 b0 b2 b0 0 b1 0 b1 b7 b1

Data asli Logical Shift Left Logical Shift Right Arithmetic Shift Left Arithmetic Shift Right Rotate Left Rotate Right

Gambar 5 Intruksi Shift Modul I - x86

18

Instruksi Perbandingan Instruksi perbandingan memungkinkan kita untuk membandingkan atau memeriksa suatu data tanpa mengubah isi data itu. Instruksi ini hanya mengubah status flag dari data tersebut.
COMPARE BIT TEST TEST SCAN Operasi A M Operasi A M Operasi M 0 Melihat sebuah pola di dalam string

Tabel 5 Operasi Pembanding

Instruksi Spesial
Ada instruksi instruksi spesial yang ada di bahasa pemrograman tingkat rendah seperti decimal aritmatic dan keyboard scans untuk aplikasi kalkulator, floating point conversion untuk aplikasi matematika ataupun parity generation dan checker untuk aplikasi data processing. Komputer yang tidak mempunyai instruksi special membutuhkan suatu set kumpulan kumpulan instruksi untuk melaksanakan tugas yang sama seperti yang dilakukan oleh instruksi special tersebut.

Instruksi Manipulasi Program Instruksi ini berguna untuk memindahkan program control dari suatu memori ke tempat yang lain. Instruksi ini mengubah isi program counter sehingga instruksi yang dilaksanakan keluar dari urutan instruksi normal yang ada. Program Counter adalah suatu register yang menunjukkan alamat dari lokasi memori yang berisi instruksi berikutnya. Instruksi Jump Instruksi JUMP ada dua jenis yaitu instruksi unconditional jump dan conditional jump. Unconditional Jump Pada instruksi ini program langsung mengeksekusi perintah yang ada tanpa memeriksa terlebih dahulu kondisi dari status flag yang ada. Contoh : perintah JUMP 100 akan menempatkan 100 di program counter dan CPU akan mengeksekusi perintah selanjutnya dari alamat tersebut. Conditional Jump Sebelum melaksanakan perintah yang ada, program akan memeriksa terlebih dahulu kondisi dari status flag yang ada , bila kondisi status flag yang ada sesuai dengan perintah, maka perintah akan dilaksanakan. Bila tidak CPU akan melanjutkan urutan instruksi normal yang ada. Instruksi Subrutin Instruksi terdiri dari instruksi CALL dan instruksi RET. Bila instruksi CALL dilaksanakan maka CPU akan meletakkan isi program counter ke dalam stack dan akan melompat ke alamat pada perintah CALL tersebut atau disebut juga

Modul I - x86

19

menjalankan subrutin. Instruksi CALL sama seperti instruksi JUMP ada yang kondisional ada yang tidak (lihat lampiran A). Untuk keluar dari subrutin dan kembali ke program yang memanggil subrutin tersebut, terdapat instruksi RET. Instruksi ini akan mengambil kembali isi program counter yang diletakkan di stack, sehingga program kembali ke posisi sebelum menjalankan subrutin. Instruksi RST adalah instruksi CALL 1-word yang menyebabkan CPU untuk melaksanakan rutin interupt atau trap 6. Instruksi Halt dan No Operations Instruksi Halt akan menyebabkan CPU tidak melakukan operasi apapun, dan hanya dapat di hilangkan oleh sinyal interupt ataupun sinyal reset. Instruksi No Operations akan menyebabkan CPU menambahkan isi dari program counter tanpa melaksanakan operasi apa-apa lagi.

Tugas 1. Amati dan pahami format penulisan setiap instruksi dan kegunaan dari setiap instruksi yang digunakan. 2. Buka PROG2A.ASM, pelajari program tersebut. 3. Buka Command Prompt dengan mengetik CMD pada menu Run di start menu. Pindah ke direktori tempat file percobaan berada. Ketik tasm PROG2A.ASM. Ubah file object menjadi .exe dangan perintah tlink PROG2A.OBJ. Debug program yang sudah jadi untuk melihat cara kerjanya. Jalankan program langkah demi langkah, perhatikan perubahan isi register dan flag yang bersangkutan. 4. Kerjakan borang yang telah disediakan.

Lihat percobaan III

Modul I - x86

20

Percobaan III
Tujuan Percobaan
1. Mengenal Interupsi dan DOS Function Call yang sering digunakan. 2. Mengenal Interupsi dan BIOS Function Call yang sering digunakan.

DOS Function DOS Function dipanggil ketika perintah INT 21 di eksekusi. Perintah ini digunakan untuk melakukan beberapa hal yang berkaitan dengan input output dari keyboard, monitor, file dan lain sebagainya. Berikut adalah cara penggunaannya:

Set register AH sesuai dengan nomor fungsi yang diinginkan. Set juga register lain yang bersangkutan. Panggil perintah INT 21

Berikut adalah daftar fungsi yang sering digunakan: AH = 01h -membaca satu karakter dari input ketika kembali: AL berisikan karakter yang dibaca AH = 02h -menulis karakter ke output karakter yang akan dituliskan adalah ascii yang terdapat dalam dl ketika kembali: AL berisi karakter yang terakhir ditampilkan AH = 09h - menampilkan string ke output Entry: string di tempatkan dalam DS:DX ( '$'-mengakhiri string) ketika kembali: AL = 24h AH = 0Ah - membaca input secara ter-buffer (tertahan) input yang dibaca akan dimasukkan ke DS:DX Contoh pemakaian: [...] MOV AH,01h INT 21h

Modul I - x86

21

[...] BIOS Function Cara penggunaannya mirip dengan DOS Function call. Berikut adalah fungsi-fungsi yang sering digunakan: INT 10h / AH = 0 - set mode video. input: AL = mode video yg diinginkan. 00h - text mode. 40x25. 16 colors. 8 pages. 03h - text mode. 80x25. 16 colors. 8 pages. 13h - graphical mode. 40x25. 256 colors. 320x200 pixels. 1 page. INT 10h / AH = 2 - set posisi kursor. input: DH = baris. DL = kolom. BH = nomor halaman (0..7). INT 10h / AH = 09h - menulis karakter dan atribut di posisi kursor. input: AL = karakter yang akan ditampilkan. BH = nomor halaman. BL = atribut. CX = jumlah berapa kali karakter ditulis. INT 10h / AH = 13h - tulis string. input: AL = mode tulis: bit 0: update kursor setelah menulis; bit 1: string mengandung atribut.

Modul I - x86

22

BH = nomor halaman. BL = atribut jika string hanya terdiri dari karakter (bit 1 di AL nol). CX = jumlah karakter di string (atribut tidak dihitung). DL,DH = kolom, baris di mana akan mulai ditulis. ES:BP alamat string yang akan ditampilkan. Tugas 1. Amati dan pahami format penulisan setiap instruksi dan kegunaan dari setiap instruksi yang digunakan. 2. Buka PROG3.ASM, pelajari program tersebut. 3. Buka Command Prompt dengan mengetik CMD pada menu Run di start menu. Pindah ke direktori tempat file percobaan berada. Ketik tasm PROG3.ASM. Ubah file object menjadi .exe dangan perintah tlink PROG3.OBJ. Debug program yang sudah jadi untuk melihat cara kerjanya. Jalankan program langkah demi langkah, perhatikan perubahan isi register dan flag yang bersangkutan. 4. Kerjakan borang yang telah disediakan.

Modul I - x86

23

Percobaan IV
Tujuan Percobaan
1. Mengenal Periferal Programable Interface i8255. 2. Menggunakan PPI 8255 dalam mode 0 untuk operasi I/O sederhana.

Modul ini kososng dengan sengaja. Materi akan ditambahakan sebelum praktikum modul 3.

Modul I - x86

24

Anda mungkin juga menyukai