TUGAS 1 Gambar 40. Program Int 21h Service 0Ah



 

1. Tujuan[Kembali]

1.     Memahami Teknik interface menggunakan Bahasa assembler

2.     Mensimulasikan input lebih dari 1 karakter dengan membuat program menulis dan membaca ke memori

3.     Menyelesaikan tugas  Dr Darwison, ST, MT


2. Alat dan Bahan[Kembali]

                1.     Aplikasi Compiler emulator8086



Emu8086 merupakan aplikasi emulator bagi pemrograman bahasa assembler atau mikrokontroler. Dengan menggunakan aplikasi emulator, kita dapat mensimulasikan apakah program kontrol hardware yang kita buat sudah benar atau masih salah.

 

EMU8086 merupakan emulator untuk prosesor 8086 yang sudah dilengkapi dengan editor dan assembler yang bersifat GUI (graphical user interface). Dengan EMU8086 internal register dapat diamati dari waktu ke waktu akibat dari eksekusi suatu instruksi assembly.

 

Dalam “emu8086” terdapat beberapa menu, antara lain:

1.     Emulate : untuk menjalankan emulator kode program yang kita buat

2.     Compile : untuk membuat (compile) “binary executable file” atau ekstensi “.com” atau “.exe” dari kode program.

3.     Run : menjalankan aplikasi dari emulator yang dihasilkan (execute).

4.     Single Step : Menjalankan aplikasi dengan cara tracing (diproses perbaris kode program).

Memulai pemrograman bahasa Assembler terdiri dari beberapa kode operasi code (op code) dan pseudo ops. Bentuk instruksinya adalah op code diikuti operand. Opcode adalah perintah yang akan dilaksanakan, sedangkan operand dpaat terdiri dari sumber (source) dan tujuan (destination).

Misal : MOV AX,BX

Opcode dari contoh di atas adalah MOV, sedangkan operandnya adalah AX, BX. Maksud kode di atas adalah perintah untuk menyalin data yang ada di register BX (source operand) ke register AX (destination operand).

Pseucode operation (pseudo ops) adalah perintah kepada assembler untuk memberitahukan apa yang harus dilakukan terhadap data, percabangan bersyarat, perintah macro dan listing.

 

3. Dasar toeri[Kembali]

1.     Perintah dasar assembler

 

Perintah-perintah yang akan dibahas memang tidak semuanya termasuk

dalam perintah dasar. Tetapi karena pemahaman yang mudah, Anda dapat mengelompokkannya dalam perintah dasar untuk meletakkan pengertian tentang

perintah bahasa Assambler.

1.     MOV

Perintah MOV adalah perintah untuk mengisi, memindahkan,

memperbaharui isi suatu register, variabel ataupun suatu lokasi memory. Adapun

tata penulisan perintah MOV adalah :

MOV [operand A],[operand B]

dengan ketentuan operand A berupa : register, variabel, lokasi memory dan ketentuan isi operand B berupa : register, variabel, lokasi memory ataupun bilangan. Operand B merupakan bilangan asal yang akan diisikan ke operand A ataupun dengan kata lain, Operand A merupakan tujuan pengisian atau penduplikatan dari Operand B.

Contoh :

MOV AH,AL

Operand A dari perintah di atas adalah register AH.

Operand B dari perintah diatas adalah register AL.

Hal yang dilakukan oleh komputer untuk perintah di atas adalah menduplikatkan isi register AL ke register AH.

 

MOV AH, 02

Operand A dari perintah di atas adalah register AH.

Operand B dari perintah di atas adalah bilangan 02.

Hal yang dilakukan oleh komputer untuk perintah di atas adalah memasukkan 02 ke register AH.

 

2.     Int(interrupt)

 

Bila Anda pernah belajar BASIC, maka pasti Anda tidak asing lagi dengan perintah GOSUB. Perintah Int (Interrupt) juga mempunyai cara kerja yang sama, hanya dalam Int ini, Subrotine yang akan dipanggil sudah tersedia pada memory komputer.

 

Subrotine yang dapat dipanggil menggunakan perintah Int (Interrupt) terdiri dari dua jenis yaitu :

a.      Bios Interrupt yaitu Int yang disediakan oleh BIOS (Basic Input Output

System). Interrupt yang termasuk dalam Interrupt BIOS adalah Int 0 hingga Int

IF hexa.

b.      DOS Interrupt yaitu Int yang disediakan oleh DOS (Disk Operating System).

Interrupt yang termasuk dalam interrupt DOS adalah interrupt diatas IF hexa.

Misalnya : Interrupt 20 hexa dan Interrupt 21 hexa.

3. Int 20h dan Int 21h service 02h Int

 

a.      20h

Seperti yang telah diuraikan di atas, Int 20h merupakan salah satu dari

DOS Interrupt. Adapun tugas Int 20h adalah memberhentikan proses komputer

terhadap suatu program COM. Bila pada setiap program COM yang Anda buat

tidak terdapat Int 20h, maka sudah bisa dipastikan bahwa bila program tersebut

diproses, akan terjadi hanging pada komputer. Hal ini terjadi karena komputer

tidak menemukan perintah pemberhentian proses.

b.     Int 21h Service 02

Seperti Int 20h, Int 21h adalah salah satu Int yang termasuk DOS Interrupt,

karena Int 21h mempunyai banyak sekali tugas, maka tugasnya dibagi-bagi menjadi beberapa bagian. Untuk memanggil bagian-bagian itu, Anda perlu menyertakan nomor bagiannya yang disebut juga dengan service number. Pada kesempatan ini akan dibahas salah satu bagian dari Int 21h yang bertugas mencetak sebuah huruf ke layar yaitu fungsi kedua dari Int 21h.

 

Untuk menjalankan fungsi Int 21h service 02 harus dipenuhi beberapa syarat yaitu:

Register AH, harus berisi service number dari Int 21h yang akan dijalankan (02h).

Register DL, harus berisi bilangan hexa dari karakter ASCII(American Standard Code for Information Interchange) yang akan dicetak.

2.     Operasi aritmatik dalam assembler

1.      Operasi Pertambahan

Ada dua macam perintah pertambahan, yaitu :

a.      Pertambahan dengan 1

    Dengan perintah seperti: A = A+ 1, yang bermaksud pertambahan dengan 1, contoh dalam program ditunjukkan pada gambar 25. Tata penulisan: INC [Register/Variabel]

b.     Pertambahan selain Satu Dengan

    'ADD' dapat menambahkan berapa saja pada suatu register ataupun suatu variabel.

Tata penulisan: ADD [operand1],[operand2] dimana isi operand1 adalah register atau variabel dan operand2 berupa register, variabel atau bilangan. Hasil pertambahan disimpan di operand1 , seperti contoh berikut ini.

    Contoh:    

    ADD AH,AL dengan isi AH adalah 12 dan AL adalah 3, maka komputer melaksanakan perintah tersebut sebagai berikut :

AH………………………………….

10

AL………………………………….

5  +

AH………………………………….

15

 

Untuk perintah ADD kedua operand harus mempunyai besar kemampuan yang sama seperti AH dan AL yang sama-sama 8 bit.

Emu8086 merupakan aplikasi emulator bagi pemrograman bahasa assembler atau mikrokontroler. Dengan menggunakan aplikasi emulator, kita dapat mensimulasikan apakah program kontrol hardware yang kita buat sudah benar atau masih salah.

 

Pada bahasa pemograman asembler terdapat beberapa perintah untuk aritmatik. Perintah aritmatik yang dapat digunakan untuk pembagian adalah DIV(divide).

 

 

Dalam “emu8086” terdapat beberapa menu, antara lain:

-        Emulate : untuk menjalankan emulator kode program yang kita buat

-        Compile : untuk membuat (compile) “binary executable file” atau ekstensi “.com” atau “.exe” dari kode program.

-        Run : menjalankan aplikasi dari emulator yang dihasilkan (execute).

