Gambar 28. Program dengan MUL
1. Tujuan [kembali]
a.) Memahami penggunaan EMU 8086
b.) Mengetahui program perkalian dengan MUL
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]
1. Instruksi
MUL
adalah instruksi yang digunakan untuk melakukan
operasi perkalian tanpa tanda (unsigned multiplication) pada mikroprosesor
Intel. MUL bekerja dengan mengalikan nilai operand dengan isi register
akumulator (AX, EAX, atau RAX tergantung arsitektur dan operand yang digunakan)
dan menempatkan hasilnya pada register tertentu.
2. Jenis
Operand pada Instruksi MUL
Instruksi MUL dapat menerima operand 8-bit, 16-bit,
32-bit, atau 64-bit, tergantung pada arsitektur mikroprosesor yang digunakan
(8086 hingga keluarga x86 dan x64 modern):
8-bit Operand: Mengalikan isi register AL (Accumulator
Low) dengan operand 8-bit, dan hasil 16-bit ditempatkan di register AX.
16-bit Operand: Mengalikan isi register AX dengan
operand 16-bit, dan hasil 32-bit ditempatkan di register DX
(DX berisi upper word dan AX berisi lower word).
32-bit Operand: Mengalikan isi register EAX dengan
operand 32-bit, dan hasil 64-bit ditempatkan di register EDX
64-bit Operand: Mengalikan isi register RAX dengan
operand 64-bit, dan hasil 128-bit ditempatkan di register RDX
3. Pemahaman
Register yang Terlibat
Register Akumulator (AX, EAX, RAX): Register ini
digunakan sebagai akumulator utama dalam operasi perkalian.
Register Hasil (DX, EDX, RDX): Digunakan untuk
menyimpan bagian atas dari hasil perkalian, terutama jika hasilnya lebih besar
daripada ukuran operand asal.
4. Instruksi
dan Flag yang Terpengaruh
MUL tidak mengubah flag, kecuali overflow (OF) dan
carry (CF) yang akan di-set jika hasilnya lebih besar dari kapasitas register
tujuan.
MUL mengasumsikan operand sebagai unsigned integer,
sehingga hasilnya harus dianalisis dengan mempertimbangkan ukuran register.
4. Percobaan [kembali]
Program :
1. MOV CX, 4H
Menginisialisasi register CX dengan nilai 4. Ini berfungsi sebagai counter untuk loop yang akan berjalan sebanyak 4 kali.
2. MOV BH, 1H
Menginisialisasi register BH dengan nilai 1. BH digunakan sebagai multiplier dalam instruksi MUL.
3. ulangi:
Label untuk menandai awal dari loop program.
4. MOV AH, 02H
Mengatur fungsi INT 21H untuk menampilkan karakter pada layar.
5. MOV DL, 0DH
Memasukkan 0DH (carriage return) ke register DL. Ini digunakan untuk memindahkan kursor ke awal baris berikutnya saat output.
6. INT 21H
Memanggil interrupt DOS untuk menampilkan karakter dalam DL (carriage return).
7. MOV DL, 0AH
Memasukkan 0AH (line feed) ke register DL. Ini membuat kursor berpindah ke baris baru.
8. INT 21H
Memanggil interrupt DOS untuk menampilkan line feed.
9. MOV DL, BH
Memindahkan nilai dari BH ke DL untuk ditampilkan sebagai karakter ASCII.
10. ADD DL, 30H
Menambahkan 30H ke nilai DL untuk mengonversi angka menjadi karakter ASCII numerik (0-9).
11. INT 21H
Menampilkan karakter numerik dari register DL.
12. MOV AH, 02H
Mengatur fungsi INT 21H lagi untuk menampilkan karakter.
13. MOV DL, 2AH
Menampilkan simbol * sebagai penanda operasi perkalian.
14. INT 21H
Memanggil interrupt untuk menampilkan simbol *.
15. MOV DL, 32H
Memasukkan nilai 32H ke DL, yang berarti karakter ‘2’ dalam ASCII.
16. INT 21H
Menampilkan karakter ‘2’.
17. MOV DL, 3DH
Memasukkan 3DH (karakter =) ke register DL.
18. INT 21H
Menampilkan karakter =.
19. MOV AL, 02H
Memasukkan nilai 2 ke AL sebagai bilangan yang akan dikalikan dengan BH.
20. MUL BH
Mengalikan AL dengan BH. Hasilnya disimpan dalam AX.
21. MOV DL, AL
Memindahkan hasil perkalian dari AL ke DL untuk ditampilkan.
22. ADD DL, 30H
Mengonversi hasil numerik ke bentuk ASCII.
23. INT 21H
Menampilkan hasil perkalian sebagai karakter numerik.
24. MOV AH, 02H
Mengatur ulang fungsi untuk menampilkan karakter baru.
25. MOV DL, 0DH
Memasukkan carriage return lagi.
26. INT 21H
Menampilkan carriage return.
27. MOV DL, 0AH
Memasukkan line feed lagi.
28. INT 21H
Menampilkan line feed.
29. INC BH
Meningkatkan nilai BH sebesar 1 untuk loop berikutnya.
30. LOOP ulangi
Mengulangi program selama CX belum mencapai nilai 0, mengurangi CX setiap iterasi.
31. MOV AH, 4CH
Mengatur interrupt untuk mengakhiri program.
32. INT 21H
Mengakhiri program dan kembali ke DOS.
Output :
5. Video [kembali]
6. Link Download [kembali]
Tidak ada komentar:
Posting Komentar