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…
- Data yang tersimpan adalah = Who Are $You (kalau kita hitung akan ada 12 karakter termasuk spasi)
- 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.
- Perintah INT21H akan melakukan pencetakan terhadap isi dari register DL yang pada saat saat ini telah terisi W.
- 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.
- 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.
Tidak ada komentar:
Posting Komentar