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
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.
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.
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
- Download codingan
Tidak ada komentar:
Posting Komentar