TUTORIAL PROGRAM RONTOK PADA ASSEMBLE
1.BUKALAH PROGRAM ASSSEMBLE ANDA,BISA MENGGUNAKAN
CMD,TASM,MAUPUN DOSBOX
DALAM KESEMPATAN KALI INI SAYA MENGGUNAKAN DOSBOX
2.SETELAH ITU MASUKLAH KE DALAM MENU EDIT,KETIKKAN PERINTAH
EDIT LALU TEKAN ENTER,MAKA TAMPILAN DOSBOX AKAN BERUBAH SEPERTI GAMBAR DIBAWAH
INI
3.KETIKKAN LAH PERINTAH DIBAWAH INI
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],' '
ADD DX,160
Delay
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
POP CX
LOOP UlangY
EXIT:
INT 20h
END TData
4.SETELAH ITU SIMPAN LAH PROGRAM YANG TELAH DIBUAT TSB
5.SETELAH ITU JALANKAN PERINTAH TASM DAN TLINK UNTUK
MENJALANKAN PROGRAM
5.SETELAH PROGRAM DIJALANKAN MAKA
SATU PERSATU KALIMAT DALAM DOSBOX AKAN RONTOK SAMPAI HABIS.
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
SMALL
.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 padalayar.
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.
NOTE:
1.APABILA ANDA INGN MERONTOKKAN KALIMAT KEATAS MAKA GANTILAH MOV
BYTE PTR ES:[BX+160],AL DENGAN MOV BYTE PTR ES:[BX-160],AL
2.APABILA
ANDA INGIN MERONTOKKAN KALIMAT KESAMPING KANAN MAKA GANTILAH MOV BYTE PTR
ES:[BX+160],AL MENJADI MOV BYTE
PTR ES:[BX+20],AL
3.
APABILA ANDA INGIN MERONTOKKAN KALIMAT KESAMPING KIRI MAKA GANTILAH MOV BYTE
PTR ES:[BX+160],AL MENJADI MOV
BYTE PTR ES:[BX-20],AL
Tidak ada komentar:
Posting Komentar