https://www.idblanter.com/search/label/Template
https://www.idblanter.com
BLANTERORBITv101

Pemrograman dengan Bahasa Assembly - Bagian 7 - MENCETAK HURUF

Kamis, 04 Agustus 2016

ari


1. MENCETAK HURUF
Bila dihasilkan interupsi 21h apa yang akan dikerjakan oleh komputer ?. Jawabnya, ada banyak sekali kemungkinan. Pada saat terjadi interupsi 21h maka pertama-tama yang dilakukan komputer adalah melihat isi atau nilai apa yang terdapat pada register AH. Misalkan bila nilai AH adalah 2 maka komputer akan mencetak sebuah karakter, berdasarkan kode ASCII yang terdapat pada register DL. Bila nilai pada register AH bukanlah 2, pada saat dilakukan interupsi 21h maka yang dikerjakaan oleh komputer akan lain lagi.
Dengan demikian kita bisa mencetak sebuah karakter yang diinginkan dengan meletakkan angka 2 pada register AH dan meletakkan kode ASCII dari karakter yang ingin dicetak pada register DL sebelum menghasilkan interupsi 21h.

PROGRAM : A0.ASM            ;
FUNGSI  : MENCETAK KARATER  ;
         'A' DENGAN INT 21 ;

Proses :
        .MODEL SMALL
        .CODE
        ORG 100h
        MOV  AH,02h   ; Nilai servis ntuk mencetak karakter
        MOV  DL,'A'   ; DL = Karakter ASCII yang akan dicetak 
        INT  21h      ; Cetak karakter!!
        INT  20h      ; Selesai ! kembali ke DOS
END     Proses

Setelah program anda ketik compile-lah dengan menggunakan TASM.EXE dengan perintah :

C:\>tasm a0
Turbo Assembler Version 2.0 Copyright (c) 1988, 1990 Borland International

Assembling file          : a0.ASM 
Error messages           : None 
Warning messages         : None Passes: 1
Remaining memory         : 306k

C:\>dir a0.*
Volume in drive C is S’to

Directory of C:\
A0 ASM                     506 08-14-94 3:56p
A0 OBJ                     179 08-14-94 11:24p
2 file(s)                  685 bytes 
                           1,267,200 bytes free

Sampai disini sudah dihasilkan suatu file object dari KAL.ASM yang siap dijadikan file COM (karena kita membuat file dengan format program COM).
Setelah kedua proses itu selesai maka dihasilkanlah suatu program COM yang sudah siap untuk dijalankan. File-file yang tidak digunakan bisa anda hapus. Bila program 7.1. dijalankan maka pada layar akan ditampilkan

C:\>A0
A

Kita lihat disini bahwa karakter yang tercetak adalah yang sesuai dengan kode ASCII yang ada pada register DL. Sebagai latihan cobalah anda ubah register DL dengan angka 65 yang merupakan kode ASCII karakter 'A'. Hasil yang didapatkan adalah sama.
Pelajarilah fungsi ini baik-baik, karena akan banyak kita gunakan pada bab-bab selanjutnya.

2. MENCETAK KARAKTER BESERTA ATRIBUT
Sebuah karakter disertai dengan warna tentunya akan lebih menarik. Untuk itu anda bisa menggunakan interupsi ke 10h dengan aturan pemakaiannya :

INPUT 
AH = 09h
AL = Kode ASCII dari karakter yang akan dicetak
BH = Nomor halaman(0 untuk halaman 1)
BL = Atribut atau warna dari karakter yang akan dicetak
CX = Banyaknya karakter tersebut akan dicetak
Setelah semua register dimasukkan nilainya maka lakukanlah interupsi 10h. Perlu anda perhatikan bahwa interupsi ini mencetak karakter tanpa menggerakkan kursor.

PROGRAM             : A1.ASM
FUNGSI              : MENCETAK KARATER 'A'
                      BESERTA ATRIBUTNYA
                      DENGAN INT 10h
======================================S’to=;
         .MODEL SMALL
         .CODE
         ORG 100h
Proses :
       MOV AH,09h   ; Nilai servis untuk mencetak karakter
       MOV AL,'A'   ; AL = Karakter yang akan dicetak
       MOV BH,00h   ; Nomor Halaman layar
       MOV BL,93h   ; Warna atau atribut dari karakter
       MOV CX,03h   ; Banyaknya karakter yang ingin dicetak
       INT 10h      ; Laksanakan !!!
       INT 20h      ; Selesai ! kembali ke DOS
END    Proses

Bila program 7.2. dieksekusi maka akan ditampilkan huruf 'A' sebanyak 3 kali dengan warna dasar biru kedip dan warna tulisan Cyan(sesuai dengan nilai register BL). Mengenai halaman layar dan atribut(warna) akan kita bahas lebih lanjut pada bagian yang lain.

B:\>A1
AAA

Anda bisa merubah-rubah register AL dan BL untuk merubah karakter dan warna yang ingin dicetak.

3. PENGULANGAN DENGAN LOOP
Perintah LOOP digunakan untuk melakukan suatu proses yang berulang- ulang. Adapun syntax dari perintah ini adalah :
LOOP Tujuan
Tujuan dapat berupa suatu label yang telah didefinisikan, contoh:

        MOV CX,3       ; Banyaknya pengulangan yang dilakukan
Ulang : INT 10h        ; Tempat terjadinya pengulangan
        LOOP Ulang     ; Lompat ke label 'Ulang'

Pada proses pengulangan dengan perintah LOOP, register CX memegang suatu peranan yang khusus dimana register ini dijadikan sebagai counter/penghitung terhadap banyaknya looping yang boleh terjadi. Setiap ditemui perintah LOOP, maka register CX akan dikurangi dengan 1 terlebih dahulu, kemudian akan dilihat apakah CX sudah mencapai 0. Proses looping akan selesai bila nilai pada register CX mencapai nol. Seperti pada contoh diatas, maka interupsi 10h akan dihasilkan sebanyak 3 kali(sesuai dengan nilai CX). Perlu diperhatikan bahwa jangan sampai anda menaruh CX kedalam proses LOOP karena hal ini akan menyebabkan nilai CX diSET terus sehingga proses looping tidak bisa berhenti.

TRICK:
Bila anda menetapkan nilai CX menjadi nol pada saat pertama kali sebelum dilakukan loop, maka anda akan mendapatkan proses looping yang terbanyak. Hal ini dikarenakan proses pengurangan 0 dengan 1 akan menghasilkan nilai FFFFh(-1), Contoh :

            MOV CX,00
Ulang: LOOP Ulang

4. MENCETAK BEBERAPA KARAKTER
Untuk mencetak beberapa karakter, bisa anda gunakan proses looping. Sebagai contoh dari penggunaan looping ini bisa dilihat dibawah ini:

PROGRAM             : ABC0.ASM ;
FUNGSI              : MENCETAK 16 BUAH ;
KARAKTER DENGAN     : INT 21h SERVIS 02 ;
======================================S’to=;
            
         .MODEL SMALL
         .CODE
         ORG 100h
Proses
         MOV  AH,02h   ; Nilai servis
         MOV  DL,'A'   ; DL=karakter 'A' atau DL=41h
         MOV  CX,10h   ; Banyaknya pengulangan yang akan
ulang
         INT  21h      ; Cetak karakter !!
         INC  DL       ; Tambah DL dengan 1
         LOOP Ulang    ; Lompat ke Ulang
         INT  20h
END      Proses

ABCDEFGHIJKLMNOP

Perintah INC DL akan menambah register DL dengan 1, seperti intruksi , DL:=DL+1 dalam Pascal. Lebih jauh mengenai operasi aritmatika(INC) ini akan dibahas pada bab selanjutnya.

Author

Hestech Indonesia

Innovasi di bidang Teknologi, Listrik, Teknik Komputer dan gaya Hidup. Info lainnya tentang praktik konservasi berbasis Sains, inovasi, dan kearifan lokal