Bahasa Rakitan # 7 (sequel) / Cetak Kata Per Karakter

Postingan ini menindak lanjuti tulisan sebelumnya yang disitu ada kalimat “penjelasan dan pencerahannya di postingan  berikutnya ya..termasuk kalau ada “jebakan betmen” di code ini” mungkin dengan kalimat itu anda sudah mengira dan diakui atau tidak sempat terbersit ada sesuatu (syahrini banget..:-)) di code tersebut.

Kalau anda sudah mencoba pasti tahu seperti apa hasilnya..dan kalau anda lanjutkan dengan mencermati code serta hasil percobaan pertama dengan percobaan kedua, seharusnya anda sudah ada jawaban sementara.

Code pertama : 

Code diatas kalau kita running memang hasilnya tidak jelas alias amburadul (bahasa gaul 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 koq bisa muncul kode-kode aneh 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 amburadul?? 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.

Seperti itulah pencerahannya…semoga kita selalu semangat bereksperimen.😉

One Response to “Bahasa Rakitan # 7 (sequel) / Cetak Kata Per Karakter”

  1. Untuk pertemuan Sabtu, materi ini yang dibahas ya pak…? Matrunuwun,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: