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 dicetakSetelah program anda ketik compile-lah dengan menggunakan TASM.EXE dengan perintah :
INT 21h ; Cetak karakter!! INT 20h ; Selesai ! kembali ke DOSEND Proses
C:\>tasm a0Turbo Assembler Version 2.0 Copyright (c) 1988, 1990 Borland International Assembling file : a0.ASMSampai disini sudah dihasilkan suatu file object dari KAL.ASM yang siap dijadikan file COM (karena kita membuat file dengan format program COM).
Error messages : None
Warning messages : None Passes: 1Remaining memory : 306k C:\>dir a0.*Volume in drive C is S’to Directory of C:\A0 ASM 506 08-14-94 3:56pA0 OBJ 179 08-14-94 11:24p2 file(s) 685 bytes
1,267,200 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 diatas. 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 :
INPUTSetelah semua register dimasukkan nilainya maka lakukanlah interupsi 10h. Perlu anda perhatikan bahwa interupsi ini mencetak karakter tanpa menggerakkan kursor.
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
PROGRAM : A1.ASMFUNGSI : MENCETAK KARATER 'A' BESERTA ATRIBUTNYA DENGAN INT 10h============S’to=; .MODEL SMALL .CODE ORG 100hProses : 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 DOSEND ProsesBila 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,00Ulang: LOOP Ulang4. 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 100hProses MOV AH,02h ; Nilai servis MOV DL,'A' ; DL=karakter 'A' atau DL=41h MOV CX,10h ; Banyaknya pengulangan yang akanulang INT 21h ; Cetak karakter !! INC DL ; Tambah DL dengan 1 LOOP Ulang ; Lompat ke Ulang INT 20hEND Proses ABCDEFGHIJKLMNOPPerintah 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.
Tag:
cara mencetak huruf dengan bahasa assembly
comment 0 komentar
more_vert