Sabtu, 29 September 2012

Pembahasan Pemrograman Bahasa Rakitan #7 Sequel


Disini dirikoe mau mereview materi pemrograman yang telah disampaikan oleh Bpk.Nahar Mardzyanto, M.Kom, sebagai salah satu syarat karena dirikoe izin untuk menunaikan tugas sekolah membuat kisi - kisi TIK. masih membahas tentang pemrograman bahasa rakitan #7 ( Sequel ) atau cetak kata per karakter. Pada saat tugas minggu yang lalu pak dosen menyuruh dirikoe untuk mengcoding tetapi hasilnya sangat mengherankan karena laptop koe malah ngeblank.....jian...ternyata benar adanya, pak dosen....membuat jebakan Betmen....kaya gini katanya....ada sesuatu (syahrini banget..:-)) deh....hemm....makin pusing saja dirikoe dibuatnya sebelum ada postingan yang baru dari bapak dosen.Sekedar meriview hasil codingan kemarin kita lihat saja yuk...gambar di bawah ini .... :

 
 Sempet kesel sebenernya kalau lihat hasil coding diatas karena laptop koe sempet ngeblenk dibuatnya....! Untuk melihat pembahasan yang sesungguhnya, mari kita intip bareng yuk  postingan yang di sampaikan oleh Bapak dosen kita. sebelum ke pembahasan kita rumusnya yuk supaya kita bisa belajar bareng alurnya :


 Nah ini sebuah coding yang sempet membuat kening terkenyit...karena laptop sempet ngeblank dibuatnya, kita lihat bareng - bareng pembahasanya yuk... : 

Code pertama : 
Code diatas kalau kita running memang hasilnya tidak jelas alias acak - acakan ( bahasa keren mode on ). kalau diperhatikan dengan teliti, sebetulnya hasil yang keluar benar diawal awal. namun setelah itu akan banyak karakter-karakter aneh yang itu adalah representasi dari kode-kode ASCII.
Pertanyaannya…kenapa seeeeeh bisa muncul kode-kode aneh kay gitu itu? padahal khan kita tidak memberikan kode aneh itu di data kita. coba kita jawab dengan alur saja ya…
  1. Data yang tersimpan adalah = Who Are $You (kalau kita hitung akan ada 12 karakter termasuk spasi)
  2. Register DL akan diisi dengan VKal[BX] dimana BX awal bernilai 0 (nol). sehingga saat awal DL akan terisi dengan karakter pertama dari VKal yaitu W.
  3. Perintah INT21H akan melakukan pencetakan terhadap isi dari register DL yang pada saat saat ini telah terisi W.
  4. INC BX akan mengakibatkan nilai BX akan bertambah 1. sehingga pada saat mengulang keatas lagi isi BX sudah berubah lebih besar. sehingga akibatnya pada saat pengisian DL MOV DL,VKal[BX] akan terus bergeser ke kanan yang posisinya sesuai dengan nilai BX.
  5. Nah…proses itu akan terus menerus berulang karena BX di increment. sampai kapan diulangnya? entahlah…:-) koq entahlah? ya mau gimana lagi coba..lha khan tidak ada batasnya atau perintah untuk menghentikan, padahal karakter datanya cuma ada 12 karakter. sehaingga saat nilai BX melebihi 12 ya karakter yang tercetak senemunya processor makanya jadi tidak karuan.
Kalau alurnya seperti diatas, lalu gimana caranya agar hasilnya bisa sesuai dan tidak acak - acakan ?? modifikasilah dengan menambahkan CMP, JE. dimana kita gunakan 1 karakter yang tidak kita gunakan sebagai karakter yang akan tercetak sebagai tanda berakhirnya data. misal saja kita mau mencetak WHO ARE YOU, maka di datanya kita isi dengan WHO ARE YOU$. nah..tanda $ itu akan kita gunakan sebagai pembanding di CMP. ketika isi DL  adalah $ maka lompat keluar dan selesai INT20H.

Posting By : YULIANTO WAHYUDIN / SIA201141

Tidak ada komentar: