Mencetak Huruf Pada Bahasa Rakitan ~ 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 KARAKTER ;
; 'A' DENGAN INT 21 ;
;==========================S’to=;
.MODEL SMALL
.CODE
ORG 100h
Proses :
MOV AH,02h ; Nilai servis untuk mencetak karakter
MOV DL,'A' ; DL = Karakter ASCII yang akan dicetak
INT 21h ; Cetak karakter !!
INT 20h ; Selesai ! kembali ke DOS
END Proses
Program 7.1. Mencetak sebuah karakter
Setelah program
7.1. 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 Bangvandawablog
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). Untuk itu lakukanlah
langkah kedua, dengan perintah :
C:\>tlink/t a0
Turbo Link Version 3.0 Copyright (c) 1987, 1990
Borland International
C:\>tlink/t a0
Turbo Link Version 3.0 Copyright (c) 1987, 1990
Borland International
C:\>dir a0.*
Volume in drive C is Bangvandawablog
Directory of C:\
A0 ASM 506 08-14-94 3:56p
A0 OBJ 179 08-14-94 11:26p
A0 MAP 229 08-14-94 11:26p
A0 COM 8 08-14-94 11:26p
4 file(s) 922 bytes
1,266,176 bytes free
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.
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
Program 7.2. Mencetak karakter beserta atributnya
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.
Pengulangan Dengan Loop
Perintah
LOOP digunakan untuk melakukan suatu proses yang berulangulang. 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
Mencetak Beberapa Karakter
Untuk mencetak
beberapa karakter, bisa anda gunakan proses looping. Sebagai contoh dari
penggunaan looping ini bisa dilihat pada program 7.3.
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; 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
Program 7.3. Pengulangan dengan perintah LOOP
Bila program 7.3.
dijalankan maka akan ditampilkan :
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.
Oke, sekian dulu posting kali ini mengenai Mencetak Huruf Pada Bahasa Rakitan. Semoga berguna........
» JANGAN LUPA LIKE N
Komentarnya Yeach...