Gambar 28




 1.Tujuan[kembali]

  1. Memahami penggunaan EMU 8086
  2. 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:
  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).

 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:

  1. 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.
  2. 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
  3. Cara Kerja:

    • 8-bit: Mengalikan nilai pada operand dengan nilai di register AL. Hasilnya disimpan di register AX.
    • 16-bit: Mengalikan nilai pada operand dengan nilai di register AX. Hasilnya disimpan di register DX:AX (register DX menyimpan high word, register AX menyimpan low word).
    • 32-bit: Mengalikan nilai pada operand dengan nilai di register EAX. Hasilnya disimpan di register EDX:EAX (register EDX menyimpan high dword, register EAX menyimpan low dword).
    • 64-bit: Mengalikan nilai pada operand dengan nilai di register RAX. Hasilnya disimpan di register RDX:RAX (register RDX menyimpan high qword, register RAX menyimpan low qword).

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

 4.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

 5.Video[kembali]





 6.Download[kembali]

simulasi klik disini 

video klik disini 

html klik disini  

Komentar

Postingan populer dari blog ini

Tugas Besar

Praktikum uP & uC M1

TP M1 Praktikum uP & uC