Kamis, 09 Oktober 2014

Mencetak Karakter Ganjil Saja pada Alfabet

Sebenarnya, postingan kali ini mirip dengan postingan saya yang lain yaitu Mencetak Karakter Bag.4 

Hasilnya akan seperti gambar di samping.

Bagaimana cara mencetak karakter (dalam bahasa assembly) alfabet a-c-e-g-i-k-m-o... dan seterusnya  dengan menghilangkan urutan genap pada alfabet?


1.     Buka dosbox  tasm yang sudah di instal. Ketik edit lalu tekan enter, maka akan muncul layar biru. Pada layar biru yang kosong ketiklah
.MODEL SMALL    ------------------------------------------- baris ke 1
. CODE                    ------------------------------------------- baris ke 2
ORG 100h                ------------------------------------------- baris ke 3
PROSES:                 ------------------------------------------- baris ke 4
        MOV AH,9h     ------------------------------------------ baris ke 5
        MOV BL,16h    ------------------------------------------ baris ke 6
        MOV CX,13     ------------------------------------------ baris ke 7
ULANG:                   ------------------------------------------ baris ke 8
        INT 10h            ------------------------------------------ baris ke 9
        INC BL             ------------------------------------------ baris ke 10
        LOOP ULANG ------------------------------------------ baris ke 11
        ---------------------------------------------------------- baris ke 12
       MOV AH,2h      ------------------------------------------ baris ke 13
       MOV DL,’A’     ------------------------------------------ baris ke 14
       MOV CX,13      ------------------------------------------ baris ke 15
LAGI:                       ------------------------------------------ baris ke 16
       INT 21H            ------------------------------------------ baris ke 17
       ADD DL,2         ------------------------------------------ baris ke 18
       LOOP LAGI      ------------------------------------------ baris ke 19
      ----------------------------------------------------------- baris ke 20
        INT 20H           ------------------------------------------ baris ke 21
END PROSES          ------------------------------------------ baris ke 22

Baris Ke 1 : Bentuk memori yang digunakan kurang dari 1 segmen atau 64KB
Baris Ke 2 : Menyimpan program yang akan dijalankan
Baris Ke 3 : Kode 100h berarti kita menyediakan 100byte kosong saat menjalankan program untuk mengontrol jalannya program
Baris Ke 4 : Label Untuk Memulai
Baris Ke 5 : MOV AH, Nilai service, untuk mencetak dengan atribut warna adalah 9h
Baris Ke 6: MOV BL, Warna atau atribut dari karakter, kode 16 bisa diganti-ganti
Baris Ke 7: Banyaknya pengulangan karakter yang akan muncul
Baris Ke 8 : ULANG
Baris Ke 9 : INT 10h, cetak atribut warna
Baris Ke 10 : INC BL, tambahkan BL dengan 1
Baris Ke 11 : lompat ke ULANG
Baris Ke 12 : enter(boleh di abaikan, saya membuatnya hanya untuk membatasi kode saja)
Baris Ke 13 : MOV AH, Nilai service, untuk mencetak karakter kodenya 21h
Baris Ke 14: MOV DL,’A’ perintah untuk mencetak karakter A
Baris Ke 15 : Banyaknya pengulangan karakter yang akan muncul
Baris Ke 16 :LAGI
Baris Ke 17 :INT 21h, cetak karakter
Baris Ke 18 :ADD DL, tambahkan DL dengan 2
Baris Ke 19 :lompat ke LAGI
Baris Ke 20 :enter(boleh di abaikan)
Baris Ke 21 :kembali ke DOS

Baris Ke 22: Mengakhiri proses
(saya hanya menscreenshoot tampilan kodenya dalam bentuk notepad++ saja)

 2. Kalo sudah, simpan filenya dengan klik File> Save
Pada contoh diatas saya menyimpannya dengan nama TRY.ASM

3. Jika sudah di simpan, maka klik File>exit, maka akan tampil layar dosbox hitam, ketiklah

C:\TASM>tasm try                     (enter)
C:\TASM>tlink/t try                    (enter)
C:\TASM>try                             (enter)

Nah, bagaimana jika ingin mencetak terbalik? misalnya  Z-X-V-T...
Untuk aynag itu kita tinggal ubah kode ADD DL,2 menjadi SUB DL,2
dan hasilnya akan seperti dibawah


Sekian. Semoga bermanfaat. Oh ya, karena saya masih amatir, saya sangat membutuhkan perbaikan dan saran dari semuanya. 


0 komentar:

Posting Komentar