Tugas 3
Mikroprosessor
Gambar 16 Rangkaian I-O dan decoder I-O
Software EMU 8086
4. Dasar Teori
[Kembali]
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.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,BXOpcode 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 :
Contoh operasi penambahan dan pengurangan bahasa assembler menggunakan "Emu8086"
Untuk menjalankan Klik “compile” kemudian pilih lokasi di mana file executable akan disimpan, lalu “single step”, atau bisa langsung "Run" sehingga hasilnya akan terlihat seperti dibawah ini :
MULAI: MOV AX,469 ;Perintah untuk memasukkan nilai 469 ke register AX
XOR CX,CX ; Perintah melakukan logika XOR register CX dengan register
CX agar nilai dalam register CX dapat direset, CX=0
ULANG1: MOV BH,10 ; Perintah untuk memasukkan nilai 10 ke register BH
DIV BH ; Perintah untuk membagi nilai pada register AX dengan nilai pada register BH
PUSH AX ; Perintah untuk memasukkan nilai register AX ke STACK
INC CX ; Perintah untuk melakukan increment pada register CX atau menambahkan satu kepada register CX
XOR AH,AH ; Perintah untuk melakukan logika XOR register AH dengan
register AH agar nilai dalam register AH dapat direset, AH=0
CMP AL,00 ; Perintah untuk compile nilai register AL, apakah AL=0 atau tidak.
JNE ULANG1 ; Perintah untuk lompat ke ULANG1 apabila nilai register
tidak sama, apabila sama maka program dilanjutkan ke Ulang2
Ulang2: pop dx ; Perintah untuk mengeluarkan isi register dari STACK
menjadi register dx
mov dl,dh ; Perintah untuk memindahkan nilai dh ke dl atau memindahkan
nilai sisa
add dl,30h ; Perintah untuk menambahkan 30hexa ke dalam register dl
mov ah,02 ; Perintah untuk memindahkan nilai 02 ke dalam register ah
int 21h ; Perintah untuk menampilkan isi register ke layar
Loop ulang2 ; Perintah untuk melakukan looping ke ulang2
MOV AH,4CH ; Perintah untuk memindahkan nilai 4Chexa ke register AH
int 21h ; Akhir program
4. Percobaan
[Kembali]
A. Prosedur
[Kembali]
- Buka aplikasi EMU 8086.
- Ketik Program pada software seperti gambar
- Jalankan Program sehingga tampil pada layar.
B. Software dan Program [Kembali]
Program
Listing Program ; Program pembagian satu pada gambar 30 dengan instruksi DIV org 100h mov cx, 9h ; Menginisialisasi counter untuk loop mov bh, 1h ; Menginisialisasi bh dengan 1 ulangi: ; Mencetak karakter newline mov ah, 02h ; Mengatur layanan sistem untuk mencetak karakter mov dl, 0d ; Mengatur register dl dengan karakter carriage return (CR) int 21h ; Memanggil layanan sistem untuk mencetak karakter CR mov dl, 0ah ; Mengatur register dl dengan karakter line feed (LF) int 21h ; Memanggil layanan sistem untuk mencetak karakter LF ; Mencetak nilai bh mov dl, bh add dl, '0' ; Konversi nilai ke karakter ASCII mov ah, 02h int 21h ; Mencetak karakter mov dl, ':' int 21h mov dl, '1' int 21h mov dl, ' ' int 21h mov dl, '=' int 21h mov dl, ' ' int 21h ; Melakukan pembagian bh dengan 2 mov al, bh ; Muat nilai bh ke al mov ah, 00h ; Kosongkan ah mov bl, 1 ; Pembagi div bl ; Pembagian add al, '0' ; Konversi hasil bagi ke karakter ASCII mov dl, al mov ah, 02h int 21h ; Mencetak newline mov dl, 0dh ; Carriage return int 21h mov dl, 0ah ; Line feed int 21h inc bh ; Menambah nilai bh loop ulangi ; Ulangi sampai cx mencapai 0 mov ah, 4ch ; Mengakhiri program int 21h |
E. Video Demo
[Kembali]
F. Download File
[Kembali]
Tidak ada komentar:
Posting Komentar