// 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 ;



selamat! anda behasil membuat menu sorot!

file untuk dilihat bisa didownload disini

{ 1 komentar... read them below or add one }