// Robby Fajri Maulana
// On-8 Des 2014
Kali ini saya akan memberikan tutorial cara membuat program sorot pada assembly, dalam program sorot ini, kita akan memasukan fungsi-fungsi yg telah diajari sebelumnya seperti ABC berwarna, tidak berwarna dan rontok
1. Pertama,buka program DOSBOX dengan cara buka klik menu Windows > DOSBox 0.74 maka hasil yang akan muncul dilayar anda seperti pada Gambar dibawah ini ;
2. Kemudian anda ketik mount e c:\tasm lalu ketik E: dan yang terakhir ketik edit rontok.asm lalu tekan Enter,maka hasilnya akan menjadi seperti pada Gambar dibawah ini ;
ketikkan 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],' '
DELAY
ADD BX,160
LOOP LOOP2
POP CX
POP BX
POP AX
ENDM
Cls MACRO ; Macro untuk menghapus layar
MOV AX,0600h
XOR CX,CX
MOV DX,184Fh
MOV BH,10 ; Atribut Hijau diatas hitam
INT 10h
ENDM
GotoXY MACRO X,Y ; Macro untuk memindahkan kursor
MOV AH,02
XOR BX,BX
MOV DH,Y
MOV DL,X
INT 10h
ENDM
SimpanL MACRO ; Macro untuk menyimpan seluruh
LOCAL Ulang ; isi layar monitor
MOV AX,0B800h
MOV ES,AX
MOV CX,4000
XOR BX,BX
Ulang:
MOV AL,ES:[BX]
MOV Layar[BX],AL
INC BX
LOOP Ulang
ENDM
BalikL MACRO ; Macro untuk mengembalikan semua
LOCAL Ulang ; isi layar yang telah disimpan
MOV CX,4000
XOR BX,BX
Ulang:
MOV AL,Layar[BX]
MOV ES:[BX],AL
INC BX
LOOP Ulang
ENDM
Sorot MACRO X,Y ; Macro untuk membuat sorotan
LOCAL Ulang ; pada menu
MOV BL,Y
MOV AL,160
MUL BL
MOV BX,AX
MOV AL,X
MOV AH,2
MUL AH
ADD BX,AX
INC BX ; Alamat warna pada posisi X,Y
MOV CX,15 ; Panjangnya sorotan
Ulang:
MOV BYTE PTR ES:[BX],4Fh ; Atribut sorotan
; putih diatas merah
ADD BX,2
LOOP Ulang
ENDM
Readkey MACRO ; Macro untuk membaca masukan dari
MOV AH,00 ; keyboard.
INT 16h ; hasilnya AH=Extended, AL=ASCII
ENDM
MenuL MACRO String ; Macro untuk mencetak menu
MOV AH,09
LEA DX,String
INT 21h
ENDM
.MODEL SMALL
.CODE
ORG 100h
TData: JMP Proses
Layar DB 4000 DUP (?)
Menu DB 9,9,'+=============================+',13,10
DB 9,9,'| >>> MENU SOROT <<< |',13,10
DB 9,9,'+=============================+',13,10
DB 9,9,'| |',13,10
DB 9,9,'| 1. Huruf Warna |',13,10
DB 9,9,'| 2. Huruf tidak berwarna |',13,10
DB 9,9,'| 3. Rontok |',13,10
DB 9,9,'| 4. Keluar |',13,10
DB 9,9,'| |',13,10
DB 9,9,'+=============================+$'
PosX DB 22 ; Posisi kolom mula-mula
PosY DB 12 ; Posisi baris mula-mula
Panah_Atas EQU 72 ; Kode tombol panah atas
Panah_Bawah EQU 80 ; Kode tombolpanah bawah
TEnter EQU 0Dh ; Kode tombol Enter
Proses :
Cls ; Hapus layar
GotoXY 0 8 ; kursor = 0,8
MenuL Menu ; Gambar menu
SimpanL ; Simpan isi layar
Ulang :
BalikL ; Tampilkan isi layar yang
; disimpan
Sorot PosX,PosY ; Sorot posisi X,Y
Masukan:
Readkey ; Baca masukan dari keyboard
CMP AH,Panah_Bawah ; Panah bawah yang ditekan ?
JE Bawah ; Ya! lompat bawah
CMP AH,Panah_Atas ; Panah atas yang ditekan ?
JE CekY ; Ya, lompat CekY
CMP AL,TEnter ; Tombol enter yang ditekan ?
je pilihan
JNE Masukan ; Bukan, lompat ke ulangi
CekY :
CMP PosY,12 ; Apakah sorotan paling atas ?
JE MaxY ; Ya! lompat ke MaxY
DEC PosY ; Sorotkan ke atas
JMP Ulang ; Lompat ke ulang
MaxY :
MOV PosY,15 ; PosY=Sorotan paling bawah
JMP Ulang ; lompat ke ulang
Bawah :
CMP PosY,15 ; apakah sorotan paling bawah ?
JE NolY ; Ya! lompat ke NolY
INC PosY ; Sorotkan ke bawah
JMP Ulang ; Lompat ke ulang
NolY :
MOV PosY,12 ; Sorotan paling atas
JMP Ulang ; Lompat ke ulang
pilihan:cmp posy,12
je warna
cmp posy,13
je huruf
cmp posy,14
je rontok1
cmp posy,15
je selesai1
huruf:
cls
gotoXY 25 10
mov ah,02h
mov dl,'A'
mov cx,26
huruf2:
int 21h
loop huruf2
jmp Masukan
selesai1: cls
jmp selesai
rontok1:
jmp rontok
Warna:
cls
gotoXY 25 10
mov ah,09h
mov bh,00h
mov bl,1
mov cx,26
repwarna:
int 10h
add bl,1
loop repwarna
mov ah,02h
mov dl,'A'
mov cx,26
repwarna2:
int 21h
loop repwarna2
jmp Masukan
rontok: JMP Prontok
Prontok:
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
jmp Selesai
Selesai:
INT 20h
END TData
Setelah anda selesai melakukan langkah-langkah diatas,hal yang harus anda lakukan selanjutnya adalah ikuti langkah-langkah berikut ini ;
ketik tlink rontok (nama file yang telah disimpan) lalu tekan Enter
ketik tlink/t rontok(nama file yang telah disimpan) lalu tekan Enter
ketik rontok (nama file yang telah disimpan) lalu tekan Enter
Maka hasil yang akan ditampilkan menjadi seperti pada gambar dibawah ini ;
good job gan
BalasHapusisolasi tahan panas