MEMBUAT PROGRAM RONTOK
Pada bagian ini akan kita lihat, bagaimana
caranya menggeser tulisan dengan mengakses memory layar secara langsung dengan
program rontok.
Program rontok adalah program yang akan
membersihkan layar dengan cara menjatuhkan atau merontokkan huruf pada layar
satu persatu.
Adapun penjelasan programnya adalah:
Delay MACRO
PUSH CX
XOR CX,CX
Loop1:
LOOP Loop1
POP CX
ENDM
Macro ini digunakan untuk menunda program. Dengan menolkan CX,
maka looping yang akan didapatkan menjadi FFFFh kali, karena pengurangan 0
dengan 1 akan akan menghasilkan nilai -1 atau FFFFh.
Geser
MACRO PosY
PUSH AX
PUSH BX
PUSH CX
Pada macro inilah nantinya huruf-huruf pada
layar akan digeser. Untuk itu simpanlah semua register yang digunakan oleh
macro ini karena pada program utama, register-register juga digunakan.
XOR CX,CX
MOV AL,26
SUB
AL,PosY
MOV CL,AL
Ini adalah bagian dari macro geser yang akan
menghitung banyaknya pergeseran kebawah yang akan dilakukan, dengan melihat
posisi dari huruf yang digeser pada variabel "PosY".
Loop2:
MOV
AL,BYTE PTR ES:[BX]
MOV BYTE
PTR ES:[BX+160],AL
Hilang:
MOV BYTE
PTR ES:[BX],' '
Delay
ADD
BX,160
LOOP
Loop2
Bagian inilah yang akan menggeser tulisan pada
layar. Register BX ditambah dengan 160 untuk mengakses baris dibawahnya.
POP CX
POP BX
POP AX
ENDM
Pada akhir macro, kembalikanlah semua register
yang telah disimpan pada awal macro. Ingat urutannya harus terbalik. Pada
program utama:
.MODEL
.CODE
ORG 100h
TData : JMP Proses
PosY DB ?
Pertama-tama siapkanlah sebuah variabel untuk menampung
posisi dari baris yang sedang diakses.
Proses:
MOV AX,0B800h
MOV ES,AX
MOV BX,3998
MOV
CX,25
Register ES, kita gunakan sebagai penunjuk segment layar,
yaitu pada segment B800h. Register BX yang nantinya akan kita gunakan sebagai
penunjuk offset dari ES diberi nilai 3998. Dengan demikian pasangan ES:BP akan
menunjuk pada karakter dipojok kanan bawah atau posisi 79,24.
UlangY :
MOV PosY,CL
PUSH CX
MOV CX,80
UlangX :
CMP BYTE PTR
ES:[BX],33
JB Tdk
Geser PosY
Tdk
:
SUB BX,2
LOOP UlangX
POP CX
LOOP UlangY
EXIT:
INT 20h
END TData
Kemudian
lakukanlah proses dengan melihat apakah ada karakter atau tidak. Hal ini dapat
dilakukan dengan membandingkannya dengan kode ASCII 33, bila data pada buffer
layar dibawah ASCII 33 artinya tidak ada karakter pada layar.
Jika ada karakter pada layar maka proses geser
dilakukan, sebaliknya jika tidak ada karakter proses akan menuju pada posisi
selanjutnya dan melakukan hal yang sama.
RONTOK KEBAWAH
Untuk membuat program rontok tersebut berikut ini adalah langkah-langkahnya:
1.Buka TASM 1.4 , kemudian ketikan
cd\ (enter)
cd 1ca\asm (enter)
2.Tambahkan edit.
Edit (enter)
3.Muncul tampilan layar berwarna biru,
kemudian ketikanlah
Delay MACRO
PUSH CX
XOR CX,CX
Loop1:
LOOP Loop1
POP CX
ENDM
Geser MACRO PosY
PUSH AX
PUSH BX
PUSH CX
XOR CX,CX
MOV AL,26
SUB AL,PosY
MOV CL,AL
Loop2:
MOV AL,BYTE PTR ES:[BX]
MOV BYTE PTR
ES:[BX+160],AL
Hilang:
MOV BYTE PTR ES:[BX],' '
Delay
ADD BX,160
LOOP Loop2
POP CX
POP BX
POP AX
ENDM
.MODEL SMALL
.CODE
ORG 100h
TData : JMP Proses
PosY DB ?
Proses:
MOV AX,0B800h
MOV ES,AX
MOV BX,3998
MOV CX,25
UlangY :
MOV PosY,CL
PUSH CX
MOV CX,80
UlangX :
CMP BYTE PTR ES:[BX],33
JB Tdk
Geser PosY
Tdk :
SUB BX,2
LOOP UlangX
LOOP UlangX
POP CX
LOOP UlangY
EXIT:
INT 20h
END TData
5.Kemudian jalankan program tersebut dengan Tasm
pada layar berwarna hitam.
Tasm
rontok.asm(enter)
Tlink/t
rontok(enter)
Rontok(enter)
Bila program tersebut dijalankan, maka semua
huruf pada layar akan dirontokkan satu persatu sampai habis.
RONTOK KEATAS
6.Selanjutnya kita akan membuat program rontok ke atas.
Berikut contoh programnya,
Berikut contoh programnya,
Delay MACRO
PUSH CX
XOR CX,CX
Loop1:
LOOP Loop1
POP CX
ENDM
Geser MACRO PosY
PUSH AX
PUSH BX
PUSH CX
XOR CX,CX
MOV AL,100
SUB AL,PosY
MOV CL,AL
Loop2:
MOV AL,BYTE PTR ES:[BX]
MOV BYTE PTR
ES:[BX-160],AL
Hilang:
MOV BYTE PTR ES:[BX],' '
Delay
ADD BX,160
LOOP Loop2
POP CX
POP BX
POP AX
ENDM
.MODEL SMALL
.CODE
ORG 100h
TData : JMP Proses
PosY DB ?
Proses:
MOV AX,0B800h
MOV ES,AX
MOV BX,3998
MOV CX,25
UlangY :
MOV PosY,CL
PUSH CX
MOV CX,80
UlangX :
CMP BYTE PTR ES:[BX],33
JB Tdk
Geser PosY
Tdk :
SUB BX,2
LOOP UlangX
LOOP UlangX
POP CX
LOOP UlangY
EXIT:
INT 20h
RONTOK KEKANAN
contoh programnya sama saja seperti rontok ke atas yang diubah hanya lah diganti
BX+160 diganti dengan BX+20
ADD BX nya dibuang
9.Simpan ketikan dengan program .asm lalu jalankan program tersebut dengan tasm dan cetak dengan Tlink.
9.Setelah program dijalankan maka hasilnya akan rontok kekanan.
RONTOK KEKIRI
contoh program yang digunakan sama saja seperti membuat program rontok kekanan.
hanya saja yang diubah adalah BX+20 diganti dengan BX-20, dan tambahkan ADD BX,20.
11.Simpan ketikan tersebut dengan nama sesuai dengan keinginan kita dengan program .asm. Saya menyimpannya dengan nama kiri.asm.
12.kemudian jalankan program tersebut dengan Tasm dan cetak dengan Tlink.
setelah program dijalankan maka hasilnya akan seperti berikut.
Selesai.................. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tidak ada komentar:
Posting Komentar