-        Single Step : Menjalankan aplikasi dengan cara tracing (diproses perbaris kode program).

Memulai pemrograman bahasa Assembler terdiri dari beberapa kode operasi code (op code) dan pseudo ops. Bentuk instruksinya adalah op code diikuti operand. Opcode adalah perintah yang akan dilaksanakan, sedangkan operand dpaat terdiri dari sumber (source) dan tujuan (destination).

Misal : MOV AX,BX

Opcode dari contoh di atas adalah MOV, sedangkan operandnya adalah AX, BX. Maksud kode di atas adalah perintah untuk menyalin data yang ada di register BX (source operand) ke register AX (destination operand).

Pseucode operation (pseudo ops) adalah perintah kepada assembler untuk memberitahukan apa yang harus dilakukan terhadap data, percabangan bersyarat, perintah macro dan listing. Beberapa pseudo ops yang sering dijumpai adalah sebagai berikut :



Untuk menjalankan Klik  “compile” kemudian pilih lokasi di mana file executable akan disimpan, lalu “single step”, sehingga hasilnya akan terlihat seperti dibawah ini :



 

TABEL ASCII



3. Input lebih dari satu karakter

Gunakan Int 21 hexa service number (0A) hexa dengan ketentuan:

a.      Harus mendefinisikan sebuah variabel tempat menampung masukan dengan tata penulisan: [label] db nn,mm,nn dup (?), dimana:

a)     nn adalah jumlah terbanyak karakter yang dapat dimasukkan + 1, guna + 1 adalah untuk tempat OD hexa (CR).

b)     mm adalah indikator dari berapa banyak karakter yang dimasukkan (tidak dengan OD hexa) . mm diisi secara otomatis oleh komputer setiap kali melakukan input, sehingga pada saat mendefinisikan variabel tempat menampung mm ini dapat dikosongkan dengan menggunakan tanda tanya (?) yang artinya satu byte memory yang tidak diisi. Jumlah maksimum mm adalah nn - 1.

c)     nn dup (?) berguna untuk menyatakan berapa tempat yang harus disediakan yaitu nn * 1 tempat kosong, yang dapat diwakili dengan tanda tanya (?).

b.     DS:DX harus berisi segment dan offset awal variabel di atas.


4. Percobaan[Kembali]

1.     Listing Program :

 

2.     Penjelasan :

1.     JMP pada baris 1 merupakan perintah lompatan tak bersyarat

2.     DB (Define Byte) pada baris 2 mendefinisikan variabel per byte. Variabel ini adalah variabel yang memakan tempat pada memory, besar memory yang dipakai variabel ini ditentukan oleh besarnya variabel tersebut. Variabel ini dapat didefinisikan dengan menggunakan Compiler.

3.     Baris 7 merupakan perintah mencetak tanya

4.     Baris 10 menyimpan DX ke stack

5.     Baris 11 adalah input dari keyboard

6.     Baris 13 merujuk kepada indicator (mm) berapa huruf yang telah dimasukkan

7.     Baris 14 masukkan [BX] ke DX

8.     Baris 16 menunjuk kepada awal kata yang dimasukkan

9.     Baris 17 supaya menunjuk kepada huruf terakhir yang dimasukkan

10.  Baris 18 mengganti 0Dh dengan’$’ agar bisa dicetak

11.  Baris 19 masukkan DL ke [BX]

12.  Baris 22 cetak jawab

13.  Baris 23 ambil DX dari stack

14.  Baris 25 menambahkan dengan 2 agar menunjuk kepada awal masukan

15.  Baris 27 merupakan cetak tamping

 

3.     Simulasi

1.     Buka aplikasi emu8086

2.     Ketikkan program pada aplikasi sesuai dengan listing program



3.     Jalankan program



4.     Masukkan Input, tekan enter, maka hasil sekaligus akan keluar



 5. Video [Kembali]

 6. Download [Kembali]

- Download codingan


Tidak ada komentar:

Posting Komentar