1. Menampilkan angka pada display 7-segment
2. 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 :
- mov
si, offset segment_data:
- SI
diatur untuk menyimpan alamat dasar dari array segment_data. Instruksi mov
si, offset segment_data digunakan untuk memuat alamat dasar array ke
register SI. Ini penting untuk mengakses data dari memori.
- mov
bx, cx dan shl bx, 1:
- Register
CX berfungsi sebagai indeks untuk angka yang ingin ditampilkan. Namun,
karena instruksi mov al, [si + bx] memerlukan register pengindeks, kita
memindahkan nilai CX ke register BX.
- Dalam
kasus ini, saya menambahkan instruksi shl bx, 1 untuk mempertegas kalau
kita bekerja dengan data 8-bit. Ini sebenarnya opsional, karena setiap
byte data di array hanya berukuran 8-bit (jadi menggeser tidak mengubah
hasil).
- mov
al, [si + bx]:
- Instruksi
ini mengambil data dari array segment_data di alamat yang dihitung dari SI
+ BX. Dengan kata lain, ini memungkinkan pengambilan elemen tertentu dari
array berdasarkan nilai indeks.
- Port
A dan B:
- Port
A (port_a) mengirimkan data untuk segmen yang akan ditampilkan, sementara
Port B (port_b) mengontrol transistor yang memilih 7-segment display mana
yang aktif pada waktu tertentu.
Penjelasan Prinsip Kerja Program:
- Program
ini menampilkan angka 0 hingga 9 pada dua digit 7-segment display.
Pengambilan data angka dilakukan dari array segment_data, yang berisi pola
bit untuk menampilkan setiap angka.
- Multiplexing digunakan untuk menampilkan angka pada dua 7-segment display secara bergantian.
- Delay digunakan untuk memberikan waktu agar angka bisa terlihat sebelum peralihan ke angka berikutnya terjadi.
Tidak ada komentar:
Posting Komentar