Selasa, 02 Desember 2014

TUTORIAL PROGRAM RONTOK PADA ASSEMBLE



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