Wednesday, December 3, 2014

Membuat Menu Sorot

kali ini saya akan menjelaskan cara membuat menu sorot, maksud saya disini kita membuat menu dan didalam menu itu ada prongram yang pernah saya pelajari seperti membuat A-Z tidak bewarna, A-Z bewarna dan program rontok. kali ini saya memakai dosdox untuk membuat program 
pertama-tama kita mesti memiliki dosbox nya terlebih dahulu klik disini 
jika telah memiliki buka bosbox mu
setelah itu ketikan penrintah berikut:
  • mount e c:\tasm (enter)
  • e: (enter)
  • edit (enter)

setelah ketikan terakhir edit (enter) maka akan muncul tampilan seperti berikut
setalah tampil tampilan seperti di atas barulah kita mulai membuat program
ini lah script yang akan kita buat:

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,06       ; 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. Cetak huruf warna-warni                                 |',13,10
                DB      9,9,'|    2. Cetak huruf satu warna                                    |',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      huruf
    cmp    posy,13
        je      warna
    cmp    posy,14
        je      rontok
        cmp     posy,15
        jmp     SELESAI

huruf:  cls
        gotoxy 25 10
        mov ah,02h
        mov dl,'A'
        mov cx,26
huruf2:
        int 21h
        add dl,1
        loop huruf2

    jmp Masukan

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:cls
        gotoxy 15 10
    mov ah,02h
        mov dl,'A'
        mov cx,26
huruf3:
        int 21h
        add dl,1
        loop huruf3

    mov ah,09h
        mov bh,00h
    mov bl,1
        mov cx,26
repwarna1:
    int 10h
        add bl,1
        loop repwarna1

    mov ah,02h
        mov dl,'A'
        mov cx,26
repwarna3:
        int 21h
        loop repwarna3

        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
 
jika telah selesai membuat sricpt nya simpanlah program yang anda buat kalau saya menyimpannya dengan nama midal1.asm
jika telah ketikanlah perintah berikut
  • tasm midal1 (enter)
  • tlink/t midal1 (enter)
  • midal1 (enter)
setelah perintah terakhir di enter maka akan keluar sebuah menu seperti gambar di bawah ini :
jika anda enter menu nomor satu maka akan keluar program A-Z
jika anda enter menu nomor dua maka akan keluar program A-Z bewarna
jika anda enter menu nomor tiga maka akan ada program rontok

Keterangan :
  1. Cls MACRO                 ; Macro untuk menghapus layar
  2. MOV BH,10                  ; Atribut Hijau diatas hitam
  3. GotoXY MACRO X,Y  ; Macro untuk memindahkan kursor
  4. SimpanL MACRO         ; Macro untuk menyimpan seluruh
  5. LOCAL Ulang               ; isi layar monitor
  6. BalikL MACRO            ; Macro untuk mengembalikan semua
  7. LOCAL Ulang               ; isi layar yang telah disimpan
  8. Sorot MACRO X,Y      ; Macro untuk membuat sorotan
  9. LOCAL Ulang               ; pada menu
  10. INC BX                        ; Alamat warna pada posisi X,Y
  11. MOV CX,25                 ; Panjangnya sorotan
  12. MOV BYTE PTR ES:[BX],4Fh   ; Atribut sorotan putih diatas merah
  13. Readkey MACRO                       ; Macro untuk membaca masukan dari
  14. INT 16h                                       ; hasilnya AH=Extended, AL=ASCII
  15. MenuL MACRO String                ; Macro untuk mencetak menu
  16. MOV DH                                    ; Posisi Baris(00-24)
  17. MOV DL                                     ;  Posisi Kolom(00-79)
  18. MOV BH,0                                 ;  Halaman Layar(0=default)
selesai lah program yang kita buat saat ini jika anda ingin mendapatkan program silahkan klik link download di bawah ini



Share:

0 komentar:

Post a Comment