Showing posts with label Bahasa Assembly. Show all posts
Showing posts with label Bahasa Assembly. Show all posts

Aritmatika Debug on Asssmbly

 3.4.1.  Memulai debug
  • Ketikkan perintah “debug” ( tanpa petik )
  • Nilai register diatas setelah ditekan huruf r :
  • AX = 0000 , BX = 0000 , CX = 0000 , DX = 0000
  • Alamat             = 13A7:0100
  • Perintah           = 0000
  • Assembly         = ADD [BX+SI],AL
          3.4.2.  Uji coba perintah add ( penjumlahan )
         Listing Program

  • Program tidak menampilkan apapun pada layar, karena program yang dibuat merupakan operasi aritmatika penjumlahan ( add ) yaitu 2 + 5 = 7 yang tidak bisa langsung di tampilkan ke monitor, angka 7 di sini merupakan hasil penjumlahan bukan merupakan kode ascii yang di tampilkan ke monitor ( ascii 7 adalah 37h ).
  • Ketikkan perintah “debug tambah.com” untuk menjalankan program

  • Nilai register diatas setelah menekan huruf r :
  • AX = 0000 , BX = 0000 , CX = 0008 , DX = 0000
  • Nilai AH = 00 , AL = 00 ( AX = xxyy  “AH = xx, AL = yy ” )

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0200 , BX = 0000 , CX = 0008 , DX = 0000
  • Nilai AH = 02 , AL = 00


  •  Nilai register diatas setelah menekan huruf t :
  • AX = 0205 , BX = 0000 , CX = 0008 , DX = 0000
  • Nilai AH = 02 , AL = 05



  • Nilai register diatas setelah menekan huruf t :
  • AX = 0705 , BX = 0000 , CX = 0008 , DX = 0000
  • Nilai AH = 07 , AL = 05
  • Register Nilai AH = 07 adalah hasil penjumlahan AH + AL
  • Dalam listing program registrasi AH di isi dengan nilai 2 dan registrasi AL di isi dengan nilai 5, pada saat di jalankan proses debug kemudian di trace ( t ) sebanyak 3 kali hasilnya nilai masing-masing registrasi di jumlahkan dan diletakkan pada registrasi AH.
  • Program telah berjalan dengan baik


3.4.3.  Perintah sub ( pengurangan )
Listing Program


  •  Compile program

  • Sama seperti sebelumnya program tidak menampilkan apapun pada layar, karena program yang dibuat merupakan operasi aritmatika pengurangan ( sub ) yaitu 7 - 3 = 4 yang tidak bisa langsung di tampilkan ke monitor, angka 4 di sini merupakan hasil pengurangan bukan merupakan kode ascii yang di tampilkan ke monitor ( ascii 4 adalah 34h ).
  •  Ketikkan perintah “debug sub.com” untuk menjalankan program
  • Nilai register diatas setelah menekan huruf t :
  • AX = 0700 , BX = 0000 , CX = 0008 , DX = 0000
  • Nilai AH = 07 , AL = 00

  •  Nilai register diatas setelah menekan huruf t :
  • AX = 0703 , BX = 0000 , CX = 0008 , DX = 0000
  • Nilai AH = 07 , AL = 03

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0403 , BX = 0000 , CX = 0008 , DX = 0000
  • Nilai AH = 04 , AL = 03
  • Program telah berjalan dengan baik menampilakan Register Nilai AH = 04 hasil dari pengurangan AH – AL

3.4.1.   Perintah mul (perkalian)

Listing Program


  •  Compile program

  • Sama seperti sebelumnya program tidak menampilkan apapun pada layar, karena program yang dibuat merupakan operasi aritmatika perkalian ( mul ) yaitu 2 x 3 = 6 yang tidak bisa langsung di tampilkan ke monitor, angka 6 di sini merupakan hasil perkalian bukan merupakan kode ascii yang di tampilkan ke monitor ( ascii 6 adalah 36h ). 


  • Nilai register diatas setelah menekan huruf t :
  • AX = 0000 , BX = 0200 , CX = 0008 , DX = 0000
  • Nilai BH = 02 , AL = 00

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0003 , BX = 0200 , CX = 0008 , DX = 0000
  • Nilai BH = 02 , AL = 03

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0006 , BX = 0200 , CX = 0008 , DX = 0000
  • Nilai BH = 02 , AL = 06
  • Nilai AX = 0006 ( 16 bit )  adalah hasil perkalian BH – AL
  • Variabel yang berubah adalah BH, jadi hasil perkalian antara variabel AL ( 1 byte ) dan variabel BH ( 1 byte ) tidak diletakkan pada variabel BH tetapi terletak pada variabel AX ( 2 byte  ).


            3.4.4.  Perintah div (pembagian)
Listing Program


  • Compile program

  • Sama seperti sebelumnya program tidak menampilkan apapun pada layar, karena program yang dibuat merupakan operasi aritmatika pembagian ( div ) yaitu 8 : 4 = 2 yang tidak bisa langsung di tampilkan ke monitor, angka 2 di sini merupakan hasil pembagian bukan merupakan kode ascii yang di tampilkan ke monitor ( ascii 2 adalah 32h ).


  • Nilai register diatas setelah menekan huruf t :
  • AX = 0008 , BX = 0000 , CX = 0009 , DX = 0000
  • Nilai AX = 0008 , BH = 04

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0008 , BX = 0400 , CX = 0009 , DX = 0000
  • Nilai AX = 0008 , BH = 04

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0002 , BX = 0400 , CX = 0009 , DX = 0000
  • Nilai AX = 0002 , BH = 04
  • Nilai AX = 0002 ( 16 bit )  adalah hasil pembagian AX – BH
  • Variabel yang berubah adalah BH, jadi hasil pembagian antara variabel AX ( 2 byte ) dan variabel BH ( 1 byte ) tidak diletakkan pada variabel BH tetapi terletak pada variabel AL untuk hasil dan AH untuk sisa pembagian.


3.4.5.  Tugas
A)       
                        Listing Program


  • Compile program



  • Menjalankan perintah “debug tugas1.com

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0000 , BX = 0000 , CX = 0008 , DX = 0800

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0000 ,  BX = 0000 , CX = 0008 , DX = 0804

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0000 ,  BX = 0000 , CX = 0008 , DX = 080C
  • Program diatas menggunkan operasi aritmatika penjumlahan ( add ) dengan  operasi 8 bit atau 1 byte, registrasi yang di gunakan adalah DH dan DL kemudian hasilnya diletakkan di registrasi DL.
B)       
                         Listing program


  • Compile program



  • Menjalankan perintah “debug tugas2.com

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0000 ,  BX = FA00 , CX = 0008 , DX = 0000

  • Nilai register diatas setelah menekan huruf t :
  • AX = 00FA ,  BX = FA00 , CX = 0008 , DX = 0000

  • Nilai register diatas setelah menekan huruf t :
  • AX = F424 ,  BX = FA00 , CX = 0008 , DX = 0000
  • Program menggunakan operasi aritmatika perkalian ( mul ) dengan operasi 8 bit atau 1 byte, registrasi yang digunakan sesuai dengan prosedur yaitu BH ( 1 byte ) dan AL ( 1 byte ) kemudian hasil dari perkalian kedua regitrasi itu diletakkan pada registrasi AX ( 2 byte/16 bit ).

3.4.6.  Latihan soal
Soal !
1)   Apakah yang dimaksud dengan perintah :
a)      Mul bh
b)      Mul bx
c)      Div bh
d)      Div bx
2)   Apakah yang dimaksud operasi 8 bit dan 16 bit ?
3)   Kapankah kita menggunakan operasi 8 bit, dan kapan pula 16 bit ?
4)   Buatlah program untuk mengalikan 65.000 x 65.000. Tunjukan hasilnya dalam aplikasi debug !

Jawab :
1)     
     a) Mul bh adalah operasi aritmatika perkalian menggunakan operasi 8 bit atau 1 byte 
   b) Mul bx adalah operasi aritmatika perkalian menggunakan operasi 16 bit atau 2 byte
   c)Div bh adalah operasi aritmatika pembagian menggunkan operasi 8 bit atau 1 byte
   d)Div bx adalah operasi aritmatika pembagian menggunakan operasi 16 bit atau 2 byte

2)    Operasi 8 bit adalah proses perhitungan dengan menggunakan nilai yang kecil atau tidak melebihi 2 karakter pada hexa, sedangkan operasi 16 bit adalah proses perhitungan dengan menggunakan nilai yang besar atau melebihi 2 karakter pada hexa.
3)  Menggunakan operasi 8 bit jika nilai pada registrasi atau suatu variabel tidak melebihi 2 karakter dalam konversi bilangan hexa, contoh 8d = 38h, 200d = C8. Sebaliknya menggunakan operasi 16 bit jika nilai pada suatu registrasi melebihi 2 karakter dalam konversi bilangan hexa, contoh 65000d = FDE8h , 999d = 03E7h.  
4)         
Listing Program


  • Compile program



  • Menjalankan perintah “debug latihan1.com

  • Nilai register diatas setelah menekan huruf t :
  • AX = 0000 ,  BX = FDE8 , CX = 000A , DX = 0000

  • Nilai register diatas setelah menekan huruf t :
  • AX = FDE8 ,  BX = FDE8 , CX = 000A , DX = 0000

  • Nilai register diatas setelah menekan huruf t :
  • AX = 6240 ,  BX = FDE8 , CX = 000A , DX = FBD4
  • Program menggunakan operasi aritmatika perkalian ( mul ) dengan operasi 16 bit atau 2 byte, registrasi yang digunakan sesuai dengan prosedur yaitu BX ( 2 byte ) dan AX ( 2 byte ) kemudian hasil dari perkalian kedua regitrasi itu diletakkan pada registrasi DX dan AX.
  • DX sebagai MSB ( Most Significant Bit ) dan AX sebagai LSB ( Least Significant Bit )
3.4.7.  Kesimpulan
1.    Dalam pengoperasian aritmatika pada bahasa assembly file yang telah di compile dan di jalankan tidak bisa langsung di tampilkan ke monitor, maka dari itu digunakanlah perintah “debug” untuk melihat hasil proses aritmatika yang berjalan pada program.
2. Operasi aritmatika dalam bahasa assembly menggunakan perintah add untuk penjumlahan, sub untuk pengurangan, mul untuk perkalian dan div untuk pembagian. Terkhusus untuk mul dan div cara penggunaan program harus mengikuti prosedur dalam pengoperasiannya.
3.  Operasi 8 bit dapat digunakan jika nilai pada suatu registrasi kecil atau tidak melebihi 2 karakter dalam konversi bilangan hexa, sedangkan 16 bit dapat digunakan jika nilai pada suatu registrasi besar atau melebihi 2 karakter pada konversi bilangan hexa.