Gambar 28
1.Tujuan[kembali]
- Memahami penggunaan EMU 8086
- Memahami program MUL pada bahasa assembly
2.Alat dan bahan[kembali]
EMU 8086
Untuk membantu dalam memahami atau penyesuaikan alur kerja program yang diinginkan maka dapat dilakukan dengan bantuan emulator emu86. Pada emulator ini ada menu emulate untuk 16 menjalankan program dengan dua pilihan yaitu single step untuk eksekusi per baris instruksi atau Run untuk eksekusi keseluruhan instruksi sampai akhir program.
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).
3.Dasar teori[kembali]
Operasi MUL
pada assembly digunakan untuk mengalikan dua bilangan. Instruksi MUL
biasanya digunakan untuk melakukan perkalian unsigned (tanpa tanda) pada arsitektur x86. Berikut adalah beberapa poin penting mengenai instruksi MUL
:
Operand:
- Instruksi
MUL
dapat digunakan dengan operand yang berbeda-beda, tergantung pada ukuran data yang akan dikalikan (8-bit, 16-bit, 32-bit, atau 64-bit). - Operand bisa berupa register atau memori.
- Instruksi
Sintaks:
- Untuk 8-bit:
MUL reg/mem8
- Untuk 16-bit:
MUL reg/mem16
- Untuk 32-bit:
MUL reg/mem32
- Untuk 64-bit:
MUL reg/mem64
- Untuk 8-bit:
Cara Kerja:
- 8-bit: Mengalikan nilai pada operand dengan nilai di register
AL
. Hasilnya disimpan di registerAX
. - 16-bit: Mengalikan nilai pada operand dengan nilai di register
AX
. Hasilnya disimpan di registerDX:AX
(registerDX
menyimpan high word, registerAX
menyimpan low word). - 32-bit: Mengalikan nilai pada operand dengan nilai di register
EAX
. Hasilnya disimpan di registerEDX:EAX
(registerEDX
menyimpan high dword, registerEAX
menyimpan low dword). - 64-bit: Mengalikan nilai pada operand dengan nilai di register
RAX
. Hasilnya disimpan di registerRDX:RAX
(registerRDX
menyimpan high qword, registerRAX
menyimpan low qword).
- 8-bit: Mengalikan nilai pada operand dengan nilai di register
Untuk menjalankan Klik “compile” kemudian pilih lokasi di mana file executable akan disimpan, lalu “single step”, sehingga hasilnya akan terlihat seperti dibawah ini :
Tabel ASCII4.Percobaan[kembali]
Listing Program :
;Program perkalian dua bilangan
mov cx, 4H ; Mengisi register CX dengan nilai 4 (dalam heksadesimal)
mov bh, 1H ; Mengisi register BH dengan nilai 1 (dalam heksadesimal)
ulangi: ; Label untuk memulai loop
MOV AH, 02H ; Mengatur nilai AH menjadi 2 untuk menggunakan fungsi BIOS interrupt 21H untuk menampilkan karakter di layar
mov dl, 0d ; Mengisi register DL dengan nilai 0D (carriage return) untuk memindahkan kursor ke awal baris
int 21H ; menampilkan karakter di layar
mov dl, 0AH ; Mengisi register DL dengan nilai 0A (line feed) untuk memindahkan kursor ke baris berikutnya.
int 21H ; menampilkan karakter di layar
mov dl, bh ; Memindahkan nilai dari BH ke DL
ADD dl, 30H ; Menambahkan 30H ke nilai DL untuk mengubah nilai angka menjadi kode ASCII yang sesuai.
mov ah, 02H ; Mengatur nilai AH menjadi 2 untuk menggunakan fungsi BIOS interrupt 21H untuk menampilkan karakter di layar
int 21H ; menampilkan karakter di layar
mov dl, 2ah ; Mengisi register DL dengan nilai 2A (karakter '*')
int 21H ; menampilkan karakter di layar
mov dl, 32H ; Mengisi register DL dengan nilai 32H (karakter '2')
int 21H ; menampilkan karakter di layar
mov dl, 3dH ; Mengisi register DL dengan nilai 3D (karakter '=')
int 21H ; menampilkan karakter di layar
mov al, 02H ; Mengisi register AL dengan nilai 2 sebagai faktor pengali kedua
mul bh ; Mengalikan nilai AL dengan BH, hasilnya disimpan di AX
mov dl, al ; Memindahkan hasil perkalian (nilai AL) ke DL
add dl, 30H ; Menambahkan 30H ke nilai DL untuk mengubah nilai angka menjadi kode ASCII yang sesuai.
mov ah, 02H ; Mengatur nilai AH menjadi 2 untuk menggunakan fungsi BIOS interrupt 21H untuk menampilkan karakter di layar
int 21H ; menampilkan karakter di layar
mov dl, 0dH ; Mengisi register DL dengan nilai 0D (carriage return) untuk memindahkan kursor ke awal baris
int 21H ; menampilkan karakter di layar
mov dl, 0ah ; Mengisi register DL dengan nilai 0A (line feed) untuk memindahkan kursor ke baris berikutnya
int 21H ; menampilkan karakter di layar
Inc bh ; Menambah nilai BH sebesar 1 untuk perulangan berikutnya
Loop Ulangi ; Mengurangi nilai CX sebesar 1 dan jika CX belum mencapai 0, program akan melompat kembali ke label ulangi dan mengulang proses.
MOV AH, 4CH ; Mengatur nilai AH menjadi 4C untuk menggunakan fungsi BIOS interrupt 21H untuk keluar dari program
int 21H ; Memanggil interrupt 21H untuk keluar dari program
Gambar Percobaan
c. Jalankan Program sehingga tampil pada layar
5.Video[kembali]
6.Download[kembali]
simulasi klik disini
video klik disini
html klik disini
Komentar
Posting Komentar